source: python-cinema-club-bot/app.py@ 71efb80

Last change on this file since 71efb80 was 71efb80, checked in by Mikhail Kirillov <w96k@…>, on Oct 8, 2024 at 8:19:10 PM

Add string.py

  • Property mode set to 100644
File size: 2.6 KB
Line 
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:
10# <http://creativecommons.org/publicdomain/zero/1.0/>
11
12from telegram import Update, error
13from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes, \
14 MessageHandler, filters
15from dotenv import load_dotenv
16from rich import inspect
17import os
18import logging
19from .strings import INVALID_COMMAND
20
21load_dotenv()
22
23logging.basicConfig(
24 level=logging.INFO,
25 format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
26)
27
28
29async def about(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
30 await update.message.reply_text('''
31Version 0.0
32
33python-cinema-club-bot is a bot for Telegram specialized for managing cinema club activities. This software is released as Public Domain using CC0 license.
34
35Project information: http://57.129.46.169/trac/wiki/python-cinema-club-bot
36Source code: http://57.129.46.169/cgit/python-cinema-club-bot/
37
38Contributed in 2024 by Mikhail Kirillov (~w96k) <w96k@runbox.com>
39
40To 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.
41
42You should have received a copy of the CC0 Public Domain Dedication along with this software. If not, see:
43<http://creativecommons.org/publicdomain/zero/1.0/>
44
45 ''')
46
47
48async def add_choose_cycle(
49 update: Update,
50 context: ContextTypes.DEFAULT_TYPE
51) -> None:
52 command = update.message.text
53
54 user = command.replace("/add", "")
55
56 inspect(user)
57
58 try:
59 if user == "":
60 raise error.TelegramError("User is not provided. Use /add @username")
61 except error.TelegramError as err:
62 await update.message.reply_text(err.message)
63 return
64
65 await update.message.reply_text(update.message.text)
66
67
68async def unknown(update: Update, context: ContextTypes.DEFAULT_TYPE):
69 await context.bot.send_message(chat_id=update.effective_chat.id, text=INVALID_COMMAND)
70
71app = ApplicationBuilder().token(
72 os.environ.get('TELEGRAM_TOKEN')
73).build()
74
75app.add_handler(CommandHandler("about", about))
76app.add_handler(CommandHandler("add", add_choose_cycle))
77
78app.add_handler(MessageHandler(filters.COMMAND, unknown))
79
80app.run_polling()
Note: See TracBrowser for help on using the repository browser.