
node-telegram-bot-api
用 Node.js 快速构建 Telegram 机器人,省心省力
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 9216
技术标签
使用教程
ℹ 本教程由 AI 依据该项目 README 整理,个别步骤可能需要按你的环境微调。
环境要求
- 现代版本的 Node.js(Bun、Deno 亦可,README 声明均支持)
- 已安装 npm 包管理器
- 一个可用的 Telegram Bot Token,用于设置 BOT_TOKEN 环境变量
- 能正常访问 Telegram API 的网络环境
安装与启动步骤
-
1检查运行环境
确认已安装可用的现代版 Node.js;README 声明库也支持 Bun、Deno 等运行时。
node -v -
2安装依赖
在项目目录执行 README 给出的安装命令,把库本体装进项目。
npm install node-telegram-bot-api -
3配置机器人令牌
把 Bot Token 写入环境变量 BOT_TOKEN,因为示例代码从 process.env.BOT_TOKEN 读取。
export BOT_TOKEN=123456789:AAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -
4编写入口代码
把 README 的 Usage 示例保存为 bot.ts,包含命令、正则、消息和按钮回调。
cat > bot.ts << 'EOF' import { Bot, InlineKeyboardBuilder } from "node-telegram-bot-api"; import { run } from "node-telegram-bot-api/node"; // managed runner: wires Ctrl-C to bot.stop() const bot = new Bot(process.env.BOT_TOKEN!); // commands, regex and update types are all middleware - registration order wins bot.command("start", (ctx) => ctx.reply("Hi! Send me anything.")); bot.hears(/echo (.+)/, (ctx) => ctx.reply(ctx.match![1]!)); bot.on("message", (ctx) => ctx.reply("Pick one:", { reply_markup: new InlineKeyboardBuilder() .text("", "up") .text("", "down") .build(), }), ); // 点按 inline 按钮会以 callback_query 回来 bot.on("callback_query", async (ctx) => { await ctx.answerCallbackQuery({ text: `You tapped ${ctx.callbackQuery!.data}` }); }); await run(bot); EOF -
5启动机器人
用 Bun 运行入口文件;日志出现后机器人开始工作,Ctrl-C 即可停止。
bun bot.ts
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
BOT_TOKEN | 是 | 机器人访问令牌,示例代码从环境变量读取并传给 new Bot()。 | 123456789:AAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
如何确认成功
启动后终端无报错,在 Telegram 中给机器人发送 /start,能收到 “Hi! Send me anything.” 回复。
常见问题
Q:v1 的老代码能直接升级到 v2 吗?
A:不能。v2 是从零重写、不兼容 v1,需要按 CHANGELOG 中的 v1 -> v2 迁移指南改写代码。
Q:不想用 run() 启动可以吗?
A:可以。README 给出了核心替代方案:await bot.startPolling(),它不依赖托管运行器,在任意运行时都能跑。
Q:怎样绕过封装直接调 Telegram 接口?
A:使用 Api 类,它与线上 API 一一对应,每个 Bot API 方法对应一个方法,且只接收一个 params 对象。
Q:消息和按钮点击怎么处理?
A:都用事件方式:bot.on('message') 收普通消息,bot.on('callback_query') 收 inline 按钮点击,命令和正则也是中间件。
注意事项
- v2 与 v1 完全不兼容,升级前务必先读 CHANGELOG 迁移指南。
- 命令、正则和 update 类型都按中间件处理,注册顺序决定执行顺序。
- BOT_TOKEN 请放在环境变量中,不要硬编码进源码。
- README 声明可运行于 Bun、现代 Node.js、Deno、Cloudflare Workers 和 Vercel Functions,具体服务器端用法请参考官方文档。
核心亮点
- 完整封装 Telegram Bot API,支持所有官方方法,无需手写 HTTP 请求
- 内置长轮询和 Webhook 两种更新机制,部署灵活
- TypeScript 类型定义完善,开发时能获得良好的智能提示和错误检查
不足之处
- 文档/社区待观察
- 对较新的 Telegram API 更新有时滞后,需等待版本发布
适用场景
- 开发客服机器人或通知推送机器人,快速接入 Telegram
- 构建群组管理工具,如自动审核、定时消息
- 个人自动化助手,如 RSS 订阅提醒、任务管理
替代项目
telegraf、grammY、TeleBot
上一篇:evolution-api
下一篇:geekai
同类项目推荐
ProGPT
开源
免 Key 免费调用 ChatGPT,Python 几行代码接入对话
Reverse-Engineered Python Client for ChatGPT Web Conversations
gpt-assistant-android
开源
按音量键就能和 GPT 语音聊天,还能拍照问答
【新增智能体模式】安卓端全场景GPT助手,可用音量键唤起并进行语音交流,支持联网、拍照、···
rikkahub-sillytavern-android
开源
安卓原生酒馆客户端,角色卡一键导入,聊天省 token
安卓AI聊天端:开箱即聊,无损导入酒馆卡,缓存强省用量,手机操控,专属RP模式,防空回,主···
h2ogpt
开源
本地私有部署,让 GPT 安全处理你的文档和多媒体
Private chat with local GPT with document, images, video, etc. 100% private, Apache ···
AssistentePessoal
开源
用 Python 打造你的专属 Jarvis 语音助手
Assistente pessoal virtual desenvolvida com Python
chat_gpt_oicq
开源
在 QQ 里养一只猫娘 AI,随时陪你聊天
ChatGPT qq机器人 谁不想拥有一只可爱的猫娘呢~
Afk-Bot
开源
Minecraft 挂机防踢,自动认证,保持在线不掉线
Funcional minecraft AFK bot for servers. Anti-AFK, Auto-Auth, Microsoft/Offline acco···
QAmodel-for-Retrievalchatbot
开源
中文客服问答,多种检索模型一键切换,快速搭建基线系统。
客服机器人,Chinese Retreival chatbot(中文检索式机器人)用到的一些QA模型,基于tf-id···
maxapi
开源
用 Python 快速开发 MAX 聊天机器人,异步高效省心
Библиотека по разработке чат-ботов для мессен···