在Telegram生态中,机器人(Bot)是实现自动化交互的核心,而发送消息接口则是Bot与用户沟通的桥梁。通过调用接口,你可以让Bot主动推送通知、回复用户、甚至执行定时任务。本文将从零开始,手把手教你使用Telegram机器人发送消息接口,涵盖API调用、参数详解、代码示例及常见问题。
什么是Telegram机器人发送消息接口?
Telegram Bot API提供了多种方法来与用户交互,其中sendMessage是最基础、最常用的接口。它允许你的Bot向指定的聊天(用户或群组)发送文本消息。接口的HTTP请求格式为:
https://api.telegram.org/bot<token>/sendMessage该接口支持GET和POST请求,推荐使用POST以避免URL长度限制。
调用前置准备:获取Token和Chat ID
要调用接口,你需要两个关键信息:
- Bot Token:从BotFather创建机器人后获取,形如
123456:ABC-...。 - Chat ID:用户或群组的唯一标识,可以通过发送消息给Bot后,调用
getUpdates方法获取,或者查看群组信息。
具体步骤如下:
- 在Telegram中搜索
@BotFather,创建新机器人并获取Token。 - 将Bot添加到目标群组,或在用户聊天中发送任意消息。
- 使用
getUpdates接口获取更新,从中读取chat对象中的id字段。
调用sendMessage接口:方法与参数
sendMessage接口的核心参数如下:
chat_id:必填,接收消息的聊天ID(用户ID或群组ID)。text:必填,消息文本,支持最大4096个字符。parse_mode:可选,支持HTML或MarkdownV2,用于格式化文本。disable_notification:可选,设为true可静默发送。reply_to_message_id:可选,回复特定消息。
示例参数(JSON):
{"chat_id": 123456789, "text": "你好,这是来自Telegram机器人的消息!", "parse_mode": "HTML"}代码示例:Python与curl实现
使用Python(requests库):
import requests
TOKEN = "你的BOT_TOKEN"
chat_id = "123456789"
text = "Hello from Bot"
url = f"https://api.telegram.org/bot/sendMessage"
payload = {"chat_id": chat_id, "text": text}
resp = requests.post(url, json=payload)
print(resp.json())使用curl命令:
curl -X POST "https://api.telegram.org/bot<TOKEN>/sendMessage" -d "chat_id=123456789&text=Hello"常见错误与解决方案
- 404 Not Found:Token错误或Bot不存在。
- 400 Bad Request:参数不正确,尤其是
chat_id或text长度超限。 - 403 Forbidden:Bot没有权限向该用户发送消息(例如用户未与Bot开始对话)。
- 429 Too Many Requests:触发速率限制,需等待后重试。
高级应用:定时发送与消息格式化
你可以利用sendMessage实现:
- 定时推送:使用
while循环+time.sleep,或搭配外部定时任务(如cron)。 - 群发消息:遍历所有用户ID,依次调用接口。
- 消息格式化:通过
parse_mode传递HTML标签(如<b>加粗</b>)或Markdown语法。
安全注意事项
- 保护好Token,任何拥有Token的人都能控制你的Bot。
- 不要将Token硬编码在公开代码中,建议使用环境变量。
- 对用户的输入进行过滤,防止注入攻击(如恶意HTML)。
- 设置Webhook时确保使用HTTPS。
总结
Telegram机器人发送消息接口是自动化交互的基石。掌握sendMessage的调用方法,你就可以构建通知系统、客服机器人、群发助手等应用。希望本文能帮助你快速上手,创建属于自己的自动化Bot。