# Telegram 机器人构建器
使用 Bot API (v9.4) 构建 Telegram 机器人的全面指南。涵盖 Node.js 和 Python 生态系统,提供关于身份验证、消息传递、键盘、媒体处理、支付、内联模式、Webhook 和部署的生产级模式。
## 何时使用此技能
使用此技能当:
- 从零开始构建新的 Telegram 机器人
- 将 Telegram 消息集成到现有应用程序中
- 为机器人更新设置 Webhook 或长轮询
- 使用内联键盘和回调查询创建交互式菜单
- 处理媒体(照片、视频、文档、贴纸)
- 实现 Telegram 支付或 Telegram Stars
- 构建内联模式功能
- 通过机器人管理群组、频道或论坛主题
- 将机器人部署到生产环境(Docker, PM2, 无服务器)
## 核心概念
### 身份验证
每个机器人都有一个从 [@BotFather](https://t.me/BotFather) 获取的唯一令牌。令牌格式:`123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11`。
所有 API 调用地址:`https://api.telegram.org/bot/METHOD_NAME`
bash
# .env 文件
BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
将令牌存储在环境变量中。切勿将其提交到源代码中。
### 接收更新:轮询 vs Webhook
**长轮询 (Long Polling)** (`getUpdates`) - 更简单,无需 HTTPS,适合开发环境:
javascript
// Node.js 使用 node-telegram-bot-api
const bot = new TelegramBot(process.env.BOT_TOKEN, { polling: true });
python
# Python 使用 python-telegram-bot
app = Application.builder().token(os.getenv("BOT_TOKEN")).build()
app.run_polling()
**Webhook** (`setWebhook`) - 更适合生产环境,延迟更低,需要 HTTPS(端口 443, 80, 88 或 8443):
javascript
bot.setWebHook('https://yourdomain.com/webhook', { secret_token: SECRET });
开发和小型机器人选择轮询。处理高流量的生产部署选择 Webhook。
### 消息类型与格式化
使用 `sendMessage` 发送文本。支持的解析模式:
- **HTML**: `
加粗`, `
斜体`, `
代码`, `
块
`, `
链接`, `剧透`
- **MarkdownV2**: `*加粗*`, `_斜体_`, `` `代码` ``, ` 块`, `[链接](url)`, `||剧透||`。需要转义: `_*[]()~>#+-=|{}.!`
优先使用 HTML 以简化转义。当简单格式化足够时使用 MarkdownV2。
### 键盘与交互元素
**内联键盘 (Inline Keyboard)** - 附加在消息上的按钮:
javascript
bot.sendMe