# This file is part of python-cinema-club-bot # contributed in 2024 by Mikhail Kirillov (~w96k) # To the extent possible under law, the author(s) have dedicated all copyright # and related and neighboring rights to this software to the public domain # worldwide. This software is distributed without any warranty. # You should have received a copy of the CC0 Public Domain Dedication along # with this software. If not, see: # from telegram import Update from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes, \ MessageHandler, filters from dotenv import load_dotenv import os import logging from strings import INVALID_COMMAND, UNDEFINED_ERROR from persistence import Persistence import commands load_dotenv() logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) async def unknown(update: Update, context: ContextTypes.DEFAULT_TYPE): await context.bot.send_message( chat_id=update.effective_chat.id, text=INVALID_COMMAND ) async def error_handler(update: object, context: ContextTypes.DEFAULT_TYPE) -> None: logging.error("Exception:", exc_info=context.error) error_message = context.error.message \ if hasattr(context.error, "message") else UNDEFINED_ERROR await context.bot.send_message( chat_id=update.effective_chat.id, text=error_message ) if __name__ == "__main__": app = ApplicationBuilder().token( os.environ.get("TELEGRAM_TOKEN") ).persistence(Persistence).build() # Meta commands app.add_handler(CommandHandler("about", commands.about)) # Event commands app.add_handler(CommandHandler("event", commands.create_event)) app.add_handler(CommandHandler("events", commands.list_events)) app.add_handler(CommandHandler("announce", commands.create_announcement)) # Movie commands app.add_handler(CommandHandler("movie", commands.movie)) app.add_handler(CommandHandler("movies", commands.movies)) # Users commands app.add_handler(CommandHandler("set", commands.set_users)) app.add_handler(CommandHandler("add", commands.add_users)) app.add_handler(CommandHandler("list", commands.list_users)) app.add_handler(CommandHandler("users", commands.list_users)) app.add_handler(CommandHandler("queue", commands.list_users)) app.add_handler(CommandHandler("remove", commands.remove_users)) app.add_handler(CommandHandler("chooser", commands.chooser_user)) app.add_handler(CommandHandler("next", commands.who_is_next)) app.add_handler(MessageHandler(filters.COMMAND, unknown)) app.add_error_handler(error_handler) app.run_polling()