У меня этот параметр работал уже несколько лет с Python-3.9 и python-telegram-bot-13.6, запуская телеграмм-бота в отдельном потоке путем создания экземпляра класса («TelegramBot»). наследующий от QThread. Из основного приложения (PyQt5) я просто вызвал функцию .start() в экземпляре «TelegramBot», которая по умолчанию вызывает виртуальную функцию run(), (повторно) реализованную. в классе после запуска потока.
Код: Выделить всё
from PyQt5.QtCore import QThread
from telegram.ext import Updater, CommandHandler
class TelegramBot(QThread):
def __init__(self, parent=None):
super(TelegramBot, self).__init__(parent)
def run(self):
self.updater = Updater(API_KEY, use_context = True)
dp = self.updater.dispatcher
#dp.add_handler(CommandHandler("start", self.start_command))
self.updater.start_polling(5)
def stop(self):
self.updater.stop()
self.quit()
self.wait()
Я пытался обновить свой класс TelegramBot до нового синтаксиса (используя async-await), но получил RuntimeWarning: включите трассировку, чтобы получить обратная трассировка выделения объекта:
Код: Выделить всё
def run(self):
application = ApplicationBuilder().token(API_KEY).build()
application.add_handler(CommandHandler("start", self.start_command))
application.run_polling(allowed_updates=Update.ALL_TYPES)
async def start_command(self, update, context):
await context.bot.send_message(chat_id=update.effective_chat.id, text='You sent /start!')
Код: Выделить всё
async def run(self):
application = ApplicationBuilder().token(API_KEY).build()
application.add_handler(CommandHandler('start', self.start))
await application.initialize()
await application.start()
await application.updater.start_polling()
Код: Выделить всё
self.bot = TelegramBot()
asyncio.run(self.bot.run())
Я новичок в этом деле. асинхронное программирование и не могу уяснить это. Я был бы признателен за любые подсказки в правильных направлениях или альтернативные предложения по дополнительному запуску бота Telegram в качестве сопрограммы, нажав кнопку в приложении PyQt5!
Подробнее здесь: https://stackoverflow.com/questions/793 ... -coroutine
Мобильная версия