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

Node.js Telegram Bot部署Render遇409 ETELEGRAM冲突错误如何解决?

解决Telegram Bot部署在Render上的409冲突错误

这个ETELEGRAM: 409 Conflict错误的核心原因是同一个Telegram Bot的getUpdates接口被多个进程同时调用,导致Telegram服务器终止了重复请求。针对你在Render上的情况,按以下步骤排查修复:

1. 检查并终止Render上的多实例进程

  • 登录Render控制台,找到你的Bot服务,查看当前运行的实例数量。Free tier服务可能因部署重试、自动重启等原因残留多个运行中的Bot进程。
  • 手动停止所有运行实例,等待几秒后重新启动单个实例,确保只有一个Bot进程在轮询Telegram API。

2. 替换Polling模式为Webhook

Polling模式在服务器环境下容易出现多实例冲突,推荐改用Webhook模式,由Telegram主动推送更新到你的服务:

  • 修改Bot代码,禁用Polling并配置Webhook:
    const TelegramBot = require('node-telegram-bot-api');
    const express = require('express');
    const token = '你的Bot Token';
    const bot = new TelegramBot(token, { polling: false });
    
    // 设置Webhook,替换为你的Render服务域名
    const webhookUrl = `https://你的服务名.onrender.com/bot${token}`;
    bot.setWebHook(webhookUrl);
    
    // 用Express接收Telegram的推送请求
    const app = express();
    app.use(express.json());
    
    app.post(`/bot${token}`, (req, res) => {
      bot.processUpdate(req.body);
      res.sendStatus(200);
    });
    
    // 监听Render分配的端口
    app.listen(process.env.PORT || 3000, () => {
      console.log('Bot服务启动成功');
    });
    
  • 确保Render服务的启动命令正确,且代码中使用process.env.PORT获取端口(Render会动态分配端口)。

3. 清理Telegram端的残留会话

如果之前配置过Webhook或有残留的Polling会话,先手动清除:

  • 执行以下命令(替换为你的Bot Token):
    curl https://api.telegram.org/bot<你的Bot Token>/deleteWebhook
    
  • 执行完成后再重启Render上的Bot服务。

4. 检查Render的部署配置

  • 查看package.json中的start脚本,确保只启动单个Bot进程,避免使用pm2 start等可能启动多进程的命令(Free tier资源有限,且容易引发冲突)。
  • 部署时确认Render没有启用“自动扩展”功能(Free tier默认不会,但需检查),防止自动启动多实例。

内容的提问来源于stack exchange,提问作者Abdulloh Of

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:58:12