Skip to content

Telegram sendChatAction 瞬态错误后每 3 秒刷 ERROR 日志

问题

当 Telegram API 遇到瞬态网络错误(限速、临时连接中断等)时,OpenClaw 的 Telegram 插件会以 3 秒为间隔不断重试,并输出 ERROR 级别日志,把日志文件刷得满满当当。

日志里每隔 3 秒就来一条 telegram sendChatAction failed: ...,用龙虾话说,就是你的龙虾在不停地拼命举爪子打招呼,但对方暂时没响应——应该歇着等等,而不是每 3 秒都抡一次爪子。

解决方案

extensions/telegram/src/sendchataction-401-backoff.ts 中,现有代码只对 401 错误做了全局熔断处理。需要增加一条瞬态错误冷却路径,覆盖以下场景:

  • 网络错误(连接超时/断开)
  • 429 限速响应
  • 5xx 临时服务器错误

修复思路

  • 瞬态冷却期间,跳过 sendChatAction 调用而不是重试
  • 冷却状态在后续调用成功时自动清除(不影响正常 typing 功能)
  • 保持原有 401 的熔断机制不变

社区用户 Boulea7 提供的本地补丁已通过以下测试:

  • pnpm test -- extensions/telegram/src/sendchataction-401-backoff.test.ts
  • 现有 sends typing 测试用例未回归

相关 Issue:#55811