Telegram Bot API
Bot API 可向个人、群组或频道发送消息。本文依据 Telegram 官方 Bot API 整理,核验日期为 2026-09-08;未使用真实 Bot 执行发送验证。
- 可在 Telegram 中与
@BotFather对话。 - 目标用户已主动与机器人开始会话,或机器人已加入目标群组/频道。
- 已取得目标
chat_id,频道也可按平台支持情况使用公开用户名。
- 向
@BotFather发送/newbot,按提示创建机器人。 - 保存 Bot Token,不要把它放进客户端代码。
- 让目标用户向机器人发送消息,或将机器人加入目标群组/频道。
- 通过更新记录或自己的业务数据取得
chat_id。 - 调用
sendMessage发送最小文本。
| 字段 | 必需 | 说明 |
|---|---|---|
BOT_TOKEN | 是 | @BotFather 生成的机器人令牌 |
CHAT_ID | 是 | 个人、群组或频道标识 |
JavaScript 示例需要 Node.js 20 或更新版本;Python 示例需要安装 requests。
curl -X POST 'https://api.telegram.org/botBOT_TOKEN/sendMessage' \ -H 'Content-Type: application/json' \ -d '{"chat_id":"CHAT_ID","text":"通知渠道连通性测试"}'const response = await fetch( `https://api.telegram.org/bot${process.env.BOT_TOKEN}/sendMessage`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ chat_id: process.env.CHAT_ID, text: '通知渠道连通性测试', }), },);
if (!response.ok) throw new Error(`HTTP ${response.status}`);console.log(await response.json());import osimport requests
response = requests.post( f"https://api.telegram.org/bot{os.environ['BOT_TOKEN']}/sendMessage", json={"chat_id": os.environ["CHAT_ID"], "text": "通知渠道连通性测试"}, timeout=15,)response.raise_for_status()print(response.json())检查响应中的 ok 是否为 true,并保存返回的消息与聊天标识用于排查。目标客户端还应实际看到测试消息。
- Bot Token 泄露后立即通过
@BotFather撤销并重新生成。 - 群组或频道只授予机器人发送消息所需的权限。
- 不记录完整 Token,也不要把含 Token 的请求 URL 写入访问日志。
chat not found:机器人尚未进入目标会话,或 chat_id 不正确。
机器人无法主动私聊用户:用户通常需要先与机器人开始会话。
格式解析失败:使用 Markdown 或 HTML 时检查转义规则;先退回纯文本定位问题。