Telegram机器人发送消息示例:从HTTP请求到Python代码实战

本文提供Telegram机器人发送消息的完整示例,涵盖通过Bot API调用sendMessage的方法,以及使用Python、Node.js等编程语言的实践代码,帮助开发者快速实现机器人主动消息推送。

阅读提示涉及账号和安全设置时,请边阅读边核对当前设备界面。

引言

Telegram机器人(Bot)是自动化交互的重要工具,而发送消息是机器人最核心的功能。无论你是想实现通知推送、自动回复,还是定时消息,都需要掌握Telegram机器人发送消息的方法。本文将通过最直接的示例,带你从基础到进阶,快速学会使用Bot API发送消息。

一、准备工作:获取Bot Token和Chat ID

在发送消息之前,你需要两样关键信息:Bot TokenChat ID

  1. 获取Bot Token:通过 @BotFather 创建机器人后,即可获得一串形如 123456:ABC-DEF... 的令牌。这是调用API的唯一凭证。具体步骤可参考站内《Telegram机器人获取Token完整步骤》。
  2. 获取Chat ID:要发送消息到某个用户或群组,需要知道对方的Chat ID。最简单的获取方式:将机器人加入群组或私聊,然后访问 https://api.telegram.org/bot<你的Token>/getUpdates,在响应的JSON中找到 message.chat.id 字段。

二、核心API:sendMessage方法详解

Telegram Bot API提供了 sendMessage 方法用于发送文本消息。其基础请求格式为:

https://api.telegram.org/bot<BOT_TOKEN>/sendMessage

必须参数包括:

  • chat_id:接收者的唯一标识(用户ID或群组ID)。
  • text:要发送的文本内容,最大4096字符。

常用可选参数:

  • parse_mode:支持 HTMLMarkdownV2,用于格式化消息。
  • disable_web_page_preview:设为 true 可关闭链接预览。
  • reply_to_message_id:回复某条消息时使用。

三、Python示例:使用requests库发送消息

Python是开发Telegram机器人最常用的语言。以下示例演示了如何使用 requests 库发送消息:

import requests

BOT_TOKEN = "你的BOT_TOKEN"
CHAT_ID = "接收者的CHAT_ID"

url = f"https://api.telegram.org/bot/sendMessage"
params = {
    "chat_id": CHAT_ID,
    "text": "你好,这是来自Telegram机器人的消息!",
    "parse_mode": "HTML"
}

response = requests.post(url, json=params)
print(response.json())

如果返回 {"ok": true, ...} 则发送成功。你还可以将代码封装成函数,方便复用。

四、Node.js示例:使用axios发送消息

对于JavaScript开发者,可以使用 axiosnode-fetch 实现同样的功能。以下是一个简单的Node.js示例:

const axios = require('axios');

const BOT_TOKEN = '你的BOT_TOKEN';
const CHAT_ID = '接收者的CHAT_ID';

const url = `https://api.telegram.org/bot$/sendMessage`;
const params = {
    chat_id: CHAT_ID,
    text: 'Hello from Node.js'
};

axios.post(url, params)
  .then(response => console.log(response.data))
  .catch(error => console.error(error));

五、常见错误及解决方案

在实际开发中,你可能遇到以下错误:

  • 401 Unauthorized:Token错误或已失效。检查Token是否复制完整。
  • 400 Bad Request:参数错误,比如Chat ID格式不正确或text为空。
  • 429 Too Many Requests:发送频率过快,触发限频。需要加入等待或使用 sleep 控制。

建议在代码中捕获异常,并打印响应日志,便于调试。

六、发送消息的最佳实践

  1. 使用HTTPS:确保所有请求通过HTTPS发送,保障数据传输安全。
  2. 设置超时:在HTTP客户端中设置超时时间,避免无限等待。
  3. 控制发送频率:Telegram既有限频策略,避免频繁调用,尽量使用批量发送或合并消息。
  4. 设置Parse Mode:需要加粗、斜体或链接时,使用 HTMLMarkdownV2,提高可读性。

总结

通过本文的示例,你已经学会了如何通过HTTP请求和多种编程语言实现Telegram机器人发送消息。核心就是掌握 sendMessage 接口的调用方式,并获取正确的Token和Chat ID。接下来,你可以在此基础上添加更多功能,如图片发送、键盘按钮等。持续关注本站的机器人开发教程,获取更多实战技巧。

FAQ

下载与安装

常见问题

如何获取Telegram机器人的Chat ID?

先给你的机器人发一条消息,然后访问 https://api.telegram.org/bot<你的Token>/getUpdates,在返回的JSON中查找 message.chat.id 字段即可。如果是群组,需要先将机器人加入群组,并发送一条测试消息。

发送消息时支持哪些格式化方式?

sendMessage的parse_mode参数支持HTML和MarkdownV2两种格式化语法。HTML支持<b></b>、<i></i>、<a href=""></a>等标签;MarkdownV2支持*bold*、_italic_、[link](url)等。注意使用MarkdownV2时需要转义特殊字符。

机器人发送消息有没有频率限制?

有。Telegram对群组消息限制约为每秒20条,对广播消息限制较低。如果超出限制会返回429错误。建议发送间隔至少1秒,并处理429响应,适当重试。