1. 首页
  2. 使用指南
  3. 快速入门
  4. 通信协议

通信协议

  • 发布于 2026-08-16
  • 7 次阅读

官方 Node.js SDK 已封装本页协议。其他语言可以按照以下 JSON 帧实现 WebSocket 客户端或服务端。

API 请求

{
  "type": "action",
  "id": "1",
  "action": "get_group_list",
  "params": {
    "self_id": 123456789
  }
}
字段 说明
type 固定为 action
id 请求标识;需要响应时必须提供
action API 名称
params API 参数对象

API 响应

成功:

{
  "type": "action_result",
  "id": "1",
  "ok": true,
  "data": {}
}

失败:

{
  "type": "action_result",
  "id": "1",
  "ok": false,
  "error": "bot 未在线"
}

SDK使用 id 关联请求。默认超时为 30 秒,媒体、红包、头像和批量任务等 API 会设置更长超时。like_qzone_feedunlike_qzone_feed 是无需响应的 API,SDK发送时不附带 id

同一连接上的 action 会并发执行,当前每连接最多同时运行 16 个;响应顺序不保证与请求顺序一致。SDK根据 id 匹配 Promise,因此调用方可以安全地使用 Promise.all。连续 await 仍会由调用方形成串行。

事件帧

{
  "type": "event",
  "data": {
    "self_id": 123456789,
    "post_type": "group_message"
  }
}

data.post_type 决定事件类型。事件结构见事件参考

心跳

正向 Node.js SDK每 30 秒发送应用层心跳:

{ "type": "ping" }

萌卡NT返回:

{ "type": "pong" }

反向模式同时使用 WebSocket Ping/Pong 控制帧维持连接。自定义实现应正确响应控制帧。

API 作用域

账号管理类 API 使用 self_id,其余 Bot API 通常使用 self_id。除无需 Bot 的全局 API 外,调用时必须满足:

  • Bot 属于插件服务绑定的节点。
  • Bot 当前在线。
  • 参数中包含有效的 self_id

不满足条件时会收到 ok: falseaction_result