@zhin.js/adapter-icqq 1.0.20 → 1.0.22

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 +14 -0
  2. package/README.md +301 -24
  3. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @zhin.js/adapter-icqq
2
2
 
3
+ ## 1.0.22
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [3bc5d56]
8
+ - @zhin.js/console@1.0.13
9
+ - zhin.js@1.0.17
10
+
11
+ ## 1.0.21
12
+
13
+ ### Patch Changes
14
+
15
+ - zhin.js@1.0.16
16
+
3
17
  ## 1.0.20
4
18
 
5
19
  ### Patch Changes
package/README.md CHANGED
@@ -1,23 +1,27 @@
1
1
  # @zhin.js/adapter-icqq
2
2
 
3
- 基于 ICQQ Zhin 机器人适配器,用于连接 QQ 机器人。
3
+ Zhin.js ICQQ 适配器,基于 ICQQ 库实现的 QQ 机器人适配器,支持 QQ 群聊和私聊消息。
4
4
 
5
5
  ## 功能特性
6
6
 
7
- - 🤖 支持QQ群聊和私聊消息处理
7
+ - 🤖 支持 QQ 群聊和私聊消息处理
8
8
  - 🔐 完整的登录验证支持(短信验证、二维码、滑块验证)
9
9
  - 📨 消息发送和接收处理
10
10
  - 🔄 消息格式转换和适配
11
11
  - 📁 自动数据目录管理
12
+ - 🖼️ 支持图片、语音、视频等多媒体消息
13
+ - 🎯 支持 @ 提及和引用回复
12
14
 
13
15
  ## 安装
14
16
 
15
17
  ```bash
16
- npm install @zhin.js/adapter-icqq @icqqjs/icqq
18
+ pnpm add @zhin.js/adapter-icqq @icqqjs/icqq
17
19
  ```
18
20
 
19
21
  ## 配置
20
22
 
23
+ ### 密码登录
24
+
21
25
  ```typescript
22
26
  // zhin.config.ts
23
27
  import { defineConfig } from 'zhin.js'
@@ -26,40 +30,313 @@ export default defineConfig({
26
30
  bots: [
27
31
  {
28
32
  context: 'icqq',
29
- name: process.env.ICQQ_LOGIN_UIN, // QQ
30
- password: process.env.ONEBOT_TOKEN, // QQ密码(可选,为空则扫码登录)
31
- platform: 2, // 1: 安卓手机, 2: 安卓手表, 3: MacOS, 4: 企点
32
- log_level: 'off', // 日志级别
33
- data_dir: './data', // 数据目录
34
- scope: 'icqqjs', // 作用域
35
- sign_api_addr: process.env.ICQQ_SIGN_ADDR // 签名API地址(可选)
33
+ name: process.env.ICQQ_LOGIN_UIN, // QQ 号(必需)
34
+ password: process.env.ICQQ_PASSWORD, // QQ 密码
35
+ platform: 2, // 登录设备平台
36
+ log_level: 'info', // 日志级别
37
+ data_dir: './data', // 数据目录
38
+ sign_api_addr: process.env.SIGN_API // 签名 API 地址(可选)
39
+ }
40
+ ],
41
+ plugins: [
42
+ 'adapter-icqq'
43
+ ]
44
+ })
45
+ ```
46
+
47
+ ### 扫码登录
48
+
49
+ ```typescript
50
+ export default defineConfig({
51
+ bots: [
52
+ {
53
+ context: 'icqq',
54
+ name: process.env.ICQQ_LOGIN_UIN, // QQ 号
55
+ password: '', // 留空使用扫码登录
56
+ platform: 2,
57
+ log_level: 'info',
58
+ data_dir: './data'
36
59
  }
37
60
  ],
38
61
  plugins: ['adapter-icqq']
39
62
  })
40
63
  ```
41
64
 
42
- ## 使用方式
65
+ ## 配置参数说明
66
+
67
+ ### 必需参数
68
+
69
+ - `context`: 固定为 `'icqq'`
70
+ - `name`: QQ 账号(字符串格式)
71
+
72
+ ### 可选参数
73
+
74
+ - `password`: QQ 密码(留空则使用扫码登录)
75
+ - `platform`: 登录平台类型
76
+ - `1`: Android Phone(安卓手机)
77
+ - `2`: Android Watch(安卓手表,推荐)
78
+ - `3`: MacOS
79
+ - `4`: 企点
80
+ - `5`: iPad
81
+ - `log_level`: 日志级别
82
+ - `'off'`: 关闭
83
+ - `'fatal'`: 致命错误
84
+ - `'error'`: 错误
85
+ - `'warn'`: 警告
86
+ - `'info'`: 信息
87
+ - `'debug'`: 调试
88
+ - `'trace'`: 追踪
89
+ - `data_dir`: 数据存储目录(默认:`./data`)
90
+ - `sign_api_addr`: 签名服务器地址(可选,用于提高稳定性)
91
+
92
+ ## 使用示例
93
+
94
+ ### 基础消息处理
95
+
96
+ ```typescript
97
+ import { addCommand, MessageCommand } from 'zhin.js'
98
+
99
+ addCommand(new MessageCommand('hello <name:text>')
100
+ .action(async (message, result) => {
101
+ return `你好,${result.params.name}!`
102
+ })
103
+ )
104
+ ```
105
+
106
+ ### 群聊消息
107
+
108
+ ```typescript
109
+ import { onGroupMessage } from 'zhin.js'
110
+
111
+ onGroupMessage(async (message) => {
112
+ console.log(`群 ${message.$channel.id} 收到消息:${message.$raw}`)
113
+
114
+ // 回复群消息
115
+ await message.$reply('收到消息了!')
116
+ })
117
+ ```
118
+
119
+ ### 私聊消息
120
+
121
+ ```typescript
122
+ import { onPrivateMessage } from 'zhin.js'
123
+
124
+ onPrivateMessage(async (message) => {
125
+ console.log(`私聊消息来自:${message.$sender.name}`)
126
+ await message.$reply('你好!')
127
+ })
128
+ ```
129
+
130
+ ### 发送图片
131
+
132
+ ```typescript
133
+ addCommand(new MessageCommand('pic <url:text>')
134
+ .action(async (message, result) => {
135
+ return [
136
+ { type: 'image', data: { file: result.params.url } }
137
+ ]
138
+ })
139
+ )
140
+ ```
141
+
142
+ ### 发送语音
143
+
144
+ ```typescript
145
+ addCommand(new MessageCommand('voice <file:text>')
146
+ .action(async (message, result) => {
147
+ return [
148
+ { type: 'record', data: { file: result.params.file } }
149
+ ]
150
+ })
151
+ )
152
+ ```
153
+
154
+ ### @ 提及
155
+
156
+ ```typescript
157
+ addCommand(new MessageCommand('at <user:at>')
158
+ .action(async (message, result) => {
159
+ const atUser = result.params.user
160
+ return [
161
+ { type: 'at', data: { qq: atUser.data.qq } },
162
+ { type: 'text', data: { text: ' 你好!' } }
163
+ ]
164
+ })
165
+ )
166
+ ```
167
+
168
+ ## 登录流程
169
+
170
+ ### 密码登录
43
171
 
44
- 适配器会自动处理登录流程:
45
- - 支持密码登录、二维码登录
46
- - 自动处理短信验证码输入
47
- - 支持滑块验证
172
+ 1. 配置 QQ 号和密码
173
+ 2. 启动机器人
174
+ 3. 如需验证,根据提示输入验证码或完成滑块验证
175
+ 4. 登录成功后会保存登录状态
48
176
 
49
- ## 消息处理
177
+ ### 扫码登录
50
178
 
51
- - 自动将ICQQ消息格式转换为Zhin标准消息格式
52
- - 支持群聊和私聊消息
53
- - 提供消息回复功能
179
+ 1. 配置 QQ 号,密码留空
180
+ 2. 启动机器人
181
+ 3. 扫描控制台显示的二维码
182
+ 4. 手机 QQ 确认登录
183
+ 5. 登录成功后会保存登录状态
184
+
185
+ ### 设备锁验证
186
+
187
+ 如遇设备锁:
188
+ 1. 选择短信验证或扫码验证
189
+ 2. 短信验证:输入收到的验证码
190
+ 3. 扫码验证:扫描二维码并在手机确认
191
+
192
+ ## 消息类型支持
193
+
194
+ ### 接收消息类型
195
+
196
+ - ✅ 文本消息
197
+ - ✅ 图片消息
198
+ - ✅ 语音消息
199
+ - ✅ 视频消息
200
+ - ✅ @ 提及
201
+ - ✅ 表情消息
202
+ - ✅ 引用回复
203
+ - ✅ 文件消息
204
+ - ✅ JSON 卡片消息
205
+
206
+ ### 发送消息类型
207
+
208
+ - ✅ 文本消息
209
+ - ✅ 图片消息(支持本地文件、URL、Base64)
210
+ - ✅ 语音消息
211
+ - ✅ 视频消息
212
+ - ✅ @ 提及
213
+ - ✅ 表情消息
214
+ - ✅ 引用回复
215
+ - ✅ 文件消息
216
+ - ✅ JSON 卡片消息
217
+ - ✅ 戳一戳
218
+ - ✅ 音乐分享
219
+
220
+ ## API 方法
221
+
222
+ ```typescript
223
+ const bot = app.adapters.get('icqq')?.bots.get('你的QQ号')
224
+
225
+ // 发送群消息
226
+ await bot.sendGroupMsg(groupId, '消息内容')
227
+
228
+ // 发送私聊消息
229
+ await bot.sendPrivateMsg(userId, '消息内容')
230
+
231
+ // 撤回消息
232
+ await bot.$recallMessage(messageId)
233
+
234
+ // 获取群列表
235
+ const groupList = bot.getGroupList()
236
+
237
+ // 获取好友列表
238
+ const friendList = bot.getFriendList()
239
+
240
+ // 获取群成员信息
241
+ const memberInfo = bot.getGroupMemberInfo(groupId, userId)
242
+ ```
243
+
244
+ ## 签名服务器
245
+
246
+ 为了提高登录稳定性和避免风控,建议配置签名服务器:
247
+
248
+ ```typescript
249
+ {
250
+ sign_api_addr: 'http://localhost:8080/sign' // 签名服务器地址
251
+ }
252
+ ```
253
+
254
+ 常用签名服务器:
255
+ - [unidbg-fetch-qsign](https://github.com/fuqiuluo/unidbg-fetch-qsign)
256
+ - [qsign](https://github.com/MliKiowa/NapCatQQ)
257
+
258
+ ## 注意事项
259
+
260
+ ### 账号安全
261
+
262
+ - 建议使用小号测试
263
+ - 避免短时间内发送大量消息
264
+ - 建议配置签名服务器
265
+ - 定期更新 ICQQ 版本
266
+
267
+ ### 风控问题
268
+
269
+ 如遇风控:
270
+ 1. 降低消息发送频率
271
+ 2. 配置签名服务器
272
+ 3. 更换登录设备类型(platform 参数)
273
+ 4. 使用扫码登录
274
+ 5. 等待一段时间后重试
275
+
276
+ ### 设备选择
277
+
278
+ 推荐使用的 platform 值:
279
+ - `2` (Android Watch): 最稳定,推荐
280
+ - `5` (iPad): 功能较全
281
+ - `3` (MacOS): 较稳定
282
+
283
+ 避免使用:
284
+ - `1` (Android Phone): 容易被风控
285
+
286
+ ## 常见问题
287
+
288
+ ### Q: 登录时提示"密码错误"?
289
+
290
+ A:
291
+ 1. 确认密码是否正确
292
+ 2. 尝试使用扫码登录
293
+ 3. 检查是否被风控,需要在手机 QQ 上验证
294
+
295
+ ### Q: 登录后频繁掉线?
296
+
297
+ A:
298
+ 1. 配置签名服务器
299
+ 2. 更换 platform 参数
300
+ 3. 检查网络连接是否稳定
301
+ 4. 降低消息发送频率
302
+
303
+ ### Q: 无法发送图片?
304
+
305
+ A:
306
+ 1. 检查图片 URL 是否有效
307
+ 2. 本地文件需使用绝对路径
308
+ 3. 确认图片格式和大小符合要求
309
+
310
+ ### Q: 如何处理滑块验证?
311
+
312
+ A:
313
+ 1. 控制台会显示滑块验证链接
314
+ 2. 在浏览器中打开链接
315
+ 3. 完成滑块验证
316
+ 4. 将验证票据复制到控制台
317
+
318
+ ## 相关链接
319
+
320
+ - [ICQQ 项目](https://github.com/icqqjs/icqq)
321
+ - [Zhin.js 官方文档](https://github.com/zhinjs/zhin)
322
+ - [签名服务器](https://github.com/fuqiuluo/unidbg-fetch-qsign)
54
323
 
55
324
  ## 依赖项
56
325
 
57
- - `@icqqjs/icqq` - ICQQ核心库
58
- - `zhin.js` - Zhin核心框架
326
+ - `@icqqjs/icqq` - ICQQ 核心库
327
+ - `zhin.js` - Zhin 核心框架
59
328
 
60
329
  ## 开发
61
330
 
62
331
  ```bash
63
- npm run build # 构建
64
- npm run clean # 清理构建文件
65
- ```
332
+ pnpm build # 构建
333
+ pnpm clean # 清理构建文件
334
+ ```
335
+
336
+ ## 许可证
337
+
338
+ MIT License
339
+
340
+ ## 贡献
341
+
342
+ 欢迎提交 Issue 和 Pull Request!
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/adapter-icqq",
3
- "version": "1.0.20",
3
+ "version": "1.0.22",
4
4
  "description": "zhin adapter for icqq",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -43,11 +43,11 @@
43
43
  "typescript": "^5.3.0"
44
44
  },
45
45
  "peerDependencies": {
46
- "zhin.js": "1.0.15",
47
- "@zhin.js/client": "1.0.5",
46
+ "zhin.js": "1.0.17",
48
47
  "@zhin.js/http": "1.0.7",
48
+ "@zhin.js/client": "1.0.5",
49
49
  "@zhin.js/types": "1.0.5",
50
- "@zhin.js/console": "1.0.12"
50
+ "@zhin.js/console": "1.0.13"
51
51
  },
52
52
  "peerDependenciesMeta": {
53
53
  "@zhin.js/client": {