电报使用时间表消息

telegram use schedule message

我想安排在特定的 unixtime 发送电报机器人消息。

来自电报官方 api (https://core.telegram.org/api/scheduled-messages) 应该可以通过设置 schedule_date 标志来实现。

To schedule a message, simply provide a future unixtime in the schedule_date flag of messages.sendMessage or messages.sendMedia.

但是我无法设置该标志。更准确地说,我什至不知道如何设置标志,或者我是否使用了正确的 api.

我尝试过的是直接通过浏览器使用 api(也可以使用 curl),如下所示:https://api.telegram.org/botBOT:TOKEN/sendMessage?chat_id=ID&text=Test&schedule_date=1653503351

我也没有找到任何通过 https://pypi.org/project/pyTelegramBotAPI/#description https://telepot.readthedocs.io/en/latest/#send-a-message, nor https://github.com/nickoala/telepot 访问此标志的方法。

我想在 python 环境中实现此功能,但我们将不胜感激任何可行的建议。

编辑: 我决定将在某个 unixtime 发送电报机器人消息的意图保存在数据库中。然后我创建一个无限循环来检查在当前时间戳之前是否有任何未发送的消息。如果循环检测到这样的消息,它会发送消息并设置一个标志,表示该消息已发送。

正如所承诺的,这是一个完全 dockerized 的行为示例:https://github.com/Sokrates1989/nameTheCountDown-lightweight

它创建了一个可以传递名称和持续时间的机器人。一旦持续时间过去,它就会发送一条带有传递名称的消息。基本上是一个简单的倒计时,您可以同时给出多个名称 运行。由于它是电报聊天,您可以通过修改该聊天的通知来修改通知倒计时结束的方式。

这是正在运行的机器人:http://t.me/NameTheCountdownBot

我们不能通过 bot API 本身来做到这一点,并且 sendMessage 方法中没有 schedule_date 参数: https://core.telegram.org/bots/api#sendmessage 您所阅读的是针对 Telegram 客户的,而不是机器人 API 消费者。

如果您真的不需要 unixtime,您可以简单地为预定消息创建一个 table,其中包含一个文本 chat_id 和一个 publish_time 列(例如 22:15), 和 运行 每分钟一个命令来查看当前时间是否有消息要发送。然后发送消息,删除记录

请注意,python-telegram-bot 库有一个 built-in 调度任务的解决方案:JobQueue. This feature is based on the APScheduler library,您也可以在没有 python-telegram-bot 的情况下使用它。


免责声明:我目前是 python-telegram-bot.

的维护者