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")
また
上記のコードでタイム ゾーンが「None」(tzinfo=None)の場合、 run_onceは問題なく動作するので、問題はタイム ゾーンにあると考えましたが、その場合はrun_dailyが機能しないはずです。どちらもdatetime を使用しているためです。構文のtime for time
Python Telegram ボットのジョブ キューrun_onceの構文。
Python Telegram ボットのジョブ キューrun_dailyの構文。
提案や回答は役に立ちます。私はコーディングの初心者です:)
編集:
run_onceは機能しますが、指定された時間を timezone( ) として設定する代わりに、時間を指定されたタイムゾーンに変換します (つまり、私のタイムゾーンがアジア/コルカタで、指定された時間が 01:00AM の場合、 run_oncebot_refresh_time=bot_refresh_time.replace(tzinfo = tz)
を使用してジョブを実行します)。 01:00AM IST ではなく 06:30AM IST)。この問題は run_once を使用した場合にのみ発生し、run_dailyでは問題ありません