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.")