机器人身份
通过 BotFather 创建。它代表你的服务与用户、群组或频道进行交互。
SafeW Bot API 是一组基于 HTTPS 的机器人接口。你的程序通过 Bot Token 调用方法,以 JSON 接收结果,并通过长轮询或 Webhook 获取新消息。
Bot 不是一个真人账号,而是由你的程序控制的服务身份。Token 把一次 API 请求与具体 Bot 关联起来。
通过 BotFather 创建。它代表你的服务与用户、群组或频道进行交互。
每个 Bot 的唯一调用凭证,放在请求 URL 中。它只能保存在可信的服务端。
发送 HTTPS 请求、处理更新、保存业务状态,并决定 Bot 下一步做什么。
在 SafeW 中与 Bot 互动
长轮询获取或 Webhook 推送
调用 sendMessage 等方法
建议先验证最短链路:创建 Bot、拿到 Token、确定 chat_id,然后调用 sendMessage。
向 BotFather 发送 /newbot,按照提示设置 Bot 名称与用户名。
将 Token 放入服务端环境变量或密钥管理服务,不要写进前端代码和 Git 仓库。
chat_id 表示目标用户、群组或频道,是发送消息时的必要参数。
以 JSON 提交 chat_id 与 text。成功后,result 中会返回完整 Message 对象。
curl -X POST "https://api.safew.bot/bot{YOUR_TOKEN}/sendmessage" \
-H "Content-Type: application/json" \
-d '{
"chat_id": 123456789,
"text": "Hello from SafeW",
"parse_mode": "HTML"
}'
大多数方法支持 GET 和 POST;发送媒体文件时使用 POST 与 multipart/form-data。
https://api.safew.bot/bot{token}/{method}
方法名使用小写形式。
ok: true 时读取 result;失败时读取 error_code、description 与 trace_id。
// 成功
{
"ok": true,
"result": { "message_id": 100 }
}
// 失败
{
"ok": false,
"error_code": 400,
"description": "Bad Request: chat not found",
"trace_id": "abc123"
}
URL 中包含 Token,因此不要把完整请求地址写入公开日志。Token 泄露后应立即通过 BotFather 撤销并重新生成。
两种模式不能同时使用。开发调试可先用长轮询,持续运行的生产服务通常更适合 Webhook。
你的服务主动请求更新。建议 timeout 设为约 30 秒,并用“已处理的 update_id + 1”作为下一次 offset。
SafeW 主动把更新推送到你的 HTTPS 地址。可以设置 secret_token,用于验证请求来源。
curl -X POST "https://api.safew.bot/bot{YOUR_TOKEN}/setwebhook" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-server.com/webhook",
"secret_token": "YOUR_WEBHOOK_SECRET",
"allowed_updates": ["message", "callback_query"]
}'
Bot API 不只是“发文字”。它覆盖媒体、消息编辑、Webhook、聊天与成员管理、邀请链接和交互回调。
| 上传类型 | 请求方式 | 限制或说明 |
|---|---|---|
| 图片 | multipart/form-data |
最大 10 MB,也可复用 file_id |
| 文档 | multipart/form-data |
最大 100 MB,也可复用 file_id |
| 媒体组 | multipart/form-data |
一次最多 10 个文件 |
不要把所有失败都当成同一种错误。认证、权限、限流和服务异常需要不同的处理策略。
| 错误码 | 含义 | 建议处理 |
|---|---|---|
400 |
请求参数错误 | 检查必填字段、类型与目标 chat_id |
401 |
Token 无效或过期 | 停止重试并检查凭证 |
403 |
Bot 无权执行操作 | 检查聊天权限和成员状态 |
404 |
方法或资源不存在 | 检查 URL、方法名与目标资源 |
429 |
请求过于频繁 | 指数退避,避免立即高频重试 |
500 |
服务端内部错误 | 记录 trace_id,稍后重试 |
Token 仅保存在服务端;Webhook 使用 HTTPS 与 secret_token;日志隐藏 Token;429 使用退避策略;关键失败记录 trace_id。