【问题标题】:Telegram bot- how to send messages DailyTelegram bot-如何每天发送消息
【发布时间】:2020-05-07 06:02:39
【问题描述】:

我正在尝试开发一个每天在特定时间发送消息的电报机器人。 但这对我不起作用。我认为问题出在时间参数上。我使用了此类的另一种方法,它们运行良好,但 run_daily 不起作用。 :(

import telegram.ext
from telegram.ext import Updater
from datetime import time

updater = Updater('My Token', use_context=True)
job = updater.job_queue

def callback_minute(context: telegram.ext.CallbackContext):
    context.bot.send_message(chat_id='My Chat ID', text='One message every minute')

# job.run_repeating(callback_minute, interval=5, first=0)
job.run_daily(callback_minute,time = time(hour = 20, minute = 2, second = 00),days=(0, 1, 2, 3, 4, 5, 6))

updater.start_polling()
updater.idle()

【问题讨论】:

  • 您是否一直运行它(24 小时/7 天)?通常作业调度程序需要一直运行的循环,并检查是否该运行任务。在文档 telegram.ext.JobQueue 我看到 start() 启动 job_queue 线程 - 也许你必须使用它。
  • 顺便说一句:您是否尝试使用 Google 找到一些示例如何使用此 run_daily() ?也许它需要更多的东西才能正确运行 - 即job.start()。

标签: python time telegram telegram-bot python-telegram-bot


【解决方案1】:

你错误地使用了 datetime 对象..

首先,请注意,您创建的 datetime 对象将考虑 UTC 时间和日期,除非您对其进行修改。

至于你的问题,把你的代码修改成这样,当你有很多时间要处理时,它对你来说更干净,它应该可以解决主要问题:

import datetime
t = datetime.time(20, 2, 00, 000000)
job.run_daily(callback_minute,t,days=(0, 1, 2, 3, 4, 5, 6),context=None,name=None)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-03
    • 2022-12-21
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-01
    相关资源
    最近更新 更多