Adding previous bot

This commit is contained in:
2025-11-15 21:22:01 +01:00
parent 09b6cfce40
commit 04c86ad98a
+133
View File
@@ -0,0 +1,133 @@
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes
import json
import os
# Konfiguration
ADMINS = [ID1, ID2, ID3] # Telegram-IDs der Admins
LIST_FILE = "event_list.json"
# Lade die Liste, falls vorhanden
if os.path.exists(LIST_FILE):
with open(LIST_FILE, "r") as f:
event_list = json.load(f)
else:
event_list = []
# Hilfsfunktion zum Speichern
def save_list():
with open(LIST_FILE, "w") as f:
json.dump(event_list, f)
# /anmeldung Handler
async def anmeldung(update: Update, context: ContextTypes.DEFAULT_TYPE):
if not context.args:
await update.message.reply_text("Bitte Namen angeben: /anmeldung Name")
return
name = " ".join(context.args)
if name in event_list:
await update.message.reply_text(f"{name}, du bist doch schon angemeldet.")
else:
event_list.append(name)
save_list()
await update.message.reply_text(f"{name} will unbedingt auch dabei sein!")
# /abmeldung Handler
async def abmeldung(update: Update, context: ContextTypes.DEFAULT_TYPE):
if not context.args:
await update.message.reply_text("Bitte Namen angeben: /abmeldung Name")
return
name = " ".join(context.args)
if name in event_list:
event_list.remove(name)
save_list()
await update.message.reply_text(f"{name} kann nich mehr oder hat kein Bock auf uns.")
else:
await update.message.reply_text(f"{name}, du warst eh nich auf der Liste.")
# /liste Handler (nur privat für Admins)
async def liste(update: Update, context: ContextTypes.DEFAULT_TYPE):
if update.effective_user.id not in ADMINS:
await update.message.reply_text("Epic fail, kein Zugriff für dich")
return
if event_list:
antwort = "*Aktuelle Anmeldungen:*\n\n"
for i, name in enumerate(event_list, start=1):
antwort += f"{i}. {name}\n"
antwort += f"\n Insgesamt angemeldet: *{len(event_list)}*"
await update.message.reply_text(
antwort, parse_mode="Markdown"
)
else:
await update.message.reply_text("Chill, es is noch gar keiner angemeldet.")
# /reset Handler (nur privat für Admins, mit Archivierung)
import datetime
import shutil
async def reset(update: Update, context: ContextTypes.DEFAULT_TYPE):
if update.effective_user.id not in ADMINS:
await update.message.reply_text("Epic fail, Zugriff verweigert")
return
# Nur archivieren, wenn es überhaupt etwas gibt
if event_list:
timestamp = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
backup_file = f"event_list_{timestamp}.json"
try:
shutil.copy(LIST_FILE, backup_file)
await update.message.reply_text(
f"Ich hab die Liste mal gespeichert, falls du sie aus Versehen resettet hast, liegt jetz unter:\n`{backup_file}`",
parse_mode="Markdown"
)
except Exception as e:
await update.message.reply_text(f"Fehler beim Sichern: {e}")
else:
await update.message.reply_text("Liste ist leer, nichts zu sichern")
# Liste zurücksetzen (neue, leere Liste)
event_list.clear()
save_list()
await update.message.reply_text("WOOOSH! Und die Liste is wieder leer.")
# /hilfe Handler
async def hilfe(update: Update, context: ContextTypes.DEFAULT_TYPE):
text = (
"Dude, ich erklär dir mal wie das hier läuft:\n\n"
"In der Gruppe:\n"
"/anmeldung Name - zum Anmelden\n"
"/abmeldung Name - zum Abmelden\n"
"/status - check wie viele Fussel dabei sind\n\n"
)
await update.message.reply_text(text)
# /status Handler (für alle)
async def status(update: Update, context: ContextTypes.DEFAULT_TYPE):
count = len(event_list)
if count == 0:
text = "Is noch keiner eingecheckt..."
elif count == 1:
text = "Es ist aktuell *1 Fussel* dabei!"
else:
text = f"Es sind aktuell *{count} Fussel* dabei!"
await update.message.reply_text(text, parse_mode="Markdown")
# Bot starten
def main():
app = ApplicationBuilder().token("hier token").build()
app.add_handler(CommandHandler("anmeldung", anmeldung))
app.add_handler(CommandHandler("abmeldung", abmeldung))
app.add_handler(CommandHandler("liste", liste))
app.add_handler(CommandHandler("reset", reset))
app.add_handler(CommandHandler("hilfe", hilfe))
app.add_handler(CommandHandler("status", status))
print("Bot läuft...")
app.run_polling()
if __name__ == "__main__":
main()