跳转到主要内容

处理 Bot API 返回结果、错误与重试

MPChat Bot API 所有方法共享同一响应信封。学会读 ok/result/description、各错误码含义,以及哪些错误该重试。

永远先判断 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 业务错误

被业务层拒绝——查阅 description。

501

未实现

当前不支持该方法(见方法矩阵)。

鉴权有效时,未知 API 方法返回 JSON 404,已知接口使用不支持的 HTTP 请求方式返回 JSON 405。鉴权和限流可能先返回 401 或 429。

处理 409

调用 getWebhookInfo 确认 Webhook 配置。请勿自行执行 deleteWebhook——它是高危受控操作。请联系维护者处理冲突。

错误处理示例

async function readBotResponse(res) {
const data = await res.json().catch(() => null);
if (!res.ok || data?.ok !== true) {
const error = new Error("MPChat Bot API request failed");
error.httpStatus = res.status;
error.apiCode = data?.error_code;
throw error;
}
return data.result;
}

重试策略

  • 遇到 429 时先降低请求速率,再按有上限的指数退避重试。若响应给出等待时间,按该时间等待。

  • 请求超时、连接断开或返回 5xx 后,发送操作可能已经成功。重放写请求前先用自己的操作记录核对结果。重复调用 sendMessage 可能发出两条消息。

  • 遇到 400、401、403,先修正参数、凭证或权限。

  • 遇到 409,按下方的轮询与 Webhook 指南检查当前投递模式。

相关文章

错误上报中绝不记录完整 token 或敏感字段。脱敏规则见生产检查清单。

这是否解答了您的问题?