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

Telegram Bot无法启动求助:Node.js+Telegraf开发启动异常

问题排查与解决方案

可能的原因分析

结合你的操作步骤、代码和报错情况,主要有两个核心原因:

1. Telegraf 3.39版本与高版本Node.js兼容性冲突

Telegraf 3.x是2020年的旧版本,其依赖的第三方包(如旧版node-fetch、abort-controller)无法适配Node.js v18+(包括你使用的v20.11.0)的内置API变更;即使降级到v16.10.0,该Node.js版本也存在部分细节与旧版Telegraf不兼容的问题。

2. 机器人Token无效或格式错误

你代码中写的'my token'如果未替换为BotFather提供的有效Token,会触发401 Unauthorized错误——这是Telegram Bot API最常见的启动报错之一,与Node.js版本无关。


分步解决方案

第一步:验证Token有效性

  1. 打开Telegram,向@BotFather发送/mybots,选择你的机器人,确认Token格式为123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
  2. 将代码中的'my token'替换为实际有效Token,确保无多余空格或引号错误

第二步:解决版本兼容性问题

方案A:升级Telegraf到最新稳定版(推荐)

Telegraf v4.x完全支持Node.js v16+,包括v20.11.0,操作步骤:

  1. 卸载旧版本:
npm uninstall telegraf
  1. 安装最新版:
npm install telegraf
  1. 修改index.js代码(v4.x API有调整):
const { Telegraf } = require('telegraf')
const bot = new Telegraf('你的有效机器人Token')

// v4.x使用ctx(上下文对象)代替原msg参数
bot.command('start', (ctx) => {
    console.log(ctx.message); // 打印收到的消息内容
})

bot.launch()

// 添加优雅退出处理(可选但推荐)
process.once('SIGINT', () => bot.stop('SIGINT'))
process.once('SIGTERM', () => bot.stop('SIGTERM'))
  1. 重新执行npm start启动项目

方案B:降级Node.js到兼容版本

如果坚持使用Telegraf 3.39,可将Node.js降级到v14.x(如v14.21.3)或v16.x稳定版(如v16.20.2),通过nvm快速切换:

  1. 安装nvm(未安装的话)
  2. 安装指定版本:
nvm install 16.20.2
  1. 切换到该版本:
nvm use 16.20.2
  1. 删除旧依赖文件并重新安装:
rm -rf node_modules package-lock.json
npm install
  1. 执行npm start启动项目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:35:35