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

Telegram机器人突发崩溃求助:一月前正常的代码昨夜起报错

解决Telegram Bot报错:400 Bad Request: message is not modified

我帮你分析下这个问题——这个报错的核心原因是你的机器人在尝试编辑一条内容完全没有变化的消息,而Telegram API明确禁止这种操作,所以返回了400 Bad Request错误。另外错误里的UnhandledPromiseRejectionWarning说明你没处理编辑操作可能抛出的异常,这也是导致机器人崩溃的直接原因之一。

具体修复步骤

  • 给编辑操作加内容校验:找到代码里调用editMessageText(或其他编辑消息的方法)的地方,在执行编辑前先对比新内容和原消息内容,只有两者不同时才调用API。举个Telegraf框架下的例子:
    // 原本的错误写法(直接编辑,不判断内容)
    // ctx.editMessageText(unchangedContent);
    
    // 修改后的写法:先判断内容是否变化
    const currentMessageText = ctx.update.callback_query?.message?.text || ctx.message?.text;
    const newContent = "你要更新的内容";
    
    if (newContent !== currentMessageText) {
      await ctx.editMessageText(newContent);
    }
    
  • 处理Promise异常,避免崩溃:给编辑操作套上try/catch,捕获可能的错误,防止未处理的Promise拒绝导致机器人挂掉:
    try {
      const currentMessageText = ctx.update.callback_query?.message?.text || ctx.message?.text;
      const newContent = "你要更新的内容";
      
      if (newContent !== currentMessageText) {
        await ctx.editMessageText(newContent);
      }
    } catch (err) {
      console.error("编辑消息失败:", err);
      // 这里可以加降级逻辑,比如发送一条新消息代替编辑
    }
    

为什么之前正常现在突然报错?

大概率是最近的代码改动或者触发场景变化导致的:

  • 比如你新增了定时刷新消息的逻辑,但没做内容校验;
  • 或者外部数据源返回的内容和之前完全一致,但机器人还是重复发起编辑请求;
  • 也可能是某些用户交互触发了重复编辑同内容的场景,之前没覆盖到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:07:37