Skip to content

Commit e3ee21f

Browse files
telegram bot implementation was moved to a separate module and was refactored
1 parent 5adbab3 commit e3ee21f

File tree

14 files changed

+235
-153
lines changed

14 files changed

+235
-153
lines changed

math_bot/app.py

Lines changed: 0 additions & 12 deletions
This file was deleted.

polling.py

Lines changed: 0 additions & 13 deletions
This file was deleted.
File renamed without changes.

telegram_bot/blueprint.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from flask import Blueprint
2+
3+
from utils.singleton import Singleton
4+
5+
6+
@Singleton
7+
class TelegramBlueprint(Blueprint):
8+
def __init__(self, *args):
9+
super().__init__('telegram_blueprint', __name__, *args)

telegram_bot/bot.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from telegram import Bot
2+
3+
from utils.singleton import Singleton
4+
5+
6+
@Singleton
7+
class TelegramBot(Bot):
8+
pass

telegram_bot/dispatcher.py

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
from threading import Thread
2+
from queue import Queue
3+
4+
from telegram.ext import CommandHandler, MessageHandler, Filters, \
5+
ConversationHandler, Dispatcher
6+
7+
import telegram_bot.logic as logic
8+
from telegram_bot.menu import MenuEntry
9+
10+
from utils.singleton import Singleton
11+
12+
13+
@Singleton
14+
class DispatcherProxy(Dispatcher):
15+
def __init__(self, bot, *args, **kwargs):
16+
update_queue = Queue()
17+
super().__init__(bot, update_queue, *args, **kwargs)
18+
self._setup_dispatcher()
19+
self._start_thread()
20+
21+
def _setup_dispatcher(self):
22+
conversation_handler = ConversationHandler(
23+
entry_points=[
24+
CommandHandler('start', logic.handle_start),
25+
MessageHandler(Filters.all, logic.handle_other_messages)
26+
],
27+
states={
28+
MenuEntry.START_MENU.value: [
29+
MessageHandler(Filters.text, logic.handle_start_menu),
30+
MessageHandler(Filters.all, logic.handle_other_messages)
31+
],
32+
MenuEntry.MANUAL_QUERY.value: [
33+
MessageHandler(Filters.text, logic.handle_wolfram_request)
34+
],
35+
MenuEntry.INTEGRAL.value: [
36+
MessageHandler(Filters.text, logic.handle_integral_query)
37+
],
38+
MenuEntry.DERIVATIVE.value: [
39+
MessageHandler(Filters.text, logic.handle_derivative_query)
40+
],
41+
MenuEntry.LIMIT.value: [
42+
MessageHandler(Filters.text, logic.handle_limit_query)
43+
],
44+
MenuEntry.SUM.value: [
45+
MessageHandler(Filters.text, logic.handle_sum_query)
46+
],
47+
MenuEntry.PLOT.value: [
48+
MessageHandler(Filters.text, logic.handle_plot_query)
49+
],
50+
MenuEntry.EQUATION.value: [
51+
MessageHandler(Filters.text, logic.handle_equation_query)
52+
],
53+
MenuEntry.TAYLOR_SERIES.value: [
54+
MessageHandler(Filters.text,
55+
logic.handle_taylor_series_query)
56+
],
57+
MenuEntry.EXTREMA.value: [
58+
MessageHandler(Filters.text, logic.handle_extrema_query)
59+
]
60+
},
61+
fallbacks=[
62+
CommandHandler('cancel', logic.handle_cancel)
63+
]
64+
)
65+
self.add_handler(
66+
CommandHandler('help', logic.handle_help)
67+
)
68+
self.add_handler(
69+
CommandHandler('examples', logic.handle_examples)
70+
)
71+
self.add_handler(
72+
CommandHandler('simple_mode', logic.handle_simple_mode)
73+
)
74+
self.add_handler(
75+
CommandHandler('detailed_mode', logic.handle_detailed_mode)
76+
)
77+
self.add_handler(conversation_handler)
78+
self.add_error_handler(logic.handle_errors)
79+
80+
def _start_thread(self):
81+
dispatcher_thread = Thread(
82+
target=self.start,
83+
name='dispatcher',
84+
daemon=True
85+
)
86+
dispatcher_thread.start()

0 commit comments

Comments
 (0)