@zhin.js/adapter-kook 1.0.16 → 1.0.17

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 (3) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +234 -24
  3. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @zhin.js/adapter-kook
2
2
 
3
+ ## 1.0.17
4
+
5
+ ### Patch Changes
6
+
7
+ - zhin.js@1.0.17
8
+
3
9
  ## 1.0.16
4
10
 
5
11
  ### 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,245 @@ 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
+ ]
37
66
  })
38
67
  ```
39
68
 
40
- ## 使用方式
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
+ ### 基础消息处理
41
93
 
42
- 适配器会自动连接KOOK服务器:
43
- - 基于WebSocket协议通信
44
- - 自动处理连接和断线重连
45
- - 支持消息事件监听
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('收到你的私信了!')
123
+ })
124
+ ```
125
+
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
+ ```
46
142
 
47
- ## 消息处理
143
+ ## 消息类型支持
48
144
 
49
- - 自动将KOOK消息格式转换为Zhin标准消息格式
50
- - 支持频道消息和私聊消息
51
- - 支持Markdown消息格式
52
- - 提供消息回复功能
145
+ ### 接收消息类型
146
+
147
+ - ✅ 文本消息
148
+ - ✅ 图片消息
149
+ - ✅ 视频消息
150
+ - ✅ 文件消息
151
+ - ✅ Markdown 消息
152
+ - ✅ KMarkdown 消息
153
+ - ✅ 卡片消息
154
+
155
+ ### 发送消息类型
156
+
157
+ - ✅ 文本消息
158
+ - ✅ 图片消息
159
+ - ✅ 视频消息
160
+ - ✅ 文件消息
161
+ - ✅ Markdown 消息
162
+ - ✅ 卡片消息
163
+
164
+ ## API 方法
165
+
166
+ ```typescript
167
+ const bot = app.adapters.get('kook')?.bots.get('my-kook-bot')
168
+
169
+ // 发送频道消息
170
+ await bot.sendChannelMsg(channelId, '消息内容')
171
+
172
+ // 发送私聊消息
173
+ await bot.sendPrivateMsg(userId, '消息内容')
174
+
175
+ // 撤回消息
176
+ await bot.$recallMessage(messageId)
177
+ ```
178
+
179
+ ## WebSocket vs Webhook
180
+
181
+ ### WebSocket 模式(推荐)
182
+ - ✅ 更低的延迟
183
+ - ✅ 实时双向通信
184
+ - ✅ 无需公网 IP
185
+ - ✅ 配置简单
186
+
187
+ ### Webhook 模式
188
+ - ✅ 服务器资源占用少
189
+ - ✅ 可扩展性强
190
+ - ⚠️ 需要公网 IP
191
+ - ⚠️ 需要配置回调地址
192
+
193
+ ## 消息 ID 格式
194
+
195
+ 本适配器使用特殊的消息 ID 格式:
196
+
197
+ - 频道消息:`channel-{channelId}:{messageId}`
198
+ - 私聊消息:`private-{userId}:{messageId}`
199
+
200
+ ## 注意事项
201
+
202
+ ### 权限配置
203
+
204
+ 确保机器人有以下权限:
205
+ - 查看频道
206
+ - 发送消息
207
+ - 管理消息(如需撤回)
208
+ - 查看服务器成员列表
209
+
210
+ ### 频率限制
211
+
212
+ KOOK 有消息发送频率限制:
213
+ - 每秒最多 5 条消息
214
+ - 建议添加发送队列管理
215
+
216
+ ## 常见问题
217
+
218
+ ### Q: 机器人无法收到消息?
219
+
220
+ A: 检查以下几点:
221
+ 1. Token 是否正确
222
+ 2. 机器人是否已加入服务器
223
+ 3. 机器人是否有查看频道权限
224
+ 4. WebSocket 连接是否正常
225
+
226
+ ### Q: Webhook 模式无法工作?
227
+
228
+ A: 确认:
229
+ 1. Webhook URL 可以从公网访问
230
+ 2. 验证令牌配置正确
231
+ 3. 端口已开放
232
+ 4. HTTPS 配置正确(推荐)
233
+
234
+ ### Q: 如何发送卡片消息?
235
+
236
+ A: 使用 KOOK 的卡片消息格式:
237
+ ```typescript
238
+ await bot.sendChannelMsg(channelId, [
239
+ {
240
+ type: 'card',
241
+ data: {
242
+ // 卡片消息内容
243
+ }
244
+ }
245
+ ])
246
+ ```
247
+
248
+ ## 相关链接
249
+
250
+ - [KOOK 开发者平台](https://developer.kookapp.cn/)
251
+ - [KOOK 开发文档](https://developer.kookapp.cn/doc/)
252
+ - [kook-client 文档](https://github.com/zhinjs/kook-client)
253
+ - [Zhin.js 官方文档](https://github.com/zhinjs/zhin)
53
254
 
54
255
  ## 依赖项
55
256
 
56
- - `kook-client` - KOOK客户端库
57
- - `zhin.js` - Zhin核心框架
257
+ - `kook-client` - KOOK 客户端库
258
+ - `zhin.js` - Zhin 核心框架
58
259
 
59
260
  ## 开发
60
261
 
61
262
  ```bash
62
- npm run build # 构建
63
- npm run clean # 清理构建文件
263
+ pnpm build # 构建
264
+ pnpm clean # 清理构建文件
64
265
  ```
266
+
267
+ ## 许可证
268
+
269
+ MIT License
270
+
271
+ ## 贡献
272
+
273
+ 欢迎提交 Issue 和 Pull Request!
274
+
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.17",
4
4
  "description": "zhin adapter for kook",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -30,7 +30,7 @@
30
30
  "typescript": "^5.3.0"
31
31
  },
32
32
  "peerDependencies": {
33
- "zhin.js": "1.0.16",
33
+ "zhin.js": "1.0.17",
34
34
  "@zhin.js/types": "1.0.5"
35
35
  },
36
36
  "peerDependenciesMeta": {