Files
2025-12-24 02:06:17 +01:00

66 lines
2.3 KiB
Python

import signal
import sys
import traceback
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes, CallbackQueryHandler, Application
import configparser
import direct_message_commands
import event_management
import log
from errors import *
from log import *
config = configparser.ConfigParser()
config.read('config/telegram_bot_token.cfg')
print("Configs loaded.")
def handle_signal(signal, frame):
log.info(chat_id="system", message="Shutdown command received. Stopping service...")
sys.exit(0)
signal.signal(signal.SIGTERM, handle_signal)
signal.signal(signal.SIGINT, handle_signal)
async def button_callback_query(update: Update, context: ContextTypes.DEFAULT_TYPE):
query = update.callback_query
await query.answer()
try:
# Event Management
if query.data == "list_event_actions":
await event_management.list_event_actions(update, context, query)
return
if query.data == "edit_event":
await event_management.edit_event(update, context, query)
return
if query.data == "delete_event":
await event_management.delete_event(update, context, query)
return
if query.data == "new_event":
await event_management.new_event(update, context, query)
return
except Exception as e:
log.error(chat_id=update.effective_chat.id, message=f"Error handling button callback query: {e}", stack_trace=traceback.format_exc())
await update.effective_message.reply_text(f'Leider gab es einen Fehler. Bitte melde die Uhrzeit bei den Admins: {datetime.now().strftime("%Y-%m-%d @ %H:%M")}.')
def main():
log.info(chat_id="system", message="Registering bot commands and starting service...")
app = ApplicationBuilder().token(config['telegram']['bot_token']).build()
# DM commands
app.add_handler(CommandHandler("start", direct_message_commands.start))
# Event management
app.add_handler(CommandHandler("newEvent", event_management.new_event))
# buttons
app.add_handler(CallbackQueryHandler(button_callback_query))
log.info(chat_id="system", message="Service started")
app.run_polling()
if __name__ == "__main__":
log.info(chat_id="system", message="Starting service...")
main()
log.info(chat_id="system", message="Service stopped.")