Telegram机器人报错Conflict: terminated by other getUpdates request如何解决
报错根因
这个409 Conflict错误是Telegram Bot API的内置限制导致的:同一个Bot Token同一时间仅允许一个客户端拉取更新,不管是使用长轮询(getUpdates模式)还是Webhook模式,都不允许多个实例同时占用更新拉取权限。
你查询的getWebhookInfo接口返回url为空,说明你没有配置Webhook,冲突完全来自多个同时运行的长轮询Bot实例。
修复步骤
- 排查所有运行该Bot的环境,包括本地测试终端、服务器后台进程、Docker容器、Serverless实例等,确认是否有未终止的旧Bot进程:
- Linux服务器可执行命令
ps aux | grep 你的bot启动脚本名查询相关进程,找到多余进程后执行kill <进程ID>终止 - Docker部署场景执行
docker ps查询是否启动了多个同Bot镜像的容器,停掉多余实例即可
- Linux服务器可执行命令
- 如果清理完所有多余进程后仍然报错,可调用一次接口
https://api.telegram.org/bot<你的BotToken>/getUpdates?offset=-1,主动拉取一次最新更新强制中断之前残留的长连接 - 确认仅保留一个Bot实例后,重启当前Bot服务即可消除报错
注意:如果后续需要切换为Webhook模式,必须先关闭所有长轮询实例,再调用setWebhook接口配置回调地址,两种模式同时开启也会触发相同的冲突错误
内容的提问来源于stack exchange,提问作者Nodirbek Khajiev
相关产品推荐
相关产品推荐

