You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telegram Bot调用delete_message报错:无法为所有人删除消息

问题分析与解决方案

报错原因

telebot.apihelper.ApiTelegramException: Error code: 400. Description: Bad Request: message can't be deleted for everyone 这个错误通常由以下几种情况导致:

  • 机器人缺少权限:在群组/超级群组中,机器人需被授予「删除消息」的管理员权限,才能执行删除操作(包括自身发送的消息)
  • 消息超期:Telegram API限制,发送超过48小时的消息无法执行「为所有人删除」操作;机器人自身发送的消息虽理论上无此限制,但部分场景仍可能受影响
  • 消息ID无效:start_message.id 或 messages 列表中的ID对应消息已被删除、不存在,或属于其他聊天会话
  • 聊天类型限制:在频道中删除消息,机器人需拥有频道管理员权限,且仅能删除自身发送的消息

针对性解决方案

1. 配置机器人权限

若在群组/超级群组中运行:

  • 将机器人添加为群组管理员,勾选「删除消息」权限
  • 确认群组未设置限制机器人操作的特殊规则

2. 验证消息ID有效性

在删除前添加异常捕获,排查无效消息ID:

for msg_id in messages:
    try:
        bot.delete_message(callback.message.chat.id, msg_id)
    except telebot.apihelper.ApiTelegramException as e:
        print(f"删除消息 {msg_id} 失败: {e}")

同时确认start_message是当前聊天中机器人发送的有效消息对象,避免跨会话引用ID。

3. 修正代码逻辑与缩进

你的代码存在缩进错误,会导致逻辑执行异常,修正后代码如下:

import time
import telebot

@bot.callback_query_handler(func=lambda call: True)
def main(callback):
    messages = []
    chat_id = callback.message.chat.id
    
    # 删除start_message
    try:
        bot.delete_message(chat_id=chat_id, message_id=start_message.id)
    except telebot.apihelper.ApiTelegramException as e:
        print(f"删除start_message失败: {e}")
    
    # 发送三个骰子消息
    for _ in range(3):
        dice_message = bot.send_dice(chat_id, emoji="🎲")
        messages.append(dice_message.id)
        time.sleep(6)
    
    # 删除骰子消息
    for msg_id in messages:
        try:
            bot.delete_message(chat_id, msg_id)
        except telebot.apihelper.ApiTelegramException as e:
            print(f"删除消息 {msg_id} 失败: {e}")
  • 移除不必要的time.sleep(0.1),Telegram API对少量请求的频率限制宽松,无需额外延迟
  • 使用for msg_id in messages替代索引遍历,避免索引越界问题

4. 私有聊天场景排查

若在一对一聊天中报错:

  • 检查用户是否已手动删除对应消息
  • 确认消息未被用户撤回,撤回后的消息无法通过API删除

额外注意事项

  • 批量操作时可添加time.sleep(0.5)的请求间隔,避免触发API频率限制
  • 确保所有操作的chat_id与当前回调的聊天ID一致,避免跨会话操作

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:21:16