使用电报机器人 api、python 3 和 JobQueue 将消息发送到通道的方法
Posted
技术标签:
【中文标题】使用电报机器人 api、python 3 和 JobQueue 将消息发送到通道的方法【英文标题】:Method to send messages to a channel using telegram bot api, python 3 and JobQueue 【发布时间】:2018-03-16 13:04:26 【问题描述】:基本上,我试图了解此 api 的工作原理,通过执行以下操作,我无法将消息发送到我的频道(我正在从我的电报帐户发送 /test 命令)。另外,例如,我应该如何使用 JobQueue 并每 3 小时发送一次自动消息?文档说明对我不起作用。
def test(bot, update):
update.send_message(chat_id='@channelid', text='this is a test')
def main():
# Create the EventHandler and pass it your bot's token.
updater = Updater("457160310:AAFlxrH2uAaOMGrgO0suOXFM2gVKywsUL0E")
dp = updater.dispatcher
dp.add_handler(CommandHandler("test", test))
dp.add_error_handler(error)
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
【问题讨论】:
请注意,您添加了令牌。如果仍然有效,请考虑通过@botfather 进行更改 【参考方案1】:对于定期发送消息的作业实现,您可以阅读充满示例的this page 。有人应该和你想做的事情完全一样。
关于命令的事情,我认为库没有从通道中获取命令,所以你可以考虑:
在私聊中将命令发送给机器人,机器人将回复发送到频道(我认为更好)
处理来自通道的消息(不是命令)并检查消息文本是否包含命令
我建议第一个解决方案,这样您甚至可以保持频道清洁
【讨论】:
是的,我知道这个页面,问题是这些例子根本不起作用。至于您的第一个考虑因素,这就是我试图用我发布的这段代码做的事情:从我的个人帐户私下发送命令,这样机器人就可以回复频道,而不是回复我。 @user3927607 首先我没有在你的代码中看到作业,所以我不能说哪里出了问题。对于测试函数中的最后一件事,使用 bot.send_message 而不是更新。它应该工作 使用“bot.send_message”解决了这个问题!非常感谢。现在关于工作:代码中没有工作,因为我不知道在哪里实现它:我应该把工作放在主函数中并让这个工作调用另一个函数(例如测试)? 就是这样,我通过在调用测试函数的主函数中添加一个作业来解决问题:) 感谢您的帮助! @user3927607 是的,如果它应该在机器人打开时运行,它必须在 main 中。以上是关于使用电报机器人 api、python 3 和 JobQueue 将消息发送到通道的方法的主要内容,如果未能解决你的问题,请参考以下文章
如何区分“消息”更新和“回调查询”更新? (电报机器人 API)