Проблема с очередью заданий в телеграмм-боте на Python

      y=str("12:50AM")+"+0000"
bot_refresh_time = datetime.strptime(y,'%I:%M%p%z').timetz()
bot_refresh_time=bot_refresh_time.replace(tzinfo = tz)
updater.job_queue.run_once(bot_bal,bot_refresh_time,name="daily_check_task")

Приведенный выше код выполняется без ошибок, он добавляется в очередь заданий, но обратный вызов не вызывается.

в то время как, если я изменю run_once на run_daily , он будет работать отлично, т.е. updater.job_queue.run_daily(bot_bal,bot_refresh_time,name="daily_check_task")

или же

если часовой пояс «Нет» (tzinfo = None) в приведенном выше коде, тогда run_once работает отлично, поэтому я подумал, что проблема в часовом поясе, но в этом случае run_daily не должен работать, потому что они оба используют datetime. время потратить время на синтаксис

синтаксис очереди заданий run_once для бота телеграммы python.

синтаксис очереди заданий run_daily для бота телеграммы python.

Любые предложения или ответы были бы полезны :)

1 ответ

Начиная с версии 13.0, может обрабатывать только pytz часовых поясов, поскольку PTB использует библиотеку APScheduler для JobQueue. Обратите внимание, что более старые версии больше не поддерживаются. Рабочий пример для run_once было бы:

      import datetime as dtm
import pytz

from telegram.ext import Updater

updater = Updater('TOKEN')


def test(_):
    print('running at', dtm.datetime.utcnow())


time = pytz.timezone('Asia/Kolkata').localize(dtm.datetime.now() + dtm.timedelta(seconds=5))
updater.job_queue.run_once(test, time, name="daily_check_task")
updater.start_polling()
updater.idle()
Другие вопросы по тегам