跳转到主要内容

Bot 上线检查清单:安全、重试、日志与功能验证

上线前检查 Bot token、Webhook 安全、重试和日志,并在测试 Bot 上验证更新投递、按钮回调和屏蔽私聊。

本文中的 DocOnly、L0–L3 用于说明本指南的测试执行约束与操作风险,不代表接口是否受支持。接口支持状态应另查官方文档;修改消息、会话或投递配置前,请核对目标和恢复方式。

上线前逐项打勾。核对 token 管理、事件投递和重试,以及高风险方法的操作约束。


总览

按关注点分组的上线前清单,配合末尾的冒烟测试一起用。

Token 安全

  • token 仅存密钥管理 / 环境变量,绝不进仓库。

  • 生产与测试 Bot 分离 token。

  • CI/CD 注入密钥;不打印到 build log。

  • 制定 token 泄露轮换 SOP。

Webhook 安全

  • HTTPS 公网 URL。

  • 配置 secret_token 并校验 X-MpChat-Bot-Api-Secret-Token 头。

  • Webhook endpoint 不暴露管理接口。

  • 先在测试环境验证,再对生产执行 setWebhook。

限流与重试

  • 客户端限流 ≤ 每 token 每秒 30 次。

  • 遇到 429 时退避。遇到 500 或请求超时时,先确认该操作能安全重试,再决定是否重发。遇到 400/401/403 时先排查错误。遇到 409 时检查是否启用了 Webhook。

  • 批量操作控制并发。

日志脱敏

  • 日志不出现 token、完整 initData 或用户敏感字段。

  • 错误上报配置脱敏规则。

  • 访问日志不记录含 secret 的完整 webhook URL。

高危 API(DocOnly,需审批 + 回滚方案)

  • logOut、leaveChat、deleteMessage(s)、banChatMember、setWebhook、deleteWebhook。

  • 部署流水线不包含上述方法的自动调用。

  • 运维手册记录审批人与回滚步骤。

冒烟测试

  1. getMe——token 有效。

  2. getWebhookInfo——URL 正确。

  3. 模拟用户消息——Webhook 收到 update。

  4. sendMessage——回复成功。

  5. (如有)initData 验签通过。

  6. 用测试 Bot 模拟 Webhook 投递失败,确认重投沿用原 update_id,并核对业务动作只执行一次。

  7. 如使用回调按钮,确认首次应答成功、重复应答返回 HTTP 400。

  8. 在测试私聊中屏蔽 Bot,确认发送、转发、复制均返回 HTTP 403。解除屏蔽后,确认新消息发送成功。

为什么会重复投递?待投递数为 0 代表什么?

  • Webhook 重投沿用原 update_id。校验请求后,先按 Bot 和 update_id 组成的唯一键持久化更新,再返回 HTTP 2xx(如 200 或 204)。业务处理也要做到幂等,避免任务重跑时重复回复或重复修改状态。

  • 普通更新最多投递 24 小时。按钮回调更新最多投递 150 秒,answerCallbackQuery 另有 300 秒应答窗口。

  • pending_update_count=0 表示当前没有待投递更新。要确认哪些更新到达了服务,请查看 getWebhookInfo 的最近投递错误,并核对服务端的接收和处理记录。

相关文章

这是否解答了您的问题?