@zhin.js/adapter-kook 1.0.16 → 1.0.18

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 CHANGED
@@ -1,5 +1,20 @@
1
1
  # @zhin.js/adapter-kook
2
2
 
3
+ ## 1.0.18
4
+
5
+ ### Patch Changes
6
+
7
+ - d16a69c: fix: test trust publish
8
+ - Updated dependencies [d16a69c]
9
+ - @zhin.js/logger@0.1.2
10
+ - zhin.js@1.0.18
11
+
12
+ ## 1.0.17
13
+
14
+ ### Patch Changes
15
+
16
+ - zhin.js@1.0.17
17
+
3
18
  ## 1.0.16
4
19
 
5
20
  ### Patch Changes
package/README.md CHANGED
@@ -1,23 +1,27 @@
1
1
  # @zhin.js/adapter-kook
2
2
 
3
- 基于 KOOK(开黑啦)的 Zhin 机器人适配器,用于连接 KOOK 机器人。
3
+ Zhin.js KOOK(开黑啦)适配器,基于 KOOK 官方 API 开发,支持频道和私聊消息。
4
4
 
5
5
  ## 功能特性
6
6
 
7
- - 🗣️ 支持KOOK频道和私聊消息处理
7
+ - 🗣️ 支持 KOOK 频道和私聊消息处理
8
8
  - 📨 消息发送和接收处理
9
9
  - 🔄 消息格式转换和适配
10
10
  - 📁 自动数据目录管理
11
- - ⚡ 基于WebSocket的实时通信
11
+ - ⚡ 基于 WebSocket 的实时通信
12
+ - 🎯 支持 Webhook 和 WebSocket 双模式
13
+ - 📝 支持 Markdown 消息格式
12
14
 
13
15
  ## 安装
14
16
 
15
17
  ```bash
16
- npm install @zhin.js/adapter-kook kook-client
18
+ pnpm add @zhin.js/adapter-kook kook-client
17
19
  ```
18
20
 
19
21
  ## 配置
20
22
 
23
+ ### WebSocket 模式(推荐)
24
+
21
25
  ```typescript
22
26
  // zhin.config.ts
23
27
  import { defineConfig } from 'zhin.js'
@@ -26,39 +30,275 @@ export default defineConfig({
26
30
  bots: [
27
31
  {
28
32
  context: 'kook',
29
- name: 'my-kook-bot', // 机器人名称
30
- token: process.env.KOOK_TOKEN, // KOOK机器人Token
31
- mode: 'websocket', // websocket | webhook
32
- data_dir: './data', // 数据目录
33
- endpoint: process.env.KOOK_ENDPOINT // Webhook端点(webhook模式下使用)
33
+ name: 'my-kook-bot',
34
+ token: process.env.KOOK_TOKEN, // KOOK 机器人 Token(必需)
35
+ mode: 'websocket', // WebSocket 模式
36
+ data_dir: './data' // 数据目录(可选)
37
+ }
38
+ ],
39
+ plugins: [
40
+ 'http',
41
+ 'adapter-kook'
42
+ ]
43
+ })
44
+ ```
45
+
46
+ ### Webhook 模式
47
+
48
+ ```typescript
49
+ export default defineConfig({
50
+ bots: [
51
+ {
52
+ context: 'kook',
53
+ name: 'my-kook-bot',
54
+ token: process.env.KOOK_TOKEN, // KOOK 机器人 Token(必需)
55
+ mode: 'webhook', // Webhook 模式
56
+ endpoint: process.env.KOOK_ENDPOINT, // Webhook 端点(必需)
57
+ verifyToken: process.env.KOOK_VERIFY, // 验证令牌(可选)
58
+ encryptKey: process.env.KOOK_ENCRYPT, // 加密密钥(可选)
59
+ data_dir: './data'
34
60
  }
35
61
  ],
36
- plugins: ['adapter-kook']
62
+ plugins: [
63
+ 'http',
64
+ 'adapter-kook'
65
+ ]
66
+ })
67
+ ```
68
+
69
+ ## 获取配置信息
70
+
71
+ ### 1. 创建 KOOK 机器人
72
+
73
+ 1. 访问 [KOOK 开发者平台](https://developer.kookapp.cn/)
74
+ 2. 登录并创建应用
75
+ 3. 在应用设置中获取 **Bot Token**
76
+
77
+ ### 2. 配置机器人
78
+
79
+ 在应用设置中:
80
+ - 获取 **Bot Token**(必需)
81
+ - 配置 Webhook 地址(Webhook 模式)
82
+ - 设置验证令牌和加密密钥(可选,增强安全性)
83
+
84
+ ### 3. 邀请机器人
85
+
86
+ - 在应用详情页获取邀请链接
87
+ - 将机器人邀请到需要的服务器
88
+ - 确保机器人有相应的权限
89
+
90
+ ## 使用示例
91
+
92
+ ### 基础消息处理
93
+
94
+ ```typescript
95
+ import { addCommand, MessageCommand } from 'zhin.js'
96
+
97
+ addCommand(new MessageCommand('hello <name:text>')
98
+ .action(async (message, result) => {
99
+ return `你好,${result.params.name}!`
100
+ })
101
+ )
102
+ ```
103
+
104
+ ### 频道消息
105
+
106
+ ```typescript
107
+ import { onMessage } from 'zhin.js'
108
+
109
+ onMessage(async (message) => {
110
+ if (message.$channel.type === 'channel') {
111
+ console.log(`频道消息:${message.$raw}`)
112
+ }
113
+ })
114
+ ```
115
+
116
+ ### 私聊消息
117
+
118
+ ```typescript
119
+ import { onPrivateMessage } from 'zhin.js'
120
+
121
+ onPrivateMessage(async (message) => {
122
+ await message.$reply('收到你的私信了!')
37
123
  })
38
124
  ```
39
125
 
40
- ## 使用方式
126
+ ### Markdown 消息
127
+
128
+ ```typescript
129
+ addCommand(new MessageCommand('md')
130
+ .action(async (message) => {
131
+ return [
132
+ {
133
+ type: 'text',
134
+ data: {
135
+ text: '**这是粗体** *这是斜体*\n[链接](https://kookapp.cn)'
136
+ }
137
+ }
138
+ ]
139
+ })
140
+ )
141
+ ```
142
+ ### Card 消息 (卡片消息)
143
+
144
+ ```typescript
145
+ addCommand(new MessageCommand('card')
146
+ .action(async (message) => {
147
+ logger.info(message);
148
+ if (message.$adapter === 'icqq') {
149
+ return "暂未适配平台!";
150
+ } else if (message.$adapter === 'kook') {
151
+ const cardMessage = [{
152
+ type: 'card',
153
+ theme: "secondary",
154
+ size: "lg",
155
+ modules: [
156
+ msgMod.section(
157
+ element.markdown("(font) 卡片信息(font)[purple](font) Card信息(font)[warning]")
158
+ ),
159
+ msgMod.container(
160
+ [
161
+ element.image('https://api.owii.cn/gif/cache/2026-01-03_07-17-15.gif')
162
+ ]
163
+ )
164
+ ]
165
+ }];
166
+ return cardMessage;
167
+ }
168
+ return `当前平台:${message.adapter}`;
169
+ })
170
+ )
171
+ ```
172
+
173
+ ## 消息类型支持
174
+
175
+ ### 接收消息类型
176
+
177
+ - ✅ 文本消息
178
+ - ✅ 图片消息
179
+ - ✅ 视频消息
180
+ - ✅ 文件消息
181
+ - ✅ Markdown 消息
182
+ - ✅ KMarkdown 消息
183
+ - ✅ 卡片消息
184
+
185
+ ### 发送消息类型
186
+
187
+ - ✅ 文本消息
188
+ - ✅ 图片消息
189
+ - ✅ 视频消息
190
+ - ✅ 文件消息
191
+ - ✅ Markdown 消息
192
+ - ✅ 卡片消息
193
+
194
+ ## API 方法
195
+
196
+ ```typescript
197
+ const bot = app.adapters.get('kook')?.bots.get('my-kook-bot')
198
+
199
+ // 发送频道消息
200
+ await bot.sendChannelMsg(channelId, '消息内容')
201
+
202
+ // 发送私聊消息
203
+ await bot.sendPrivateMsg(userId, '消息内容')
204
+
205
+ // 撤回消息
206
+ await bot.$recallMessage(messageId)
207
+ ```
208
+
209
+ ## WebSocket vs Webhook
210
+
211
+ ### WebSocket 模式(推荐)
212
+ - ✅ 更低的延迟
213
+ - ✅ 实时双向通信
214
+ - ✅ 无需公网 IP
215
+ - ✅ 配置简单
216
+
217
+ ### Webhook 模式
218
+ - ✅ 服务器资源占用少
219
+ - ✅ 可扩展性强
220
+ - ⚠️ 需要公网 IP
221
+ - ⚠️ 需要配置回调地址
222
+
223
+ ## 消息 ID 格式
224
+
225
+ 本适配器使用特殊的消息 ID 格式:
41
226
 
42
- 适配器会自动连接KOOK服务器:
43
- - 基于WebSocket协议通信
44
- - 自动处理连接和断线重连
45
- - 支持消息事件监听
227
+ - 频道消息:`channel-{channelId}:{messageId}`
228
+ - 私聊消息:`private-{userId}:{messageId}`
46
229
 
47
- ## 消息处理
230
+ ## 注意事项
48
231
 
49
- - 自动将KOOK消息格式转换为Zhin标准消息格式
50
- - 支持频道消息和私聊消息
51
- - 支持Markdown消息格式
52
- - 提供消息回复功能
232
+ ### 权限配置
233
+
234
+ 确保机器人有以下权限:
235
+ - 查看频道
236
+ - 发送消息
237
+ - 管理消息(如需撤回)
238
+ - 查看服务器成员列表
239
+
240
+ ### 频率限制
241
+
242
+ KOOK 有消息发送频率限制:
243
+ - 每秒最多 5 条消息
244
+ - 建议添加发送队列管理
245
+
246
+ ## 常见问题
247
+
248
+ ### Q: 机器人无法收到消息?
249
+
250
+ A: 检查以下几点:
251
+ 1. Token 是否正确
252
+ 2. 机器人是否已加入服务器
253
+ 3. 机器人是否有查看频道权限
254
+ 4. WebSocket 连接是否正常
255
+
256
+ ### Q: Webhook 模式无法工作?
257
+
258
+ A: 确认:
259
+ 1. Webhook URL 可以从公网访问
260
+ 2. 验证令牌配置正确
261
+ 3. 端口已开放
262
+ 4. HTTPS 配置正确(推荐)
263
+
264
+ ### Q: 如何发送卡片消息?
265
+
266
+ A: 使用 KOOK 的卡片消息格式:
267
+ ```typescript
268
+ await bot.sendChannelMsg(channelId, [
269
+ {
270
+ type: 'card',
271
+ data: {
272
+ // 卡片消息内容
273
+ }
274
+ }
275
+ ])
276
+ ```
277
+
278
+ ## 相关链接
279
+
280
+ - [KOOK 开发者平台](https://developer.kookapp.cn/)
281
+ - [KOOK 开发文档](https://developer.kookapp.cn/doc/)
282
+ - [kook-client 文档](https://github.com/zhinjs/kook-client)
283
+ - [Zhin.js 官方文档](https://github.com/zhinjs/zhin)
53
284
 
54
285
  ## 依赖项
55
286
 
56
- - `kook-client` - KOOK客户端库
57
- - `zhin.js` - Zhin核心框架
287
+ - `kook-client` - KOOK 客户端库
288
+ - `zhin.js` - Zhin 核心框架
58
289
 
59
290
  ## 开发
60
291
 
61
292
  ```bash
62
- npm run build # 构建
63
- npm run clean # 清理构建文件
293
+ pnpm build # 构建
294
+ pnpm clean # 清理构建文件
64
295
  ```
296
+
297
+ ## 许可证
298
+
299
+ MIT License
300
+
301
+ ## 贡献
302
+
303
+ 欢迎提交 Issue 和 Pull Request!
304
+
package/lib/index.d.ts CHANGED
@@ -1,29 +1,89 @@
1
- import { Client, PrivateMessageEvent, ChannelMessageEvent, Sendable } from "kook-client";
2
- import { Bot, Adapter, Message, SendOptions, MessageSegment, SendContent } from "zhin.js";
3
- declare module '@zhin.js/types' {
1
+ import { Client } from "kook-client";
2
+ import { Bot, Adapter, Plugin, Message, SendOptions, MessageType } from "zhin.js";
3
+ declare module "zhin.js" {
4
+ namespace Plugin {
5
+ interface Contexts {
6
+ kook: KookAdapter;
7
+ }
8
+ }
4
9
  interface RegisteredAdapters {
5
- kook: Adapter<KookBot>;
10
+ kook: KookAdapter;
6
11
  }
7
12
  }
8
- export interface KookBotConfig extends Bot.Config, Client.Config {
9
- context: 'kook';
10
- name: `${number}`;
13
+ export interface KookBotConfig {
14
+ context: "kook";
15
+ name: string;
16
+ token: string;
17
+ data_dir?: string;
18
+ timeout?: number;
19
+ max_retry?: number;
20
+ ignore?: string;
21
+ logLevel?: string;
11
22
  }
12
- export interface KookBot {
13
- $config: KookBotConfig;
23
+ interface KookRawMessage {
24
+ message_id: string;
25
+ author_id: string;
26
+ author: {
27
+ info: {
28
+ nickname: string;
29
+ };
30
+ };
31
+ channel_id: string;
32
+ message_type: MessageType;
33
+ message: string;
34
+ raw_message: string;
35
+ timestamp: number;
14
36
  }
15
- export declare class KookBot extends Client implements Bot<PrivateMessageEvent | ChannelMessageEvent, KookBotConfig> {
16
- $connected?: boolean;
17
- constructor(config: KookBotConfig);
18
- $formatMessage(msg: PrivateMessageEvent | ChannelMessageEvent): Message<PrivateMessageEvent | ChannelMessageEvent>;
37
+ /**
38
+ * KOOK Bot 实现
39
+ */
40
+ export declare class KookBot extends Client implements Bot<KookBotConfig, KookRawMessage> {
41
+ $config: KookBotConfig;
42
+ $connected: boolean;
43
+ adapter: KookAdapter;
44
+ get $id(): string;
45
+ constructor(adapter: KookAdapter, $config: KookBotConfig);
46
+ /**
47
+ * 设置事件监听器
48
+ */
49
+ private setupEventListeners;
50
+ /**
51
+ * 将 KOOK 消息转换为标准消息格式
52
+ */
53
+ $formatMessage(msg: KookRawMessage): Message<KookRawMessage>;
54
+ /**
55
+ * 解析消息内容为消息段数组
56
+ */
57
+ private parseMessageContent;
58
+ /**
59
+ * 连接到 KOOK
60
+ */
19
61
  $connect(): Promise<void>;
62
+ /**
63
+ * 断开连接
64
+ */
20
65
  $disconnect(): Promise<void>;
66
+ /**
67
+ * 发送消息
68
+ */
21
69
  $sendMessage(options: SendOptions): Promise<string>;
22
- $recallMessage(id: string): Promise<void>;
23
- private handleKookMessage;
70
+ /**
71
+ * 撤回消息
72
+ */
73
+ $recallMessage(messageId: string): Promise<void>;
74
+ /**
75
+ * 将消息段转换为 KOOK 格式
76
+ */
77
+ private convertToKookFormat;
24
78
  }
25
- export declare namespace KookBot {
26
- function toSegments(message: Sendable): MessageSegment[];
27
- function toSendable(content: SendContent): Sendable;
79
+ /**
80
+ * KOOK 适配器
81
+ */
82
+ export declare class KookAdapter extends Adapter<KookBot> {
83
+ constructor(plugin: Plugin);
84
+ createBot(config: KookBotConfig): KookBot;
85
+ start(): Promise<void>;
86
+ stop(): Promise<void>;
28
87
  }
88
+ export {};
29
89
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAA+B,mBAAmB,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AAErH,OAAO,EACH,GAAG,EACH,OAAO,EAEP,OAAO,EACP,WAAW,EACX,cAAc,EACd,WAAW,EAGd,MAAM,SAAS,CAAC;AACjB,OAAO,QAAQ,gBAAgB,CAAA;IAC3B,UAAU,kBAAkB;QACxB,IAAI,EAAC,OAAO,CAAC,OAAO,CAAC,CAAA;KACxB;CACJ;AAED,MAAM,WAAW,aAAc,SAAQ,GAAG,CAAC,MAAM,EAAC,MAAM,CAAC,MAAM;IAC3D,OAAO,EAAC,MAAM,CAAA;IACd,IAAI,EAAC,GAAG,MAAM,EAAE,CAAA;CACnB;AACD,MAAM,WAAW,OAAO;IACpB,OAAO,EAAC,aAAa,CAAA;CACxB;AACD,qBAAa,OAAQ,SAAQ,MAAO,YAAW,GAAG,CAAC,mBAAmB,GAAC,mBAAmB,EAAC,aAAa,CAAC;IACrG,UAAU,CAAC,EAAC,OAAO,CAAA;gBACP,MAAM,EAAC,aAAa;IAMhC,cAAc,CAAC,GAAG,EAAE,mBAAmB,GAAG,mBAAmB;IAiCvD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAMzB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBnD,cAAc,CAAC,EAAE,EAAC,MAAM,GAAE,OAAO,CAAC,IAAI,CAAC;IAO7C,OAAO,CAAC,iBAAiB;CAO5B;AACD,yBAAiB,OAAO,CAAA;IACpB,SAAgB,UAAU,CAAC,OAAO,EAAC,QAAQ,GAAE,cAAc,EAAE,CAO5D;IACD,SAAgB,UAAU,CAAC,OAAO,EAAC,WAAW,GAAE,QAAQ,CAOvD;CACJ"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EACL,GAAG,EACH,OAAO,EACP,MAAM,EACN,OAAO,EACP,WAAW,EAKX,WAAW,EACZ,MAAM,SAAS,CAAC;AAGjB,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,MAAM,CAAC;QACf,UAAU,QAAQ;YAChB,IAAI,EAAE,WAAW,CAAC;SACnB;KACF;IAED,UAAU,kBAAkB;QAC1B,IAAI,EAAE,WAAW,CAAC;KACnB;CACF;AAGD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC;KACH,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,WAAW,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;GAEG;AACH,qBAAa,OAAQ,SAAQ,MAAO,YAAW,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC;IAQtC,OAAO,EAAE,aAAa;IAP/D,UAAU,EAAE,OAAO,CAAS;IAC5B,OAAO,EAAE,WAAW,CAAC;IAErB,IAAI,GAAG,IAAI,MAAM,CAEhB;gBAEW,OAAO,EAAE,WAAW,EAAS,OAAO,EAAE,aAAa;IAc/D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyC3B;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAqD5D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAWlC;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BzD;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtD;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAa5B;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,OAAO,CAAC,OAAO,CAAC;gBACnC,MAAM,EAAE,MAAM;IAI1B,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAMnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAO5B"}
package/lib/index.js CHANGED
@@ -1,116 +1,245 @@
1
1
  import { Client } from "kook-client";
2
2
  import path from "path";
3
- import { Adapter, registerAdapter, Message, segment, usePlugin } from "zhin.js";
3
+ import { Adapter, Message, usePlugin, } from "zhin.js";
4
4
  const plugin = usePlugin();
5
+ const { provide } = plugin;
6
+ const logger = plugin.logger;
7
+ /**
8
+ * KOOK Bot 实现
9
+ */
5
10
  export class KookBot extends Client {
6
- $connected;
7
- constructor(config) {
8
- if (!config.data_dir)
9
- config.data_dir = path.join(process.cwd(), 'data');
10
- super(config);
11
- this.$config = config;
11
+ $config;
12
+ $connected = false;
13
+ adapter;
14
+ get $id() {
15
+ return this.$config.name;
12
16
  }
17
+ constructor(adapter, $config) {
18
+ super({
19
+ token: $config.token,
20
+ mode: "ws", // KOOK 默认使用 WebSocket 模式
21
+ data_dir: $config.data_dir || path.join(process.cwd(), "data", "kook"),
22
+ timeout: $config.timeout || 10000,
23
+ max_retry: $config.max_retry || 3,
24
+ ignore: ($config.ignore || "bot"),
25
+ logLevel: ($config.logLevel || "info"),
26
+ });
27
+ this.$config = $config;
28
+ this.adapter = adapter;
29
+ this.setupEventListeners();
30
+ }
31
+ /**
32
+ * 设置事件监听器
33
+ */
34
+ setupEventListeners() {
35
+ // 监听消息事件
36
+ this.on("message", (msg) => {
37
+ try {
38
+ const message = this.$formatMessage(msg);
39
+ this.adapter.emit("message.receive", message);
40
+ // 根据消息类型触发特定事件
41
+ const eventMap = {
42
+ private: "message.private.receive",
43
+ group: "message.group.receive",
44
+ channel: "message.channel.receive",
45
+ };
46
+ const specificEvent = eventMap[msg.message_type];
47
+ if (specificEvent) {
48
+ this.adapter.emit(specificEvent, message);
49
+ }
50
+ }
51
+ catch (error) {
52
+ logger.error(`处理 KOOK 消息失败:`, error);
53
+ }
54
+ });
55
+ // 监听连接事件
56
+ this.on("connect", () => {
57
+ this.$connected = true;
58
+ logger.info(`KOOK Bot ${this.$id} 已连接`);
59
+ });
60
+ // 监听断开事件
61
+ this.on("disconnect", () => {
62
+ this.$connected = false;
63
+ logger.warn(`KOOK Bot ${this.$id} 已断开`);
64
+ });
65
+ // 监听错误事件
66
+ this.on("error", (error) => {
67
+ logger.error(`KOOK Bot ${this.$id} 错误:`, error);
68
+ });
69
+ }
70
+ /**
71
+ * 将 KOOK 消息转换为标准消息格式
72
+ */
13
73
  $formatMessage(msg) {
14
74
  const message = Message.from(msg, {
15
75
  $id: msg.message_id.toString(),
16
- $adapter: 'kook',
17
- $bot: `${this.$config.name}`,
76
+ $adapter: "kook",
77
+ $bot: this.$id,
18
78
  $sender: {
19
79
  id: msg.author_id.toString(),
20
80
  name: msg.author.info.nickname.toString(),
21
81
  },
22
82
  $channel: {
23
- id: msg.message_type === 'channel' ? msg.channel_id.toString() : msg.author_id.toString(),
24
- type: msg.message_type
83
+ id: msg.message_type === "channel" ? msg.channel_id.toString() : msg.author_id.toString(),
84
+ type: msg.message_type,
25
85
  },
26
- $content: KookBot.toSegments(msg.message),
86
+ $content: this.parseMessageContent(msg.message),
27
87
  $raw: msg.raw_message,
28
88
  $timestamp: msg.timestamp,
29
89
  $recall: async () => {
30
90
  await this.$recallMessage(message.$id);
31
91
  },
32
92
  $reply: async (content, quote) => {
33
- if (!Array.isArray(content))
34
- content = [content];
35
- if (quote)
36
- content.unshift({ type: 'reply', data: { id: typeof quote === "boolean" ? message.$id : quote } });
93
+ const elements = Array.isArray(content) ? content : [content];
94
+ const finalContent = [];
95
+ if (quote) {
96
+ finalContent.push({
97
+ type: "reply",
98
+ data: {
99
+ id: typeof quote === "boolean" ? message.$id : quote,
100
+ },
101
+ });
102
+ }
103
+ finalContent.push(...elements.map(el => typeof el === 'string' ? { type: 'text', data: { text: el } } : el));
37
104
  return await this.$sendMessage({
38
105
  ...message.$channel,
39
- context: 'kook',
40
- bot: `${this.$config.name}`,
41
- content
106
+ context: "kook",
107
+ bot: this.$id,
108
+ content: finalContent,
42
109
  });
43
- }
110
+ },
44
111
  });
45
112
  return message;
46
113
  }
114
+ /**
115
+ * 解析消息内容为消息段数组
116
+ */
117
+ parseMessageContent(content) {
118
+ // 简化的消息解析,实际应该根据 KOOK 的消息格式解析
119
+ // TODO: 实现完整的 KOOK 消息格式解析
120
+ return [{ type: "text", data: { text: content } }];
121
+ }
122
+ /**
123
+ * 连接到 KOOK
124
+ */
47
125
  async $connect() {
48
- await super.connect();
49
- this.on('message', (m) => this.handleKookMessage(m));
50
- this.$connected = true;
126
+ try {
127
+ await this.connect();
128
+ this.$connected = true;
129
+ logger.info(`KOOK Bot ${this.$id} 连接成功`);
130
+ }
131
+ catch (error) {
132
+ logger.error(`KOOK Bot ${this.$id} 连接失败:`, error);
133
+ throw error;
134
+ }
51
135
  }
136
+ /**
137
+ * 断开连接
138
+ */
52
139
  async $disconnect() {
53
- await super.disconnect();
54
- this.$connected = false;
140
+ try {
141
+ await this.disconnect();
142
+ this.$connected = false;
143
+ logger.info(`KOOK Bot ${this.$id} 已断开连接`);
144
+ }
145
+ catch (error) {
146
+ logger.error(`KOOK Bot ${this.$id} 断开连接失败:`, error);
147
+ throw error;
148
+ }
55
149
  }
150
+ /**
151
+ * 发送消息
152
+ */
56
153
  async $sendMessage(options) {
57
- options = await plugin.app.handleBeforeSend(options);
58
- switch (options.type) {
59
- case 'private': {
60
- const result = await this.sendPrivateMsg(options.id, KookBot.toSendable(options.content));
61
- plugin.logger.info(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(options.content)}`);
62
- return `private-${options.id}:${result.msg_id.toString()}`;
63
- break;
154
+ try {
155
+ const { id, type, content } = options;
156
+ // 将消息段转换为 KOOK 格式
157
+ const elements = Array.isArray(content)
158
+ ? content.map(el => typeof el === 'string' ? { type: 'text', data: { text: el } } : el)
159
+ : [typeof content === 'string' ? { type: 'text', data: { text: content } } : content];
160
+ const kookContent = this.convertToKookFormat(elements);
161
+ // 根据消息类型发送
162
+ let result;
163
+ if (type === "private") {
164
+ result = await this.sendPrivateMsg(id, kookContent);
64
165
  }
65
- case "channel": {
66
- const result = await this.sendChannelMsg(options.id, KookBot.toSendable(options.content));
67
- plugin.logger.info(`${this.$config.name} send ${options.type}(${options.id}):${segment.raw(options.content)}`);
68
- return `channel-${options.id}:${result.msg_id.toString()}`;
69
- break;
166
+ else {
167
+ result = await this.sendChannelMsg(id, kookContent);
70
168
  }
71
- default:
72
- throw new Error(`unsupported channel type ${options.type}`);
169
+ return result?.msg_id || "";
170
+ }
171
+ catch (error) {
172
+ logger.error(`KOOK Bot ${this.$id} 发送消息失败:`, error);
173
+ throw error;
73
174
  }
74
175
  }
75
- async $recallMessage(id) {
76
- if (!/^(private|channel)-([^\:]+):(.+)$/.test(id))
77
- throw new Error(`invalid message id ${id}`);
78
- const [target_type, target_id, message_id] = id.match(/^(private|channel)-([^\:]+):(.+)$/);
79
- if (target_type === 'private')
80
- await this.recallPrivateMsg(target_id, message_id);
81
- if (target_type === 'channel')
82
- await this.recallChannelMsg(target_id, message_id);
176
+ /**
177
+ * 撤回消息
178
+ */
179
+ async $recallMessage(messageId) {
180
+ try {
181
+ await this.deleteMsg(messageId);
182
+ logger.debug(`KOOK Bot ${this.$id} 撤回消息: ${messageId}`);
183
+ }
184
+ catch (error) {
185
+ logger.error(`KOOK Bot ${this.$id} 撤回消息失败:`, error);
186
+ throw error;
187
+ }
83
188
  }
84
- handleKookMessage(msg) {
85
- const message = this.$formatMessage(msg);
86
- plugin.dispatch('message.receive', message);
87
- plugin.logger.info(`${this.$config.name} recv ${message.$channel.type}(${message.$channel.id}):${segment.raw(message.$content)}`);
88
- plugin.dispatch(`message.${message.$channel.type}.receive`, message);
189
+ /**
190
+ * 将消息段转换为 KOOK 格式
191
+ */
192
+ convertToKookFormat(content) {
193
+ // 简化的转换,实际应该根据 KOOK 的消息格式转换
194
+ // TODO: 实现完整的消息段到 KOOK 格式的转换
195
+ return content
196
+ .map((el) => {
197
+ if (el.type === "text") {
198
+ return el.data.text;
199
+ }
200
+ // 处理其他类型的消息段
201
+ return "";
202
+ })
203
+ .join("");
89
204
  }
90
205
  }
91
- (function (KookBot) {
92
- function toSegments(message) {
93
- if (!Array.isArray(message))
94
- message = [message];
95
- return message.map((item) => {
96
- if (typeof item === "string")
97
- return { type: 'text', data: { text: item } };
98
- const { type, ...data } = item;
99
- return { type: type === 'markdown' ? 'text' : type, data };
100
- });
206
+ /**
207
+ * KOOK 适配器
208
+ */
209
+ export class KookAdapter extends Adapter {
210
+ constructor(plugin) {
211
+ super(plugin, "kook", []);
101
212
  }
102
- KookBot.toSegments = toSegments;
103
- function toSendable(content) {
104
- if (!Array.isArray(content))
105
- content = [content];
106
- return content.map((segment) => {
107
- if (typeof segment === "string")
108
- return { type: 'text', text: segment };
109
- const { type, data } = segment;
110
- return { type, ...data };
111
- });
213
+ createBot(config) {
214
+ const bot = new KookBot(this, config);
215
+ this.bots.set(bot.$id, bot);
216
+ return bot;
217
+ }
218
+ async start() {
219
+ logger.info("KOOK 适配器已启动");
112
220
  }
113
- KookBot.toSendable = toSendable;
114
- })(KookBot || (KookBot = {}));
115
- registerAdapter(new Adapter('kook', KookBot));
221
+ async stop() {
222
+ // 断开所有 bot 连接
223
+ for (const bot of this.bots.values()) {
224
+ await bot.$disconnect();
225
+ }
226
+ logger.info("KOOK 适配器已停止");
227
+ }
228
+ }
229
+ /**
230
+ * 注册 KOOK 适配器
231
+ */
232
+ provide({
233
+ name: "kook",
234
+ description: "KOOK Adapter",
235
+ mounted: async (p) => {
236
+ const adapter = new KookAdapter(p);
237
+ await adapter.start();
238
+ return adapter;
239
+ },
240
+ dispose: async (adapter) => {
241
+ await adapter.stop();
242
+ },
243
+ });
244
+ logger.info("✅ KOOK 适配器已加载");
116
245
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/adapter-kook",
3
- "version": "1.0.16",
3
+ "version": "1.0.18",
4
4
  "description": "zhin adapter for kook",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -30,13 +30,8 @@
30
30
  "typescript": "^5.3.0"
31
31
  },
32
32
  "peerDependencies": {
33
- "zhin.js": "1.0.16",
34
- "@zhin.js/types": "1.0.5"
35
- },
36
- "peerDependenciesMeta": {
37
- "@zhin.js/types": {
38
- "optional": true
39
- }
33
+ "@zhin.js/logger": "0.1.2",
34
+ "zhin.js": "1.0.18"
40
35
  },
41
36
  "files": [
42
37
  "lib",