• Как прекратить выполнение цикла while?

    Во первых вместо time.sleep используйте schedule, по скольку ваше выполнение через неделю может сожрать гиг памяти. Во вторых, а не проще просто создать переменную и в том случае если она = False просто не выполнять цикл. Можно сделать программу асинхронной, что бы она не завершилась, после указания нечего не делать, и ждала следующих указаний. А и добавь логи с декоратором который будет ловить ошибки, а интервал бери с конфиг файла, который тебе нужно создать. Подозреваю что там очень плохая структура проекта ( не удивлюсь если ты писал всё в одном файле ) Если хочешь, то создай git репу и пул реквест, я сделаю заметки.
    Ответ написан
    Комментировать
  • Не работает schedule, почему?

    Ты не внимательно прочитал документацию schudle, там нужно обновлять информацию каждую секунду
    while True:
        schedule.run_pending()
        time.sleep(1)

    Полный пример:
    def r_check_mes(message):
        x = message.text
        if x == 'Включить':
            schedule.every(2).seconds.do(lambda: job(message))
        elif x == 'Выключить':
            schedule.cancel_job(lambda: job(message))
        while True:
               schedule.run_pending()
               time.sleep(1)
    Ответ написан
    2 комментария
  • В телеграм боте выполняются две функции одновременно. Что делать?

    @twistfire92
    Python backend developer
    Во-первых
    Поменяйте местами описание функций

    @bot.message_handler(content_types=['text'])
    def run_nui(message):

    и
    @bot.message_handler(commands=['coronavirus'])
    def covid_start(message):


    Любая команда - это текст, поэтому @bot.message_handler(content_types=['text']) сработает на любой команде. А все хэндлеры перебираются сверху вниз, и выполнится первый, подходящий под условия. Так что если ввести команду /coronavirus, то до хэндлера @bot.message_handler(commands=['coronavirus']) не дойдет, т.к. выше есть @bot.message_handler(content_types=['text'])

    Во-вторых:
    Такого быть не должно
    finn = ""
    ...
    ...
    ...
    bot.send_message(message.chat.id, finn, parse_mode='html')

    Бот не может отправить пустое сообщение, на это и ругается

    Там и дальше много вопросов к коду и к логике работы, но, думаю, вы справитесь!

    Удачи в дальнейшем! Не болейте!
    Ответ написан
    Комментировать