0
0 комментариев

Я настраиваю бота и запускаю его из десктопного приложения в отдельном потоке, заставляя его выполнять bot.polling(none_stop=True).

class TelegramBot(Thread):
def __init__(self):
    Thread.__init__(self)
    self.GlobalBot = telebot.TeleBot(config.token, threaded=False)
    self.LocalBot = MainBot()
    @self.GlobalBot.message_handler(func=lambda message: True, content_types=['text'])
    def send_msg(message):
        self.GlobalBot.send_message(message.chat.id, self.LocalBot.GetAnswer(message.text))
    self.Started =1
 
def __StartTele(self):
    self.LocalBot.ReConnectToDB()
    self.GlobalBot.polling(none_stop=True)
 
def run(self):
 
    self.__StartTele()
 
def stop(self):
    self.__StopTele()
 
    #self._stop_event.set()
 
def __StopTele(self):
    self.GlobalBot.stop_polling()

Все работает как надо: в приложении нажимаю кнопку, которая инициализирует этот класс и выполняет bot.polling(), но если я нажимаю кнопку, которая должна выключить бота и выполняет bot.stop_polling(), то ничего не происходит. Бот так и продолжает гонять свой поток, даже когда я закрываю приложение, пока я принудительно не завершу работу интерпретатора.

Так как мне выключить бота, не завершая работу программы?


Добавить комментарий