@zhin.js/adapter-qq 2.0.11 → 2.0.12
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.
- package/CHANGELOG.md +8 -0
- package/README.md +117 -9
- package/lib/adapter.d.ts +4 -1
- package/lib/adapter.d.ts.map +1 -1
- package/lib/adapter.js +12 -1
- package/lib/adapter.js.map +1 -1
- package/lib/bot.d.ts +12 -1
- package/lib/bot.d.ts.map +1 -1
- package/lib/bot.js +121 -13
- package/lib/bot.js.map +1 -1
- package/lib/gateway-config.d.ts +14 -0
- package/lib/gateway-config.d.ts.map +1 -0
- package/lib/gateway-config.js +32 -0
- package/lib/gateway-config.js.map +1 -0
- package/lib/group-at-normalize.d.ts +8 -0
- package/lib/group-at-normalize.d.ts.map +1 -0
- package/lib/group-at-normalize.js +71 -0
- package/lib/group-at-normalize.js.map +1 -0
- package/lib/inbound-normalize.d.ts +11 -0
- package/lib/inbound-normalize.d.ts.map +1 -0
- package/lib/inbound-normalize.js +47 -0
- package/lib/inbound-normalize.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +13 -11
- package/lib/index.js.map +1 -1
- package/lib/outbound-markdown.d.ts +12 -0
- package/lib/outbound-markdown.d.ts.map +1 -0
- package/lib/outbound-markdown.js +78 -0
- package/lib/outbound-markdown.js.map +1 -0
- package/lib/outbound-media.d.ts +9 -0
- package/lib/outbound-media.d.ts.map +1 -0
- package/lib/outbound-media.js +50 -0
- package/lib/outbound-media.js.map +1 -0
- package/lib/sdk-version.d.ts +8 -0
- package/lib/sdk-version.d.ts.map +1 -0
- package/lib/sdk-version.js +19 -0
- package/lib/sdk-version.js.map +1 -0
- package/lib/types.d.ts +22 -0
- package/lib/types.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/adapter.ts +18 -1
- package/src/bot.ts +150 -14
- package/src/gateway-config.ts +48 -0
- package/src/group-at-normalize.ts +78 -0
- package/src/inbound-normalize.ts +57 -0
- package/src/index.ts +15 -11
- package/src/outbound-markdown.ts +93 -0
- package/src/outbound-media.ts +57 -0
- package/src/sdk-version.ts +21 -0
- package/src/types.ts +22 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @zhin.js/adapter-qq
|
|
2
2
|
|
|
3
|
+
## 2.0.12
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- acf5e0e: 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
|
+
- zhin.js@1.0.93
|
|
9
|
+
- @zhin.js/host-router@0.0.3
|
|
10
|
+
|
|
3
11
|
## 2.0.11
|
|
4
12
|
|
|
5
13
|
### 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: '
|
|
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: '
|
|
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
|
-
'
|
|
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
|
-
- `
|
|
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、
|
|
249
|
-
2.
|
|
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
|
-
|
|
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>;
|
package/lib/adapter.d.ts.map
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
}
|
package/lib/adapter.js.map
CHANGED
|
@@ -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;
|
|
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,9 @@
|
|
|
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
|
|
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";
|
|
8
9
|
export declare class QQBot<T extends ReceiverMode, M extends ApplicationPlatform = ApplicationPlatform> extends Bot implements ZhinBot<QQBotConfig<T, M>, PrivateMessageEvent | GroupMessageEvent> {
|
|
9
10
|
adapter: QQAdapter;
|
|
10
11
|
$connected: boolean;
|
|
@@ -14,9 +15,19 @@ export declare class QQBot<T extends ReceiverMode, M extends ApplicationPlatform
|
|
|
14
15
|
get pluginLogger(): import("zhin.js").Logger;
|
|
15
16
|
get $id(): string;
|
|
16
17
|
constructor(adapter: QQAdapter, config: QQBotConfig<T, M>);
|
|
18
|
+
/** 出站 QQ API 请求附带 SDK 版本,便于平台侧日志排查 */
|
|
19
|
+
private attachSdkVersionHeader;
|
|
20
|
+
/** 归一化 QQ API v2 群聊字段后再交给 qq-official-bot 解析 */
|
|
21
|
+
dispatchEvent(event: string, wsRes: QqWsPacket): void;
|
|
17
22
|
private handleQQMessage;
|
|
23
|
+
private handleGroupNotice;
|
|
18
24
|
$connect(): Promise<void>;
|
|
19
25
|
$disconnect(): Promise<void>;
|
|
26
|
+
private resolveWebhookPath;
|
|
27
|
+
/**
|
|
28
|
+
* Webhook 入站:middleware(挂 host-router)或独立 HTTP 端口(qq-official-bot 内置服务)。
|
|
29
|
+
*/
|
|
30
|
+
private mountWebhookReceiver;
|
|
20
31
|
$formatMessage(msg: PrivateMessageEvent | GroupMessageEvent): Message<PrivateMessageEvent | GroupMessageEvent>;
|
|
21
32
|
$sendMessage(options: SendOptions): Promise<string>;
|
|
22
33
|
$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":"AAAA;;GAEG;AACH,OAAO,EACL,GAAG,EACH,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;
|
|
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,15 @@
|
|
|
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";
|
|
7
15
|
export class QQBot extends Bot {
|
|
8
16
|
adapter;
|
|
9
17
|
$connected = false;
|
|
@@ -18,20 +26,61 @@ export class QQBot extends Bot {
|
|
|
18
26
|
constructor(adapter, config) {
|
|
19
27
|
if (!config.data_dir)
|
|
20
28
|
config.data_dir = path.join(process.cwd(), "data");
|
|
29
|
+
if (config.mode === ReceiverMode.MIDDLEWARE) {
|
|
30
|
+
const mw = config;
|
|
31
|
+
if (!mw.platform) {
|
|
32
|
+
mw.platform = (mw.application ?? "koa");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
21
35
|
super(config);
|
|
22
36
|
this.adapter = adapter;
|
|
23
37
|
this.$config = config;
|
|
38
|
+
this.attachSdkVersionHeader();
|
|
39
|
+
applyCustomAuthEndpoints(this, config, this.pluginLogger);
|
|
40
|
+
}
|
|
41
|
+
/** 出站 QQ API 请求附带 SDK 版本,便于平台侧日志排查 */
|
|
42
|
+
attachSdkVersionHeader() {
|
|
43
|
+
this.request.interceptors.request.use((reqConfig) => {
|
|
44
|
+
reqConfig.headers[SDK_VERSION_HEADER] = SDK_VERSION;
|
|
45
|
+
return reqConfig;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/** 归一化 QQ API v2 群聊字段后再交给 qq-official-bot 解析 */
|
|
49
|
+
dispatchEvent(event, wsRes) {
|
|
50
|
+
this.pluginLogger.debug({
|
|
51
|
+
op: 'inbound_ws',
|
|
52
|
+
event,
|
|
53
|
+
group: String(wsRes.d?.group_openid ?? wsRes.d?.group_id ?? '?'),
|
|
54
|
+
});
|
|
55
|
+
if (event === 'GROUP_AT_MESSAGE_CREATE' || event === 'GROUP_MESSAGE_CREATE') {
|
|
56
|
+
this.pluginLogger.info(`qq inbound ws: ${event} group=${String(wsRes.d?.group_openid ?? wsRes.d?.group_id ?? '?')}`);
|
|
57
|
+
}
|
|
58
|
+
normalizeQqInboundWsPayload(event, wsRes);
|
|
59
|
+
super.dispatchEvent(event, wsRes);
|
|
24
60
|
}
|
|
25
61
|
handleQQMessage(msg) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
62
|
+
try {
|
|
63
|
+
const message = this.$formatMessage(msg);
|
|
64
|
+
this.adapter.emit("message.receive", message);
|
|
65
|
+
this.pluginLogger.debug(`${this.$config.name} recv ${message.$channel.type}(${message.$channel.id}):${segment.raw(message.$content)}`);
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
this.pluginLogger.warn(`qq format inbound failed (${msg.message_type}): ${err instanceof Error ? err.message : String(err)}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
handleGroupNotice(event, payload) {
|
|
72
|
+
this.pluginLogger.info(`qq notice ${event}: group=${payload.group_id ?? '?'} operator=${payload.operator_id ?? '?'}`);
|
|
29
73
|
}
|
|
30
74
|
async $connect() {
|
|
31
75
|
this.on("message.group", this.handleQQMessage.bind(this));
|
|
32
76
|
this.on("message.guild", this.handleQQMessage.bind(this));
|
|
33
77
|
this.on("message.private", this.handleQQMessage.bind(this));
|
|
78
|
+
this.on("notice.group.increase", (e) => this.handleGroupNotice('group.add_robot', e));
|
|
79
|
+
this.on("notice.group.decrease", (e) => this.handleGroupNotice('group.del_robot', e));
|
|
80
|
+
this.on("notice.group.receive_open", (e) => this.handleGroupNotice('group.msg_receive_open', e));
|
|
81
|
+
this.on("notice.group.receive_close", (e) => this.handleGroupNotice('group.msg_receive_close', e));
|
|
34
82
|
await this.start();
|
|
83
|
+
this.mountWebhookReceiver();
|
|
35
84
|
this.$connected = true;
|
|
36
85
|
try {
|
|
37
86
|
const self = await this.getSelfInfo();
|
|
@@ -50,14 +99,72 @@ export class QQBot extends Bot {
|
|
|
50
99
|
await this.stop();
|
|
51
100
|
this.$connected = false;
|
|
52
101
|
}
|
|
102
|
+
resolveWebhookPath() {
|
|
103
|
+
const raw = this.$config.webhookPath ?? "/qq/webhook";
|
|
104
|
+
return raw.startsWith("/") ? raw : `/${raw}`;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Webhook 入站:middleware(挂 host-router)或独立 HTTP 端口(qq-official-bot 内置服务)。
|
|
108
|
+
*/
|
|
109
|
+
mountWebhookReceiver() {
|
|
110
|
+
const mode = this.$config.mode;
|
|
111
|
+
if (mode === ReceiverMode.MIDDLEWARE) {
|
|
112
|
+
const router = this.adapter.getRouter();
|
|
113
|
+
if (!router) {
|
|
114
|
+
throw new Error("QQ mode=middleware 需要启用 @zhin.js/host-router 插件");
|
|
115
|
+
}
|
|
116
|
+
const webhookPath = this.resolveWebhookPath();
|
|
117
|
+
const mw = this.middleware;
|
|
118
|
+
router.post(webhookPath, async (ctx) => {
|
|
119
|
+
this.pluginLogger.debug(ctx.body);
|
|
120
|
+
await mw(ctx, async () => { });
|
|
121
|
+
});
|
|
122
|
+
this.pluginLogger.info(formatCompact({
|
|
123
|
+
op: "webhook",
|
|
124
|
+
mode: "middleware",
|
|
125
|
+
path: webhookPath,
|
|
126
|
+
url: `POST ${webhookPath}`,
|
|
127
|
+
note: "无 /api 前缀;Host API 才走 /api/*",
|
|
128
|
+
}));
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (mode === ReceiverMode.WEBHOOK) {
|
|
132
|
+
const cfg = this.$config;
|
|
133
|
+
this.pluginLogger.info(formatCompact({
|
|
134
|
+
op: "webhook",
|
|
135
|
+
mode: "standalone",
|
|
136
|
+
port: cfg.port,
|
|
137
|
+
path: cfg.path,
|
|
138
|
+
url: `http://127.0.0.1:${cfg.port}${cfg.path}`,
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
53
142
|
$formatMessage(msg) {
|
|
143
|
+
const raw = msg;
|
|
144
|
+
if (msg.message_type === "group") {
|
|
145
|
+
if (!raw.group_id && raw.group_openid) {
|
|
146
|
+
raw.group_id = raw.group_openid;
|
|
147
|
+
}
|
|
148
|
+
if (!msg.user_id && raw.author) {
|
|
149
|
+
const uid = raw.author.member_openid ?? raw.author.user_openid ?? raw.author.id;
|
|
150
|
+
if (uid)
|
|
151
|
+
msg.user_id = String(uid);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
54
154
|
let target_id = msg.user_id;
|
|
55
155
|
if (msg.message_type === "guild")
|
|
56
156
|
target_id = msg.channel_id;
|
|
57
157
|
if (msg.message_type === "group")
|
|
58
|
-
target_id = msg.group_id;
|
|
158
|
+
target_id = raw.group_id ?? msg.group_id ?? "";
|
|
59
159
|
if (msg.sub_type === "direct")
|
|
60
160
|
target_id = `direct:${msg.guild_id}`;
|
|
161
|
+
let content = msg.message;
|
|
162
|
+
if (msg.message_type === "group" && Array.isArray(content)) {
|
|
163
|
+
const botAtIds = [this.$platformUserId, this.$config.appid]
|
|
164
|
+
.filter((id) => Boolean(id))
|
|
165
|
+
.map(String);
|
|
166
|
+
content = normalizeGroupAtPrefix(content, botAtIds, raw.__zhin_group_at === true);
|
|
167
|
+
}
|
|
61
168
|
const result = Message.from(msg, {
|
|
62
169
|
$id: msg.message_id?.toString(),
|
|
63
170
|
$adapter: "qq",
|
|
@@ -70,7 +177,7 @@ export class QQBot extends Bot {
|
|
|
70
177
|
id: target_id,
|
|
71
178
|
type: msg.message_type === "guild" ? "channel" : msg.message_type,
|
|
72
179
|
},
|
|
73
|
-
$content:
|
|
180
|
+
$content: content,
|
|
74
181
|
$raw: msg.raw_message,
|
|
75
182
|
$timestamp: Date.now(),
|
|
76
183
|
$recall: async () => {
|
|
@@ -92,28 +199,29 @@ export class QQBot extends Bot {
|
|
|
92
199
|
return result;
|
|
93
200
|
}
|
|
94
201
|
async $sendMessage(options) {
|
|
202
|
+
const content = normalizeOutboundMarkdown(normalizeOutboundMedia(options.content), this.$config.outboundMarkdown);
|
|
95
203
|
switch (options.type) {
|
|
96
204
|
case "private": {
|
|
97
205
|
if (options.id.startsWith("direct:")) {
|
|
98
206
|
const id = options.id.replace("direct:", "");
|
|
99
|
-
const result = await this.sendDirectMessage(id,
|
|
100
|
-
this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(
|
|
207
|
+
const result = await this.sendDirectMessage(id, content);
|
|
208
|
+
this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(content)}`);
|
|
101
209
|
return `direct-${options.id}:${result.id.toString()}`;
|
|
102
210
|
}
|
|
103
211
|
else {
|
|
104
|
-
const result = await this.sendPrivateMessage(options.id,
|
|
105
|
-
this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(
|
|
212
|
+
const result = await this.sendPrivateMessage(options.id, content);
|
|
213
|
+
this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(content)}`);
|
|
106
214
|
return `private-${options.id}:${result.id.toString()}`;
|
|
107
215
|
}
|
|
108
216
|
}
|
|
109
217
|
case "group": {
|
|
110
|
-
const result = await this.sendGroupMessage(options.id,
|
|
111
|
-
this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(
|
|
218
|
+
const result = await this.sendGroupMessage(options.id, content);
|
|
219
|
+
this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(content)}`);
|
|
112
220
|
return `group-${options.id}:${result.id.toString()}`;
|
|
113
221
|
}
|
|
114
222
|
case "channel": {
|
|
115
|
-
const result = await this.sendGuildMessage(options.id,
|
|
116
|
-
this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(
|
|
223
|
+
const result = await this.sendGuildMessage(options.id, content);
|
|
224
|
+
this.pluginLogger.debug(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(content)}`);
|
|
117
225
|
return `channel-${options.id}:${result.id.toString()}`;
|
|
118
226
|
}
|
|
119
227
|
default:
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-config.js","sourceRoot":"","sources":["../src/gateway-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,kCAAkC;AAClC,MAAM,CAAC,MAAM,wBAAwB,GAAG,2CAA2C,CAAC;AACpF,oDAAoD;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAWlD;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,GAAQ,EACR,MAAiF,EACjF,MAAc;IAEd,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACpD,IAAI,CAAC,cAAc,IAAI,CAAC,UAAU;QAAE,OAAO;IAE3C,IAAI,IAAI,KAAK,YAAY,CAAC,SAAS,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,GAAG,CAAC,cAA+C,CAAC;QACpE,IAAI,cAAc;YAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;QAC/E,IAAI,UAAU;YAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QACxB,EAAE,EAAE,YAAY;QAChB,IAAI;QACJ,cAAc,EAAE,cAAc,IAAI,wBAAwB;QAC1D,UAAU,EAAE,UAAU,IAAI,mBAAmB;QAC7C,IAAI,EAAE,IAAI,KAAK,YAAY,CAAC,SAAS;YACnC,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,wCAAwC;KAC7C,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MessageElement } from "zhin.js";
|
|
2
|
+
/**
|
|
3
|
+
* 统一 QQ 群 @ 机器人前缀:
|
|
4
|
+
* - 去掉正文前的 at 段与内联 @,使命令/文本从首段开始匹配
|
|
5
|
+
* - 若曾 @ 机器人,在末尾追加规范 at 段,供 AI @ 触发器识别
|
|
6
|
+
*/
|
|
7
|
+
export declare function normalizeGroupAtPrefix(content: MessageElement[], botAtIds: string[], forceAt: boolean): MessageElement[];
|
|
8
|
+
//# sourceMappingURL=group-at-normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-at-normalize.d.ts","sourceRoot":"","sources":["../src/group-at-normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AA2B9C;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,EAAE,OAAO,GACf,cAAc,EAAE,CAyClB"}
|