You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Telegram机器人无法删除消息:deleteMessage接口报错原因排查

为什么你的Telegram私有频道机器人无法删除消息?

结合你的场景和Telegram Bot API的规则,出现「Bad Request: message can't be deleted」报错通常有以下几个常见原因,你可以逐一排查:

  • 机器人权限不足或未成为频道管理员
    Telegram Bot要删除频道消息,必须同时满足两个条件:一是机器人本身是该私有频道的管理员,二是管理员权限中明确开启了「删除消息」权限。很多时候大家只是把机器人添加为管理员,但忘了勾选这个关键权限,直接导致API调用失败。你可以去频道的管理设置里找到机器人账号,检查它的权限配置。

  • 目标消息并非该机器人发送
    deleteMessage接口的核心规则是:机器人只能删除自己发送的消息,或者作为管理员删除其他用户发送的消息(同样需要对应权限)。你的场景是发送服务类通知,理论上这些消息应该是机器人发的,但还是要确认下目标消息的发送者是不是这个机器人账号,避免误操作了其他账号发的消息。

  • API调用参数存在错误
    即使你调用了接口,也要仔细核对参数的正确性:

    • 私有频道的chat_id格式通常是-100开头的一串数字(比如-100123456789),不要漏掉开头的-100
    • message_id必须是对应那条消息的唯一ID,你可以通过调用getUpdates接口或者查看频道消息详情来获取正确ID,避免复制时出错。
  • 频道存在特殊权限限制
    极少数情况下,私有频道可能设置了更严格的权限规则,比如只有频道所有者才能删除消息。你可以检查频道的整体权限设置,确认管理员(包括机器人)是否拥有删除消息的权限。

快速排查步骤

  1. 打开频道的「管理」→「管理员」,找到你的机器人,确保它的权限列表里勾选了「删除消息」;
  2. 调用getUpdates接口,确认要删除的消息的chat_idmessage_id与你调用deleteMessage时的参数完全一致;
  3. 让机器人发送一条新消息,立即调用deleteMessage删除它,测试是否能成功,以此排除权限以外的问题。

内容的提问来源于stack exchange,提问作者Victor

火山引擎 最新活动