Есть ли способ запустить команду, пока другая команда уже запущена в python-telegram-bot?

Допустим, внутри функции запуска есть бесконечный цикл. пока он работает... Мне нужна еще одна команда для запуска в фоновом режиме. другая функция. (команда остановки для примера) Я попытался поместить ее после «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 26.12.2020 08:17

@furas Я пытался это сделать, и это лучший способ, который я вижу. но я не мог запустить код, когда он дает обновление. типа... Мне нужен слушатель. (Я уверен, что есть способ сделать это, но я не уверен, как)

M MO 26.12.2020 21:48
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
637
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Использовать многопоточность

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) я могу одновременно запускать обе команды

Другие вопросы по теме