Допустим, внутри функции запуска есть бесконечный цикл. пока он работает... Мне нужна еще одна команда для запуска в фоновом режиме. другая функция. (команда остановки для примера) Я попытался поместить ее после «updater.start_polling()», но она не сработала по нескольким причинам. Я не мог настроить планировщик для этого.
def start(update: Update, context: CallbackContext) -> None:
while true:
context.bot.send_message(chat_id=update.effective_chat.id, text= "Choose an option. ('/option1' , '/option 2', '/...')")
def main():
updater = Updater("<MY-BOT-TOKEN>", use_context=True)
updater.dispatcher.add_handler(CommandHandler('start', start))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
@furas Я пытался это сделать, и это лучший способ, который я вижу. но я не мог запустить код, когда он дает обновление. типа... Мне нужен слушатель. (Я уверен, что есть способ сделать это, но я не уверен, как)
Использовать многопоточность
from time import sleep
from threading import Thread
def start(update: Update, context: CallbackContext) -> None:
while true:
context.bot.send_message(chat_id=update.effective_chat.id, text= "Choose an option. ('/option1' , '/option 2', '/...')")
sleep(.1)
def stop():
pass # some code here
def main():
updater = Updater("<MY-BOT-TOKEN>", use_context=True)
updater.dispatcher.add_handler(CommandHandler('start', start))
t1 = Thread(target=updater.start_polling)
t2 = Thread(target=stop)
t1.start()
t2.start()
updater.idle()
if __name__ == '__main__':
main()
ладно, я нашел способ... установить время true после начала опроса и заставить его ждать, пока не сработает флаг. когда пользователь отправляет обновление, оно запускает функцию и устанавливает флаг True. который запускает код после «начать опрос ()». с time.sleep(1) я могу одновременно запускать обе команды
вам лучше использовать отдельный код потока, который у вас есть в начале