跳至主要內容

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 的近期投遞錯誤,並核對服務端的接收和處理記錄。

相關文章

是否回答了您的問題?