Telegraf Bot API转发消息失败:其他操作正常却报消息未找到错误
我来帮你拆解下这个问题:你的机器人明明对@programmistss频道有全权限,删消息、发消息、编辑消息都没问题,但偏偏转发同一条message_id=19的消息时,弹出「Bad Request: message to forward not found」的错误。结合Telegram Bot API的规则,这几个原因概率最高:
参数顺序搞混了:
forwardMessage的参数逻辑和你用的deleteMessage、editMessageText不一样!前两个只需要指定「操作的聊天ID」和「消息ID」,但forwardMessage需要明确目标聊天ID、来源聊天ID、要转发的消息ID三个核心参数。如果你把来源和目标的位置写反了,或者漏传了某个参数,Bot自然找不到要转发的消息。比如正确的调用应该是:// 格式:forwardMessage(目标聊天ID, 来源聊天ID, 消息ID) bot.telegram.forwardMessage('@你的目标频道/群ID', '@programmistss', 19)检查下你的调用是不是参数顺序错了,或者来源聊天ID没传对。
消息的归属或状态有特殊限制:你能编辑和删除这条消息,说明它可能是机器人自己发送的?但就算是自己发的消息,也得确认:这条消息有没有被频道设置为「不可转发」?有些频道管理员会开启消息的「禁止转发」权限,就算你能编辑删除,也没法转发出去。另外,还有一种可能:这条消息虽然你能操作,但在Telegram服务器端已经被隐性归档或者部分数据丢失了——编辑和删除只需要消息的基础标识,但转发需要读取消息的完整内容,这种情况下就会提示找不到。
用户名解析的缓存问题:你用
@programmistss作为聊天ID,有时候Telegram的API会对用户名有缓存延迟,或者频道的实际数字ID和用户名映射出了小问题。试试把@programmistss换成频道的数字ID(可以通过getChat接口获取),再调用forwardMessage试试,很多时候这种ID格式的切换能解决莫名其妙的找不到问题。转发目标的权限遗漏:虽然你说机器人有全部权限,但有没有可能是目标聊天的权限问题?比如机器人要转发到某个群,但机器人在那个群里没有「发送消息」或者「转发消息」的权限?这种情况下也会触发类似的错误,别只盯着来源频道的权限哦。
先从检查forwardMessage的参数顺序和格式开始,这个是最常见的坑,大概率能解决你的问题。
内容的提问来源于stack exchange,提问作者Name Surname




