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
相关产品推荐
相关产品推荐

