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

无模板部署Telegram Node.js Bot至Vercel遇504超时问题求助

解决Telegram Bot在Vercel部署的504超时问题

一、Vercel部署适配方案(基于node-telegram-bot-api)

Vercel的Serverless函数是事件驱动、短生命周期架构,默认的长轮询(getUpdates)模式会导致超时,必须切换为Webhook模式:

  • 修改代码启用Webhook
    替换长轮询初始化逻辑,绑定Vercel的API路由处理请求,示例代码:

    const TelegramBot = require('node-telegram-bot-api');
    const token = process.env.TELEGRAM_BOT_TOKEN;
    // 禁用polling模式
    const bot = new TelegramBot(token);
    
    // 通过环境变量传入Vercel项目域名
    const webhookUrl = process.env.WEBHOOK_BASE_URL;
    bot.setWebHook(`${webhookUrl}/api/bot`);
    
    // Vercel API路由处理函数
    module.exports = async (req, res) => {
      if (req.method === 'POST') {
        bot.processUpdate(req.body);
        res.status(200).send('OK');
      } else {
        res.status(405).send('Method Not Allowed');
      }
    };
    
  • Vercel项目配置

    • 在项目设置的「环境变量」中添加TELEGRAM_BOT_TOKEN(你的Bot令牌)和WEBHOOK_BASE_URL(Vercel分配的项目域名,如https://your-bot.vercel.app)
    • 将上述代码保存为api/bot.js或pages/api/bot.js,Vercel会自动识别为API端点
  • 关键注意事项

    • 绝对不能启用polling: true,否则函数会因持续占用连接触发超时
    • 在Vercel「Functions」设置中,将函数超时调至免费版最大值(10秒),确保请求处理在时限内完成
    • 部署后可调用https://api.telegram.org/bot<你的令牌>/getWebhookInfo验证Webhook状态

二、替代免费托管平台推荐(适配小型Bot)

如果Vercel的Serverless限制难以适配,可选择更适合长期运行服务的平台:

  • Render:提供免费Web服务(非Serverless),支持Node.js,每月100小时运行时长,适配长轮询或Webhook模式
  • Railway:免费层提供基础资源,支持Node.js部署,环境持久稳定,适合小型Bot长期运行
  • Fly.io:免费层资源足够支撑小型Bot,支持容器化部署,配置简洁
  • Heroku:免费版每月550小时运行时长,搭配自动休眠机制,可满足小型Bot需求

三、常见排查点

  • 确认环境变量中的Bot令牌、Webhook URL配置正确,避免硬编码敏感信息
  • 检查Vercel函数日志,定位超时环节(如是否为Telegram API请求超时)
  • 确保Webhook URL可公开访问,无防火墙或Vercel路由规则阻断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:32:13