Telegram Bot使用sendMessage发送消息后无法通过getmessage接收的求助
解决Telegram Bot无法接收自身发送消息的问题
首先明确规则:Telegram Bot本身发送的消息,默认不会出现在getUpdates接口的返回结果里,这是官方的设计逻辑——Bot仅能接收来自用户、其他Bot(特定场景)或频道的消息,自身发出的消息不会回传给更新接口。
给你几个可行的解决办法:
通过转发消息获取
在调用sendMessage发送消息后,立刻用forwardMessage接口把这条消息转发到Bot能接收消息的聊天窗口(比如你自己的账号、Bot所在的测试群组),这样getUpdates就能捕获到这条转发的消息。举个伪代码例子:# 发送消息并拿到返回的message对象 sent_msg = bot.send_message(chat_id="目标聊天ID", text="要发的内容") # 转发到自己的聊天窗口 bot.forward_message(chat_id="你的个人聊天ID", from_chat_id="目标聊天ID", message_id=sent_msg.message_id)本地存储发送记录
既然消息是Bot自己发的,完全可以在调用sendMessage的同时,把这条消息的关键信息(比如chat_id、message_id、文本内容)存在本地数据库或者变量里,没必要通过getUpdates去拉取,这种方式更高效直接。Webhook场景下的特殊处理
如果你用Webhook替代getUpdates,同样收不到自身发送的消息,但如果是要跟踪消息的送达状态,可以在发送时附加自定义的reply_markup或者利用回调查询,不过这只适用于有交互需求的场景,不是通用方案。
额外提醒:不用纠结Bot权限问题,就算给Bot开全权限,也收不到自己发的消息,这是规则限制而非权限不足。
内容的提问来源于stack exchange,提问作者moonwind
相关产品推荐
相关产品推荐

