Telegram机器人无法删除历史消息问题求助(Python API)
解决Telegram API删除旧消息时报"Bad Request: message can't be deleted"的问题
我来帮你排查这个问题——你遇到的这个错误通常和Telegram的平台规则、代码参数细节有关,咱们从这几个核心方向分析:
1. 消息删除的时间限制(最可能的原因)
Telegram有个硬性平台规则:发送超过48小时的消息无法通过API删除。你要删除的是3月19日的消息,到3月27日已经远超48小时的时限,这个限制是平台层面的,哪怕机器人拥有全部管理员权限也无法绕过。
2. 确认传入的message_id是否正确
看你的代码:
bot.delete_message(chat_id=query.message.chat_id, message_id=query.message.message_id)
这里的query.message.message_id对应的是当前交互场景的消息ID(比如用户点击按钮触发操作时的那条消息),而不是你真正要删除的3月19日的目标消息ID。如果参数传错了,自然会返回删除失败的错误。
如果消息还在48小时时限内,你需要先获取到3月19日那条消息的正确message_id(比如通过频道消息历史记录查询),再替换到delete_message方法中执行。
3. 管理员权限的细节验证
虽然你提到机器人有全部管理员权限,还是可以再确认下是否明确开启了删除消息的细分权限——有时候"全部权限"的设置可能会遗漏个别细分项,但这个在你当前场景里可能性较低,毕竟时间限制的影响更直接。
总结:如果目标消息已超过48小时,确实无法通过API删除;如果仍在时限内,先修正message_id为目标消息的正确ID,再重新调用接口即可。
内容的提问来源于stack exchange,提问作者Daniil Berestovoy
相关产品推荐
相关产品推荐

