@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 +15 -0
- package/README.md +264 -24
- package/lib/index.d.ts +78 -18
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +204 -75
- package/lib/index.js.map +1 -1
- package/package.json +3 -8
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
|
-
|
|
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
|
-
|
|
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,
|
|
31
|
-
mode: 'websocket',
|
|
32
|
-
data_dir: './data'
|
|
33
|
-
|
|
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: [
|
|
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
|
-
|
|
43
|
-
-
|
|
44
|
-
- 自动处理连接和断线重连
|
|
45
|
-
- 支持消息事件监听
|
|
227
|
+
- 频道消息:`channel-{channelId}:{messageId}`
|
|
228
|
+
- 私聊消息:`private-{userId}:{messageId}`
|
|
46
229
|
|
|
47
|
-
##
|
|
230
|
+
## 注意事项
|
|
48
231
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
63
|
-
|
|
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
|
|
2
|
-
import { Bot, Adapter, Message, SendOptions,
|
|
3
|
-
declare module
|
|
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:
|
|
10
|
+
kook: KookAdapter;
|
|
6
11
|
}
|
|
7
12
|
}
|
|
8
|
-
export interface KookBotConfig
|
|
9
|
-
context:
|
|
10
|
-
name:
|
|
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
|
-
|
|
13
|
-
|
|
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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
23
|
-
|
|
70
|
+
/**
|
|
71
|
+
* 撤回消息
|
|
72
|
+
*/
|
|
73
|
+
$recallMessage(messageId: string): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* 将消息段转换为 KOOK 格式
|
|
76
|
+
*/
|
|
77
|
+
private convertToKookFormat;
|
|
24
78
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,
|
|
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,
|
|
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
|
-
$
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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:
|
|
17
|
-
$bot:
|
|
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 ===
|
|
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:
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
if (quote)
|
|
36
|
-
|
|
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:
|
|
40
|
-
bot:
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
54
|
-
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
66
|
-
|
|
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
|
-
|
|
72
|
-
|
|
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
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
await this.
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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":"AAAA,OAAO,EAAE,MAAM,
|
|
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.
|
|
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.
|
|
34
|
-
"
|
|
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",
|