[ca5a97e] | 1 | # This file is part of python-cinema-club-bot
|
---|
| 2 | # contributed in 2024 by Mikhail Kirillov (~w96k) <w96k@runbox.com>
|
---|
| 3 |
|
---|
| 4 | # To the extent possible under law, the author(s) have dedicated all copyright
|
---|
| 5 | # and related and neighboring rights to this software to the public domain
|
---|
| 6 | # worldwide. This software is distributed without any warranty.
|
---|
| 7 |
|
---|
| 8 | # You should have received a copy of the CC0 Public Domain Dedication along
|
---|
| 9 | # with this software. If not, see:
|
---|
[71efb80] | 10 | # <http://creativecommons.org/publicdomain/zero/1.0/>
|
---|
[ca5a97e] | 11 |
|
---|
[cc34991] | 12 | from telegram import Update
|
---|
[5179f7b] | 13 | from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes, \
|
---|
| 14 | MessageHandler, filters
|
---|
[ca5a97e] | 15 | from dotenv import load_dotenv
|
---|
| 16 | import os
|
---|
[50e04dd] | 17 | import logging
|
---|
[0d67456] | 18 |
|
---|
[6623428] | 19 | from strings import INVALID_COMMAND, UNDEFINED_ERROR
|
---|
[0d67456] | 20 | from persistence import Persistence
|
---|
[cc34991] | 21 | import commands
|
---|
[0d67456] | 22 |
|
---|
[ca5a97e] | 23 |
|
---|
| 24 | load_dotenv()
|
---|
| 25 |
|
---|
[50e04dd] | 26 | logging.basicConfig(
|
---|
| 27 | level=logging.INFO,
|
---|
| 28 | format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
|
---|
| 29 | )
|
---|
| 30 |
|
---|
[71efb80] | 31 |
|
---|
[5179f7b] | 32 | async def unknown(update: Update, context: ContextTypes.DEFAULT_TYPE):
|
---|
[0d67456] | 33 | await context.bot.send_message(
|
---|
| 34 | chat_id=update.effective_chat.id,
|
---|
| 35 | text=INVALID_COMMAND
|
---|
| 36 | )
|
---|
| 37 |
|
---|
[0d48ea2] | 38 | async def error_handler(update: object, context: ContextTypes.DEFAULT_TYPE) -> None:
|
---|
| 39 | logging.error("Exception:", exc_info=context.error)
|
---|
| 40 |
|
---|
[6623428] | 41 | error_message = context.error.message \
|
---|
| 42 | if hasattr(context.error, "message") else UNDEFINED_ERROR
|
---|
| 43 |
|
---|
[0d48ea2] | 44 | await context.bot.send_message(
|
---|
| 45 | chat_id=update.effective_chat.id,
|
---|
[6623428] | 46 | text=error_message
|
---|
[0d48ea2] | 47 | )
|
---|
[0d67456] | 48 |
|
---|
[cc34991] | 49 | if __name__ == "__main__":
|
---|
[0d67456] | 50 | app = ApplicationBuilder().token(
|
---|
| 51 | os.environ.get("TELEGRAM_TOKEN")
|
---|
| 52 | ).persistence(Persistence).build()
|
---|
[ca5a97e] | 53 |
|
---|
[0d48ea2] | 54 | # Meta commands
|
---|
[cc34991] | 55 | app.add_handler(CommandHandler("about", commands.about))
|
---|
[0d48ea2] | 56 |
|
---|
| 57 | # Movie commands
|
---|
[6623428] | 58 | app.add_handler(CommandHandler("movie", commands.movie))
|
---|
| 59 | app.add_handler(CommandHandler("movies", commands.movies))
|
---|
| 60 | app.add_handler(CommandHandler("movies_remove", commands.remove_movies))
|
---|
| 61 |
|
---|
| 62 | # Users commands
|
---|
[0d48ea2] | 63 | app.add_handler(CommandHandler("set", commands.set_users))
|
---|
[cc34991] | 64 | app.add_handler(CommandHandler("add", commands.add_users))
|
---|
| 65 | app.add_handler(CommandHandler("list", commands.list_users))
|
---|
| 66 | app.add_handler(CommandHandler("remove", commands.remove_users))
|
---|
| 67 | app.add_handler(CommandHandler("chooser", commands.chooser_user))
|
---|
[6623428] | 68 | app.add_handler(CommandHandler("next", commands.who_is_next))
|
---|
[ca5a97e] | 69 |
|
---|
[0d67456] | 70 | app.add_handler(MessageHandler(filters.COMMAND, unknown))
|
---|
[0d48ea2] | 71 | app.add_error_handler(error_handler)
|
---|
| 72 |
|
---|
[ca5a97e] | 73 |
|
---|
[0d67456] | 74 | app.run_polling()
|
---|
[0d48ea2] | 75 |
|
---|