解决 OpenClaw Telegram Polling 收不到消息的问题

记录一次 OpenClaw 更换 Telegram bot 后无法接收消息的排查过程,定位到是 polling offset 状态未重置导致的隐式问题。

Wed Feb 18 2026
1083 字 / 5 分钟

这次在配置 OpenClaw 的过程中,我遇到了 Telegram polling 收不到消息的问题。问题本身并不复杂,但卡住的时间不短,主要原因是系统表面上没有任何异常。

起点

事情始于一次安装时的误操作。我原本是想用第三方的 AI API 接入 OpenClaw,而不是默认的 Codex。但在最初的安装流程里点错了步骤,把 Codex 的订阅装上了,同时也顺手绑定了一个 Telegram bot。那一套配置当时是能正常跑的,Telegram polling 也确实收过消息。

后来我意识到订阅装错了,就重新梳理了一遍配置。在 openclaw onboard 里去掉 Codex,换成第三方 AI API;Telegram 这边也重新创建了一个 bot,把原来的私聊和群组关系重新绑定了一遍。从操作上看,这更像是一次”重来”,而不是在原配置上打补丁。

问题现象

重新配置完成后,OpenClaw 启动正常,Gateway 能访问,Control UI 里 Telegram channel 的状态看起来也都对:

  • polling 模式
  • probe 通过
  • webhook 为空(符合 polling 的预期)

日志里没有报错,系统没有任何”红灯”。

但不管我是在 Telegram 里私聊新 bot,还是在已经绑定的群组里发消息,OpenClaw 都没有任何反应。

  • channel status 里 lastInboundAt 一直是 null
  • openclaw logs --follow 里看不到任何 Telegram inbound
  • 但同时又没有 error

排查

一开始我怀疑的是 Telegram 本身,比如 bot 权限、群组隐私设置、是不是没加管理员之类的。为了确认这条线,我直接用当前 bot token 调了 Telegram 官方的 getUpdates。接口是通的,在某些情况下,给 bot 发 /start 也能看到返回结果。这基本可以确认 token 没问题,Telegram API 也不是不可达。

真正的原因

真正的问题,其实在 OpenClaw 本地保存的 polling 状态上。

OpenClaw 在 polling 模式下,会把 Telegram 的 update offset 持久化存到本地。文件在:

~/.openclaw/telegram/update-offset-<accountId>.json

这一步在正常情况下没有任何问题,但结合我的操作路径,就会出事。

我之前用”旧 bot”跑过 OpenClaw,polling 正常工作过,OpenClaw 也就记录下了一个当时的 lastUpdateId。后来我换了一个全新的 Telegram bot 和 token,但 OpenClaw 仍然使用同一个 accountId(默认的 default),这个 offset 文件并不会自动清掉

关键就在这里:新创建的 Telegram bot 会从一个很小的 update_id 开始递增,而 OpenClaw 在切换到新 bot 后仍沿用了旧 bot 的轮询进度(offset)。这导致 Gateway 在 polling 时始终携带一个远大于当前更新流上界的 offset,从而使 Telegram 服务器无法返回任何更新。

表现为:polling 正常、probe 正常,但入站事件始终为空。

解决

确认这一点之后,处理就很直接了。

我先看了一眼本地 offset 文件,确认它确实存在:

Terminal window
ls -la ~/.openclaw/telegram
cat ~/.openclaw/telegram/update-offset-default.json

然后把这个文件挪走,留一份备份:

Terminal window
mv ~/.openclaw/telegram/update-offset-default.json \
~/.openclaw/telegram/update-offset-default.json.bak

接着重启 gateway:

Terminal window
openclaw gateway stop
openclaw gateway

重启之后,再给 Telegram 里的新 bot 发一条消息,channel status 里的 lastInboundAt 就会更新,日志里也能看到 Telegram inbound,消息能进到 agent 层。

总结

这次问题本质上不是 Telegram、网络或第三方 AI API 的问题,而是一次”配置流程中断 + 本地状态复用”导致的隐式状态不一致。

只要在同一个 OpenClaw accountId 下更换过 Telegram bot,无论是误操作、重配还是切换订阅,都有可能遇到同样的情况。

建议

  • 只要更换 Telegram bot,就同步清理对应 accountId 下的 offset 文件
  • 或者为不同 bot 使用不同的 accountId
  • 更理想的情况是,OpenClaw 在检测到 bot id 变化时能够主动提示或重置 offset

最小修复命令

Terminal window
mv ~/.openclaw/telegram/update-offset-default.json \
~/.openclaw/telegram/update-offset-default.json.bak 2>/dev/null || true
openclaw gateway stop
openclaw gateway

这类问题并不复杂,但如果不了解 polling offset 的持久化机制,很容易被”状态正常但没有消息”的表象带偏。记录下来,后面再遇到类似情况,基本可以快速定位。


Thanks for reading!

解决 OpenClaw Telegram Polling 收不到消息的问题

Wed Feb 18 2026
1083 words · 5 minutes