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

Telegram机器人重复向Google Apps Script Webhook发送更新问题排查

Telegram机器人重复回复问题(Google Apps Script托管)

问题描述

用Google Apps Script托管的简易Telegram机器人此前运行正常,但近3-4天开始出现重复回复同一消息的情况。只有删除Webhook或归档Apps Script部署才能终止重复。删除Webhook后问题暂时停止,但重新设置同一Webhook后,重复回复会再次出现。

相关代码

function doPost(e) {
  try {
    var content = JSON.parse(e.postData.contents);
    reply_to_bot(content);
  }
  catch(e) {
    Logger.log("Error: " + error);
  }
}

注:reply_to_bot函数仅负责处理命令并返回对应响应。

问题截图

问题截图

可能的解决方法

  • 确保返回200响应给Telegram
    Telegram服务器若未收到200 OK响应,会重复发送请求。当前doPost函数未明确返回响应,需添加返回逻辑,同时修正catch块的错误变量:

    function doPost(e) {
      try {
        var content = JSON.parse(e.postData.contents);
        reply_to_bot(content);
        // 返回200 OK状态
        return ContentService.createTextOutput(JSON.stringify({status: "ok"})).setMimeType(ContentService.MimeType.JSON);
      } catch(e) {
        Logger.log("Error: " + e.toString());
        // 错误时也返回200,避免重复请求
        return ContentService.createTextOutput(JSON.stringify({status: "error", message: e.toString()})).setMimeType(ContentService.MimeType.JSON);
      }
    }
    
  • 优化reply_to_bot函数执行效率
    若该函数执行超时(超过Telegram的请求超时阈值),会触发重复请求。检查函数内是否有耗时操作(如慢网络请求、大量数据处理),尽量精简逻辑缩短执行时间。

  • 更新脚本部署版本
    确认使用的是最新的Apps Script部署版本,旧版本缓存可能引发异常。重新部署脚本后,将Webhook URL更新为新的部署地址。

  • 清理Telegram Webhook待处理请求
    先删除Webhook,检查待处理请求数,确认清零后再重新设置:

    # 删除Webhook
    curl "https://api.telegram.org/bot<你的BotToken>/deleteWebhook"
    # 查看Webhook状态,确认pending_update_count为0
    curl "https://api.telegram.org/bot<你的BotToken>/getWebhookInfo"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:02:47