From 4042ce13d0f0cb6daaef55fd2c5da40081e414a8 Mon Sep 17 00:00:00 2001 From: emmatveev Date: Wed, 27 Nov 2024 14:45:46 +0300 Subject: [PATCH] fix --- daemons/poll.py | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/daemons/poll.py b/daemons/poll.py index a2c26a7..412c4bd 100644 --- a/daemons/poll.py +++ b/daemons/poll.py @@ -9,7 +9,7 @@ from utils import queues class Daemon(base.Daemon): def __init__(self): - self.telegram_bots: dict[str, dict[str, tuple[telebot.TeleBot, threading.Thread]|None]] = {} + self.telegram_bots: dict[str, dict[str, telebot.TeleBot|None]] = {} def execute(self): while True: @@ -20,31 +20,28 @@ class Daemon(base.Daemon): for bot_name, bot_info in project.items(): if bot_name not in self.telegram_bots[project_name]: self.telegram_bots[project_name][bot_name] = None - internal_bot_info = self.telegram_bots[project_name][bot_name] + bot = self.telegram_bots[project_name][bot_name] if bot_info.get('poll_enabled'): - if internal_bot_info is not None: - bot, thread = internal_bot_info - if thread.is_alive: - print(f'process for {project_name} {bot_name} is alive') - continue - bot = telebot.TeleBot(bot_info['secrets']['telegram_token']) - thread = threading.Thread(target=self.start_polling, args=[bot, bot_info['queue']]) + if bot is not None: + print(f'process for {project_name} {bot_name} is alive') + continue print(f'starting process for {project_name} {bot_name}') - thread.start() - self.telegram_bots[project_name][bot_name] = (bot, thread) + bot = telebot.TeleBot(bot_info['secrets']['telegram_token']) + self.start_polling(bot, bot_info['queue']) + self.telegram_bots[project_name][bot_name] = bot print(f'started process for {project_name} {bot_name}') else: - if internal_bot_info is None or not internal_bot_info[1].is_alive: + if bot is None: print(f'process for {project_name} {bot_name} is not alive') continue print(f'terminating process for {project_name} {bot_name}') - internal_bot_info[0].stop_bot() + bot.stop_bot() self.telegram_bots[project_name][bot_name] = None print(f'terminated process for {project_name} {bot_name}') time.sleep(10) - def start_polling(self, bot, queue): + def start_polling(self, bot: telebot.TeleBot, queue: str): @bot.message_handler() - def do_action(message): + def do_action(message: telebot.types.Message): queues.set_task(queue, message.json, 1) - bot.polling() + threading.Thread(target=bot.polling).start()