@zhin.js/adapter-qq 2.0.11 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +117 -9
  3. package/lib/adapter.d.ts +4 -1
  4. package/lib/adapter.d.ts.map +1 -1
  5. package/lib/adapter.js +12 -1
  6. package/lib/adapter.js.map +1 -1
  7. package/lib/bot.d.ts +14 -1
  8. package/lib/bot.d.ts.map +1 -1
  9. package/lib/bot.js +145 -17
  10. package/lib/bot.js.map +1 -1
  11. package/lib/gateway-config.d.ts +14 -0
  12. package/lib/gateway-config.d.ts.map +1 -0
  13. package/lib/gateway-config.js +32 -0
  14. package/lib/gateway-config.js.map +1 -0
  15. package/lib/group-at-normalize.d.ts +8 -0
  16. package/lib/group-at-normalize.d.ts.map +1 -0
  17. package/lib/group-at-normalize.js +71 -0
  18. package/lib/group-at-normalize.js.map +1 -0
  19. package/lib/inbound-normalize.d.ts +11 -0
  20. package/lib/inbound-normalize.d.ts.map +1 -0
  21. package/lib/inbound-normalize.js +47 -0
  22. package/lib/inbound-normalize.js.map +1 -0
  23. package/lib/index.d.ts +2 -0
  24. package/lib/index.d.ts.map +1 -1
  25. package/lib/index.js +37 -17
  26. package/lib/index.js.map +1 -1
  27. package/lib/outbound-markdown.d.ts +12 -0
  28. package/lib/outbound-markdown.d.ts.map +1 -0
  29. package/lib/outbound-markdown.js +78 -0
  30. package/lib/outbound-markdown.js.map +1 -0
  31. package/lib/outbound-media.d.ts +9 -0
  32. package/lib/outbound-media.d.ts.map +1 -0
  33. package/lib/outbound-media.js +50 -0
  34. package/lib/outbound-media.js.map +1 -0
  35. package/lib/sdk-version.d.ts +8 -0
  36. package/lib/sdk-version.d.ts.map +1 -0
  37. package/lib/sdk-version.js +19 -0
  38. package/lib/sdk-version.js.map +1 -0
  39. package/lib/types.d.ts +22 -0
  40. package/lib/types.d.ts.map +1 -1
  41. package/package.json +9 -9
  42. package/src/adapter.ts +18 -1
  43. package/src/bot.ts +176 -18
  44. package/src/gateway-config.ts +48 -0
  45. package/src/group-at-normalize.ts +78 -0
  46. package/src/inbound-normalize.ts +57 -0
  47. package/src/index.ts +39 -17
  48. package/src/outbound-markdown.ts +93 -0
  49. package/src/outbound-media.ts +57 -0
  50. package/src/sdk-version.ts +21 -0
  51. package/src/types.ts +22 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @zhin.js/adapter-qq
2
2
 
3
+ ## 3.0.0
4
+
5
+ ### Patch Changes
6
+
7
+ - e62c23a: fix: update pnpm-lock.yaml and vitest configurations- Added new dependencies for the full-bot example, including multiple Zhin.js adapters and TypeScript.- Updated the test-bot example to include '@puniyu/system-info' and other necessary packages.- Modified vitest configuration to include additional module directories for better dependency resolution.- Enhanced documentation for the KOOK adapter, including new features like typing indicators and system notifications.- Removed unused test assets and scripts from the test-bot example to streamline the project.
8
+ - Updated dependencies [65f4b0a]
9
+ - @zhin.js/host-api@1.0.0
10
+ - zhin.js@2.0.0
11
+ - @zhin.js/host-router@1.0.0
12
+
3
13
  ## 2.0.11
4
14
 
5
15
  ### Patch Changes
package/README.md CHANGED
@@ -22,7 +22,9 @@ export default defineConfig({
22
22
  name: 'my-qq-bot',
23
23
  appid: process.env.QQ_APPID,
24
24
  secret: process.env.QQ_SECRET,
25
- mode: 'websocket',
25
+ mode: 'middleware',
26
+ application: 'koa',
27
+ webhookPath: '/qq/webhook',
26
28
  sandbox: true,
27
29
  data_dir: './data',
28
30
  },
@@ -41,19 +43,93 @@ const config: QQBotConfig = {
41
43
  name: 'my-qq-bot',
42
44
  appid: 'YOUR_APPID', // 机器人 AppID(必需,小写 appid)
43
45
  secret: 'YOUR_SECRET', // 机器人 Secret(必需)
44
- mode: 'websocket', // 接收模式,见 qq-official-bot ReceiverMode
46
+ mode: 'middleware', // websocket | webhook | middleware(推荐挂 host-router)
47
+ application: 'koa', // middleware 模式必填
48
+ webhookPath: '/qq/webhook', // middleware 回调路径(完整 URL: {host}:8086/qq/webhook,无 /api 前缀)
49
+ // mode: 'webhook', // 独立 HTTP 端口模式
50
+ // port: 8087,
51
+ // path: '/qq/webhook',
45
52
  platform: 'qq', // 'qq' | 'qzone' 平台类型
46
- intents: [ // 事件订阅意图
53
+ intents: [ // 事件订阅意图(qq-official-bot ^1.2 使用 GROUP_AND_C2C_EVENT)
54
+ 'GROUP_AND_C2C_EVENT', // QQ 群 @ 消息 + C2C 私聊(必需)
47
55
  'GUILDS',
48
56
  'GUILD_MEMBERS',
57
+ 'GUILD_MESSAGES', // 频道私域 @ 消息(公域用 PUBLIC_GUILD_MESSAGES)
49
58
  'DIRECT_MESSAGE',
50
- 'GROUP_AT_MESSAGE_CREATE'
59
+ 'PUBLIC_GUILD_MESSAGES',
51
60
  ],
52
61
  data_dir: './data', // 数据目录(可选)
53
62
  sandbox: false // 是否为沙箱环境(可选)
54
63
  }
55
64
  ```
56
65
 
66
+ ## 入站模式(二选一)
67
+
68
+ | 模式 | 配置 | 说明 |
69
+ |------|------|------|
70
+ | **middleware**(推荐) | `mode: middleware` + `application: koa` + `webhookPath` | 挂在 `@zhin.js/host-router`,与 Host **同端口**(如 `8086`) |
71
+ | **webhook**(独立端口) | `mode: webhook` + `port` + `path` | `qq-official-bot` 自建 HTTP 服务,需单独暴露端口 |
72
+ | websocket | `mode: websocket` | 长连接,无需公网回调 |
73
+
74
+ ### 自定义网关(qq-official-bot ^1.2.2)
75
+
76
+ 经代理或私有部署时,可覆盖官方 token / gateway 接口:
77
+
78
+ ```yaml
79
+ # WebSocket 入站:gatewayUrl 与 accessTokenUrl 均生效
80
+ - context: qq
81
+ name: my-qq-bot
82
+ mode: websocket
83
+ appid: ${QQ_APPID}
84
+ secret: ${QQ_SECRET}
85
+ accessTokenUrl: https://your-proxy.example.com/app/getAppAccessToken
86
+ gatewayUrl: https://your-proxy.example.com/gateway/bot
87
+ intents:
88
+ - GROUP_AND_C2C_EVENT
89
+ ```
90
+
91
+ ```yaml
92
+ # middleware / webhook:仅 accessTokenUrl 影响出站鉴权(入站走 HTTP 回调,不用 gateway)
93
+ - context: qq
94
+ name: my-qq-bot
95
+ mode: middleware
96
+ application: koa
97
+ webhookPath: /qq/webhook
98
+ accessTokenUrl: https://your-proxy.example.com/app/getAppAccessToken
99
+ ```
100
+
101
+ - `gatewayUrl` 可为完整 URL 或相对路径(默认 `/gateway/bot`,相对 `api.sgroup.qq.com` baseURL)
102
+ - 连接时日志会输出 `op: qq_gateway` 及实际使用的地址
103
+
104
+ ### middleware 回调地址(test-bot 默认)
105
+
106
+ 1. 确保 `plugins` 含 `@zhin.js/host-router`(test-bot 已启用)
107
+ 2. `zhin.config.yml` 示例见上文 `webhookPath: /qq/webhook`
108
+ 3. 在 [QQ 开放平台](https://q.qq.com/bot) → **开发 → 回调配置** 填写:
109
+
110
+ ```
111
+ https://<你的公网域名>/qq/webhook
112
+ ```
113
+
114
+ 本地:`http://127.0.0.1:8086/qq/webhook`(经 ngrok / cloudflared 暴露公网即可)。
115
+
116
+ > **注意**:Host 的 Console/API 走 `/api/*`(如 `/api/stats`),但适配器 webhook 直接挂在 Router 根路径,**不要**加 `/api` 前缀;填 `/api/qq/webhook` 会命中 Bearer 鉴权,QQ 平台回调会 401。
117
+
118
+ 4. 勾选事件:**群事件**、**C2C 私聊**、**频道事件**(按需)
119
+ 5. 保存时平台会发 `SIGN_VERIFY` 签名校验,适配器会自动响应
120
+
121
+ > Host 对含 `/webhook` 的路径**免 Bearer 鉴权**,由 QQ 的 `X-Signature-Ed25519` 验签。
122
+
123
+ ### webhook 独立端口
124
+
125
+ ```yaml
126
+ mode: webhook
127
+ port: 8087
128
+ path: /qq/webhook
129
+ ```
130
+
131
+ 回调填 `https://<域名>:8087/qq/webhook`(或反代到该端口)。
132
+
57
133
  ## 获取配置信息
58
134
 
59
135
  ### 1. 注册 QQ 机器人
@@ -79,7 +155,7 @@ const config: QQBotConfig = {
79
155
  - `GUILD_MEMBERS` - 成员变动
80
156
  - `GUILD_MESSAGES` - 频道消息
81
157
  - `DIRECT_MESSAGE` - 私信消息
82
- - `GROUP_AT_MESSAGE_CREATE` - 群聊 @ 消息
158
+ - `GROUP_AND_C2C_EVENT` - QQ @ 消息 + C2C 私聊(`GROUP_AT_MESSAGE_CREATE` / `C2C_MESSAGE_CREATE`)
83
159
  - `INTERACTION` - 互动事件
84
160
 
85
161
  ## 使用示例
@@ -185,6 +261,25 @@ addCommand(new MessageCommand('embed')
185
261
  - ✅ Markdown 消息
186
262
  - ✅ 消息引用(回复)
187
263
 
264
+ ### AI 出站 Markdown(默认开启)
265
+
266
+ 官方已支持全量 Markdown 后,适配器会在 `$sendMessage` 出站前自动把 AI 的纯文本段转为 `msg_type=2` 的 Markdown 消息(保留 leading `reply`)。配置项 `outboundMarkdown`:
267
+
268
+ | 值 | 行为 |
269
+ |---|---|
270
+ | `auto`(默认) | 正文含 `**`、列表、代码块等 Markdown 语法时才转换 |
271
+ | `true` | 纯文本也走 Markdown |
272
+ | `false` | 始终发纯文本(与旧行为一致) |
273
+
274
+ ```yaml
275
+ bots:
276
+ - context: qq
277
+ name: my-bot
278
+ outboundMarkdown: auto # 或 true / false
279
+ ```
280
+
281
+ 含图片/文件等富媒体的多段消息不会合并,避免破坏分条发送。
282
+
188
283
  ## API 方法
189
284
 
190
285
  ### 基础方法
@@ -245,10 +340,23 @@ QQ 机器人有严格的频率限制:
245
340
  ### Q: 机器人无法收到消息?
246
341
 
247
342
  A: 检查以下几点:
248
- 1. AppID、Token、Secret 是否正确
249
- 2. 事件订阅(Intents)是否包含对应类型
250
- 3. 公域模式下消息是否 @ 了机器人
251
- 4. 机器人是否已加入对应频道/群聊
343
+ 1. AppID、Secret 是否正确;`intents` 必须含 **`GROUP_AND_C2C_EVENT`**(不是旧名 `GROUP_AT_MESSAGE_CREATE`)
344
+ 2. **沙箱环境**:在 [QQ 开放平台](https://q.qq.com/bot) → 开发设置 → 沙箱配置,把测试 **QQ 群** 加入沙箱白名单(私聊能通不代表群已配置)
345
+ 3. 机器人是否已被拉入该 QQ 群(日志应出现 `qq notice group.add_robot`)
346
+ 4. 群管理员是否在机器人资料页 **开启消息接收**(`qq notice group.msg_receive_open`);若出现 `group.msg_receive_close` 则群聊不会推送
347
+ 5. 公域/群聊场景必须 **@ 机器人** 才会推送(`GROUP_AT_MESSAGE_CREATE`)
348
+ 6. **QQ 频道** 与 **QQ 群** 是两套事件:频道 @ 需要 `GUILD_MESSAGES` 或 `PUBLIC_GUILD_MESSAGES`,不是 `GROUP_AND_C2C_EVENT`
349
+
350
+ ### Q: Typing Indicator 群聊报 `40034105 主动消息失败, 无权限`?
351
+
352
+ A: QQ **群聊**不允许无引用的主动消息。框架已对 QQ 群场景的「正在处理中…」自动附带 `reply` 引用触发消息;若仍失败,可在 bot 配置中关闭群聊 typing:
353
+
354
+ ```yaml
355
+ typingIndicator:
356
+ enabled: true
357
+ groupConfig:
358
+ type: none
359
+ ```
252
360
 
253
361
  ### Q: 发送消息失败?
254
362
 
package/lib/adapter.d.ts CHANGED
@@ -2,10 +2,13 @@
2
2
  * QQ 官方适配器
3
3
  */
4
4
  import { Adapter, Plugin } from "zhin.js";
5
+ import type { Router } from "@zhin.js/host-router";
5
6
  import { QQBot } from "./bot.js";
6
7
  import type { QQBotConfig, ReceiverMode } from "./types.js";
7
8
  export declare class QQAdapter extends Adapter<QQBot<ReceiverMode>> {
8
- constructor(plugin: Plugin);
9
+ #private;
10
+ constructor(plugin: Plugin, router?: Router);
11
+ getRouter(): Router | undefined;
9
12
  createBot(config: QQBotConfig<ReceiverMode>): QQBot<ReceiverMode>;
10
13
  kickMember(botId: string, sceneId: string, userId: string): Promise<boolean>;
11
14
  muteMember(botId: string, sceneId: string, userId: string, duration?: number): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,OAAO,EACP,MAAM,EACP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D,qBAAa,SAAU,SAAQ,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC7C,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;IAM3D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMzD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAM;IAMzE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAO;IAMrD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAM1C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAQ3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,OAAO,EACP,MAAM,EACP,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D,qBAAa,SAAU,SAAQ,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;;gBAG7C,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAK3C,SAAS,IAAI,MAAM,GAAG,SAAS;IAI/B,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;IAM3D,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMzD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAM;IAMzE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAO;IAMrD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAM1C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAQ3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAa7B"}
package/lib/adapter.js CHANGED
@@ -4,8 +4,13 @@
4
4
  import { Adapter, } from "zhin.js";
5
5
  import { QQBot } from "./bot.js";
6
6
  export class QQAdapter extends Adapter {
7
- constructor(plugin) {
7
+ #router;
8
+ constructor(plugin, router) {
8
9
  super(plugin, "qq", []);
10
+ this.#router = router;
11
+ }
12
+ getRouter() {
13
+ return this.#router;
9
14
  }
10
15
  createBot(config) {
11
16
  return new QQBot(this, config);
@@ -43,6 +48,12 @@ export class QQAdapter extends Adapter {
43
48
  }
44
49
  // ── 生命周期 ───────────────────────────────────────────────────────
45
50
  async start() {
51
+ if (!this.#router) {
52
+ this.#router = this.plugin.inject("router");
53
+ }
54
+ this.plugin.useContext("router", (router) => {
55
+ this.#router = router;
56
+ });
46
57
  await super.start();
47
58
  }
48
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,OAAO,GAER,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,MAAM,OAAO,SAAU,SAAQ,OAA4B;IACzD,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,SAAS,CAAC,MAAiC;QACzC,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,gEAAgE;IAEhE,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,OAAe,EAAE,MAAc;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;QAC9C,OAAO,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,OAAe,EAAE,MAAc,EAAE,QAAQ,GAAG,GAAG;QAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;QAC9C,OAAO,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,OAAe,EAAE,MAAM,GAAG,IAAI;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;QAC9C,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,OAAe;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;QAC9C,OAAO,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,OAAe;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC;QAC9C,OAAO,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,kEAAkE;IAElE,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CAEF"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/lib/bot.d.ts CHANGED
@@ -3,8 +3,11 @@
3
3
  */
4
4
  import { Bot, PrivateMessageEvent, GroupMessageEvent } from "qq-official-bot";
5
5
  import { Bot as ZhinBot, Message, SendOptions } from "zhin.js";
6
- import type { QQBotConfig, ReceiverMode, ApplicationPlatform } from "./types.js";
6
+ import { ReceiverMode, type QQBotConfig, type ApplicationPlatform } from "./types.js";
7
7
  import type { QQAdapter } from "./adapter.js";
8
+ import { type QqWsPacket } from "./inbound-normalize.js";
9
+ /** 从 qq-official-bot SendResult / 审核回包中解析出站消息 ID */
10
+ export declare function resolveOutboundMessageId(result: unknown): string;
8
11
  export declare class QQBot<T extends ReceiverMode, M extends ApplicationPlatform = ApplicationPlatform> extends Bot implements ZhinBot<QQBotConfig<T, M>, PrivateMessageEvent | GroupMessageEvent> {
9
12
  adapter: QQAdapter;
10
13
  $connected: boolean;
@@ -14,9 +17,19 @@ export declare class QQBot<T extends ReceiverMode, M extends ApplicationPlatform
14
17
  get pluginLogger(): import("zhin.js").Logger;
15
18
  get $id(): string;
16
19
  constructor(adapter: QQAdapter, config: QQBotConfig<T, M>);
20
+ /** 出站 QQ API 请求附带 SDK 版本,便于平台侧日志排查 */
21
+ private attachSdkVersionHeader;
22
+ /** 归一化 QQ API v2 群聊字段后再交给 qq-official-bot 解析 */
23
+ dispatchEvent(event: string, wsRes: QqWsPacket): void;
17
24
  private handleQQMessage;
25
+ private handleGroupNotice;
18
26
  $connect(): Promise<void>;
19
27
  $disconnect(): Promise<void>;
28
+ private resolveWebhookPath;
29
+ /**
30
+ * Webhook 入站:middleware(挂 host-router)或独立 HTTP 端口(qq-official-bot 内置服务)。
31
+ */
32
+ private mountWebhookReceiver;
20
33
  $formatMessage(msg: PrivateMessageEvent | GroupMessageEvent): Message<PrivateMessageEvent | GroupMessageEvent>;
21
34
  $sendMessage(options: SendOptions): Promise<string>;
22
35
  $recallMessage(id: string): Promise<void>;
package/lib/bot.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
package/lib/bot.js CHANGED
@@ -3,7 +3,35 @@
3
3
  */
4
4
  import { Bot, } from "qq-official-bot";
5
5
  import path from "path";
6
+ import { formatCompact } from "@zhin.js/logger";
6
7
  import { Message, segment, } from "zhin.js";
8
+ import { ReceiverMode } from "./types.js";
9
+ import { normalizeQqInboundWsPayload } from "./inbound-normalize.js";
10
+ import { normalizeGroupAtPrefix } from "./group-at-normalize.js";
11
+ import { SDK_VERSION, SDK_VERSION_HEADER } from "./sdk-version.js";
12
+ import { applyCustomAuthEndpoints } from "./gateway-config.js";
13
+ import { normalizeOutboundMarkdown } from "./outbound-markdown.js";
14
+ import { normalizeOutboundMedia } from "./outbound-media.js";
15
+ /** 从 qq-official-bot SendResult / 审核回包中解析出站消息 ID */
16
+ export function resolveOutboundMessageId(result) {
17
+ if (!result || typeof result !== "object") {
18
+ throw new Error("QQ 发送消息失败:响应为空");
19
+ }
20
+ const row = result;
21
+ const nested = row.data && typeof row.data === "object"
22
+ ? row.data
23
+ : undefined;
24
+ const audit = (row.message_audit ?? nested?.message_audit);
25
+ const id = row.id ?? row.message_id ?? audit?.audit_id;
26
+ if (id == null || id === "") {
27
+ const code = row.code;
28
+ const msg = row.message;
29
+ throw new Error(code != null
30
+ ? `QQ 发送消息失败(${String(code)})${msg ? `: ${String(msg)}` : ""}`
31
+ : "QQ 发送消息失败:响应缺少消息 ID");
32
+ }
33
+ return String(id);
34
+ }
7
35
  export class QQBot extends Bot {
8
36
  adapter;
9
37
  $connected = false;
@@ -18,20 +46,61 @@ export class QQBot extends Bot {
18
46
  constructor(adapter, config) {
19
47
  if (!config.data_dir)
20
48
  config.data_dir = path.join(process.cwd(), "data");
49
+ if (config.mode === ReceiverMode.MIDDLEWARE) {
50
+ const mw = config;
51
+ if (!mw.platform) {
52
+ mw.platform = (mw.application ?? "koa");
53
+ }
54
+ }
21
55
  super(config);
22
56
  this.adapter = adapter;
23
57
  this.$config = config;
58
+ this.attachSdkVersionHeader();
59
+ applyCustomAuthEndpoints(this, config, this.pluginLogger);
60
+ }
61
+ /** 出站 QQ API 请求附带 SDK 版本,便于平台侧日志排查 */
62
+ attachSdkVersionHeader() {
63
+ this.request.interceptors.request.use((reqConfig) => {
64
+ reqConfig.headers[SDK_VERSION_HEADER] = SDK_VERSION;
65
+ return reqConfig;
66
+ });
67
+ }
68
+ /** 归一化 QQ API v2 群聊字段后再交给 qq-official-bot 解析 */
69
+ dispatchEvent(event, wsRes) {
70
+ this.pluginLogger.debug({
71
+ op: 'inbound_ws',
72
+ event,
73
+ group: String(wsRes.d?.group_openid ?? wsRes.d?.group_id ?? '?'),
74
+ });
75
+ if (event === 'GROUP_AT_MESSAGE_CREATE' || event === 'GROUP_MESSAGE_CREATE') {
76
+ this.pluginLogger.info(`qq inbound ws: ${event} group=${String(wsRes.d?.group_openid ?? wsRes.d?.group_id ?? '?')}`);
77
+ }
78
+ normalizeQqInboundWsPayload(event, wsRes);
79
+ super.dispatchEvent(event, wsRes);
24
80
  }
25
81
  handleQQMessage(msg) {
26
- const message = this.$formatMessage(msg);
27
- this.adapter.emit("message.receive", message);
28
- this.pluginLogger.debug(`${this.$config.name} recv ${message.$channel.type}(${message.$channel.id}):${segment.raw(message.$content)}`);
82
+ try {
83
+ const message = this.$formatMessage(msg);
84
+ this.adapter.emit("message.receive", message);
85
+ this.pluginLogger.debug(`${this.$config.name} recv ${message.$channel.type}(${message.$channel.id}):${segment.raw(message.$content)}`);
86
+ }
87
+ catch (err) {
88
+ this.pluginLogger.warn(`qq format inbound failed (${msg.message_type}): ${err instanceof Error ? err.message : String(err)}`);
89
+ }
90
+ }
91
+ handleGroupNotice(event, payload) {
92
+ this.pluginLogger.info(`qq notice ${event}: group=${payload.group_id ?? '?'} operator=${payload.operator_id ?? '?'}`);
29
93
  }
30
94
  async $connect() {
31
95
  this.on("message.group", this.handleQQMessage.bind(this));
32
96
  this.on("message.guild", this.handleQQMessage.bind(this));
33
97
  this.on("message.private", this.handleQQMessage.bind(this));
98
+ this.on("notice.group.increase", (e) => this.handleGroupNotice('group.add_robot', e));
99
+ this.on("notice.group.decrease", (e) => this.handleGroupNotice('group.del_robot', e));
100
+ this.on("notice.group.receive_open", (e) => this.handleGroupNotice('group.msg_receive_open', e));
101
+ this.on("notice.group.receive_close", (e) => this.handleGroupNotice('group.msg_receive_close', e));
34
102
  await this.start();
103
+ this.mountWebhookReceiver();
35
104
  this.$connected = true;
36
105
  try {
37
106
  const self = await this.getSelfInfo();
@@ -50,14 +119,72 @@ export class QQBot extends Bot {
50
119
  await this.stop();
51
120
  this.$connected = false;
52
121
  }
122
+ resolveWebhookPath() {
123
+ const raw = this.$config.webhookPath ?? "/qq/webhook";
124
+ return raw.startsWith("/") ? raw : `/${raw}`;
125
+ }
126
+ /**
127
+ * Webhook 入站:middleware(挂 host-router)或独立 HTTP 端口(qq-official-bot 内置服务)。
128
+ */
129
+ mountWebhookReceiver() {
130
+ const mode = this.$config.mode;
131
+ if (mode === ReceiverMode.MIDDLEWARE) {
132
+ const router = this.adapter.getRouter();
133
+ if (!router) {
134
+ throw new Error("QQ mode=middleware 需要启用 @zhin.js/host-router 插件");
135
+ }
136
+ const webhookPath = this.resolveWebhookPath();
137
+ const mw = this.middleware;
138
+ router.post(webhookPath, async (ctx) => {
139
+ this.pluginLogger.debug(ctx.body);
140
+ await mw(ctx, async () => { });
141
+ });
142
+ this.pluginLogger.info(formatCompact({
143
+ op: "webhook",
144
+ mode: "middleware",
145
+ path: webhookPath,
146
+ url: `POST ${webhookPath}`,
147
+ note: "无 /api 前缀;Host API 才走 /api/*",
148
+ }));
149
+ return;
150
+ }
151
+ if (mode === ReceiverMode.WEBHOOK) {
152
+ const cfg = this.$config;
153
+ this.pluginLogger.info(formatCompact({
154
+ op: "webhook",
155
+ mode: "standalone",
156
+ port: cfg.port,
157
+ path: cfg.path,
158
+ url: `http://127.0.0.1:${cfg.port}${cfg.path}`,
159
+ }));
160
+ }
161
+ }
53
162
  $formatMessage(msg) {
163
+ const raw = msg;
164
+ if (msg.message_type === "group") {
165
+ if (!raw.group_id && raw.group_openid) {
166
+ raw.group_id = raw.group_openid;
167
+ }
168
+ if (!msg.user_id && raw.author) {
169
+ const uid = raw.author.member_openid ?? raw.author.user_openid ?? raw.author.id;
170
+ if (uid)
171
+ msg.user_id = String(uid);
172
+ }
173
+ }
54
174
  let target_id = msg.user_id;
55
175
  if (msg.message_type === "guild")
56
176
  target_id = msg.channel_id;
57
177
  if (msg.message_type === "group")
58
- target_id = msg.group_id;
178
+ target_id = raw.group_id ?? msg.group_id ?? "";
59
179
  if (msg.sub_type === "direct")
60
180
  target_id = `direct:${msg.guild_id}`;
181
+ let content = msg.message;
182
+ if (msg.message_type === "group" && Array.isArray(content)) {
183
+ const botAtIds = [this.$platformUserId, this.$config.appid]
184
+ .filter((id) => Boolean(id))
185
+ .map(String);
186
+ content = normalizeGroupAtPrefix(content, botAtIds, raw.__zhin_group_at === true);
187
+ }
61
188
  const result = Message.from(msg, {
62
189
  $id: msg.message_id?.toString(),
63
190
  $adapter: "qq",
@@ -70,7 +197,7 @@ export class QQBot extends Bot {
70
197
  id: target_id,
71
198
  type: msg.message_type === "guild" ? "channel" : msg.message_type,
72
199
  },
73
- $content: msg.message,
200
+ $content: content,
74
201
  $raw: msg.raw_message,
75
202
  $timestamp: Date.now(),
76
203
  $recall: async () => {
@@ -92,29 +219,30 @@ export class QQBot extends Bot {
92
219
  return result;
93
220
  }
94
221
  async $sendMessage(options) {
222
+ const content = normalizeOutboundMarkdown(normalizeOutboundMedia(options.content), this.$config.outboundMarkdown);
95
223
  switch (options.type) {
96
224
  case "private": {
97
225
  if (options.id.startsWith("direct:")) {
98
226
  const id = options.id.replace("direct:", "");
99
- const result = await this.sendDirectMessage(id, options.content);
100
- this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(options.content)}`);
101
- return `direct-${options.id}:${result.id.toString()}`;
227
+ const result = await this.sendDirectMessage(id, content);
228
+ this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(content)}`);
229
+ return `direct-${options.id}:${resolveOutboundMessageId(result)}`;
102
230
  }
103
231
  else {
104
- const result = await this.sendPrivateMessage(options.id, options.content);
105
- this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(options.content)}`);
106
- return `private-${options.id}:${result.id.toString()}`;
232
+ const result = await this.sendPrivateMessage(options.id, content);
233
+ this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(content)}`);
234
+ return `private-${options.id}:${resolveOutboundMessageId(result)}`;
107
235
  }
108
236
  }
109
237
  case "group": {
110
- const result = await this.sendGroupMessage(options.id, options.content);
111
- this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(options.content)}`);
112
- return `group-${options.id}:${result.id.toString()}`;
238
+ const result = await this.sendGroupMessage(options.id, content);
239
+ this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(content)}`);
240
+ return `group-${options.id}:${resolveOutboundMessageId(result)}`;
113
241
  }
114
242
  case "channel": {
115
- const result = await this.sendGuildMessage(options.id, options.content);
116
- this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(options.content)}`);
117
- return `channel-${options.id}:${result.id.toString()}`;
243
+ const result = await this.sendGuildMessage(options.id, content);
244
+ this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(content)}`);
245
+ return `channel-${options.id}:${resolveOutboundMessageId(result)}`;
118
246
  }
119
247
  default:
120
248
  throw new Error(`unsupported channel type ${options.type}`);
package/lib/bot.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { Logger } from "@zhin.js/logger";
2
+ import type { Bot } from "qq-official-bot";
3
+ import { ReceiverMode } from "qq-official-bot";
4
+ import type { QQBotConfig } from "./types.js";
5
+ /** qq-official-bot 默认 token 接口 */
6
+ export declare const DEFAULT_ACCESS_TOKEN_URL = "https://bots.qq.com/app/getAppAccessToken";
7
+ /** qq-official-bot 默认 gateway 路径(相对 API baseURL) */
8
+ export declare const DEFAULT_GATEWAY_URL = "/gateway/bot";
9
+ /**
10
+ * 将自定义 gateway / token 地址注入 SDK Auth。
11
+ * SDK 仅在 websocket 模式自动读取配置;middleware / webhook 需在此补丁。
12
+ */
13
+ export declare function applyCustomAuthEndpoints(bot: Bot, config: Pick<QQBotConfig<ReceiverMode>, "mode" | "accessTokenUrl" | "gatewayUrl">, logger: Logger): void;
14
+ //# sourceMappingURL=gateway-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-config.d.ts","sourceRoot":"","sources":["../src/gateway-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,kCAAkC;AAClC,eAAO,MAAM,wBAAwB,8CAA8C,CAAC;AACpF,oDAAoD;AACpD,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAWlD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,GAAG,YAAY,CAAC,EACjF,MAAM,EAAE,MAAM,GACb,IAAI,CAmBN"}
@@ -0,0 +1,32 @@
1
+ import { formatCompact } from "@zhin.js/logger";
2
+ import { ReceiverMode } from "qq-official-bot";
3
+ /** qq-official-bot 默认 token 接口 */
4
+ export const DEFAULT_ACCESS_TOKEN_URL = "https://bots.qq.com/app/getAppAccessToken";
5
+ /** qq-official-bot 默认 gateway 路径(相对 API baseURL) */
6
+ export const DEFAULT_GATEWAY_URL = "/gateway/bot";
7
+ /**
8
+ * 将自定义 gateway / token 地址注入 SDK Auth。
9
+ * SDK 仅在 websocket 模式自动读取配置;middleware / webhook 需在此补丁。
10
+ */
11
+ export function applyCustomAuthEndpoints(bot, config, logger) {
12
+ const { accessTokenUrl, gatewayUrl, mode } = config;
13
+ if (!accessTokenUrl && !gatewayUrl)
14
+ return;
15
+ if (mode !== ReceiverMode.WEBSOCKET) {
16
+ const session = bot.sessionManager;
17
+ if (accessTokenUrl)
18
+ session.authManager.config.accessTokenUrl = accessTokenUrl;
19
+ if (gatewayUrl)
20
+ session.authManager.config.gatewayUrl = gatewayUrl;
21
+ }
22
+ logger.info(formatCompact({
23
+ op: "qq_gateway",
24
+ mode,
25
+ accessTokenUrl: accessTokenUrl ?? DEFAULT_ACCESS_TOKEN_URL,
26
+ gatewayUrl: gatewayUrl ?? DEFAULT_GATEWAY_URL,
27
+ note: mode === ReceiverMode.WEBSOCKET
28
+ ? "websocket 入站使用 gatewayUrl"
29
+ : "middleware/webhook 仅 accessTokenUrl 生效",
30
+ }));
31
+ }
32
+ //# sourceMappingURL=gateway-config.js.map