永遠先判斷 ok。之後再讀 result(成功)或 description + error_code(失敗)。
總覽
所有方法回傳同一信封,你只需寫一個解析器並到處複用。
// 成功
{ "ok": true, "result": { ... } }// 失敗
{ "ok": false, "description": "可讀的錯誤訊息", "error_code": 401 }
錯誤碼
碼 | 含義 | 常見原因與處理 |
400 | 請求無效 | 缺欄位或訊息不存在——修正參數。 |
401 | 未授權 | token 無效或已 revoke——檢查 token。 |
403 | 禁止 | 權限不足或訊息歸屬不符。 |
409 | 衝突 | Webhook 啟用時呼叫了 getUpdates。 |
429 | 限流 | 超過 30 req/s——退避後重試。 |
500 | 伺服端錯誤 | 平台臨時故障——可重試。 |
50001 | MP 業務錯誤 | 被業務層拒絕——查閱 |
501 | 未實作 | 目前不支援該方法(見方法矩陣)。 |
處理 409
呼叫 getWebhookInfo 確認 Webhook 配置。請勿自行執行 deleteWebhook——它是高危受控操作。請聯絡維護者處理衝突。
錯誤處理範例
const data = await res.json();
if (!data.ok) {
console.error({ error_code: data.error_code, description: data.description });
throw new Error(`Bot API ${data.error_code}: ${data.description}`);
}
return data.result;
重試策略
429、500:帶上限的指數退避重試。
400、401、403:不重試——修正輸入或權限。
409:先理清輪詢與 Webhook 的互斥。
相關文章
錯誤上報中絕不記錄完整 token 或敏感欄位。脫敏規則見生產檢查清單。
