1
1
# API和事件
2
2
3
3
+ [ oicq.createClient(uin[ ,config] )] ( #oicq.createClient(uin[,config]) )
4
- + [ oicq.setGlobalConfig(config)] ( #oicq.setGlobalConfig(config) )
5
4
+ [ Class: oicq.Client] ( #Class-Client )
6
5
+ [ Events] ( #Events )
7
6
+ [ Event: system] ( #Event-system )
12
11
+ [ client.captchaLogin(captcha)] ( #client.captchaLogin(captcha) )
13
12
+ [ client.terminate()] ( #client.terminate() )
14
13
+ [ APIs] ( #APIs )
14
+ + [ oicq.setGlobalConfig(config)] ( #oicq.setGlobalConfig(config) )
15
15
16
16
----
17
17
20
20
+ ` uin ` \< number>
21
21
+ ` config ` \< Object>
22
22
23
- 创建一个实例 :
23
+ 创建client一个实例 :
24
24
25
25
``` js
26
26
const oicq = require (" oicq" );
@@ -40,62 +40,43 @@ const config = {
40
40
};
41
41
```
42
42
43
- ※ 不建议在单个工作线程中运行多个实例。如果确实有需要,建议使用 [ Worker threads] ( https://nodejs.org/dist/latest/docs/api/worker_threads.html ) 或 [ Child process] ( https://nodejs.org/dist/latest/docs/api/child_process.html ) 管理实例。
44
-
45
- ----
46
-
47
- ## oicq.setGlobalConfig(config)
48
-
49
- + ` config ` \< Object>
50
-
51
- 全局设置
52
-
53
- ``` js
54
- // 要使用默认配置请勿传递该字段
55
- oicq .setGlobalConfig ({
56
- web_image_timeout: 0 , // 下载网络图片的超时时间(0表示系统自己判断)
57
- web_record_timeout: 0 , // 下载网络语音的超时时间
58
- cache_root: " " , // 缓存文件夹根目录,需要可写权限,默认主目录下的data文件夹
59
- debug: false ,
60
- });
61
- ```
62
-
63
- ----
64
-
65
- ## Class: ` Client `
66
-
67
- 只能使用工厂方法 createClient 创建实例。
68
-
69
43
----
70
44
71
45
## Events
72
46
73
47
使用 ` client.on() ` 来监听一个事件:
74
48
75
49
``` js
76
- client .on (" system.login" , (data )=> {
50
+ client .on (" system.login.captcha " , (data )=> {
77
51
console .log (data);
78
52
});
79
53
```
80
54
81
- 事件为冒泡传递,例如 ` request.group.add ` 事件,若未监听会沿着 ` request.group ` 传递到 ` request `
55
+ 事件为冒泡传递,例如 ` request.group.add ` 事件,若未监听会沿着二级分类 ` request.group ` 传递到一级分类 ` request `
82
56
事件使用cqhttp风格命名和参数,所有事件数据都为json对象,并包含以下共通字段:
83
57
84
58
+ ` self_id `
85
59
+ ` time `
86
60
+ ` post_type ` 一级分类 system, message, request, notice
87
- + ` {post_type}_type ` 二级分类如 system.login, request.group
88
- + ` sub_type ` 三级分类,有时会没有
61
+ + ` {post_type}_type ` 二级分类 如:login, online, offline, group, friend, private 等
62
+ + ` sub_type ` 三级分类 如:captcha, add, invite 等,有时会没有
63
+
64
+ 之后只列出其他非共通的字段。
89
65
90
66
----
91
67
92
68
## Event: ` system `
93
69
94
70
+ ` system.login `
95
- + ` system.login.captcha ` 收到验证码 ` image ` 字段为图像Buffer
96
- + ` system.login.device ` 需要解设备锁 ` url ` 字段为设备锁验证地址
97
- + ` system.login.error ` 其他原因如密码错误 ` message ` 字段为失败原因
71
+ + ` system.login.captcha ` 收到验证码
72
+ + * ` image ` * 图片数据(Buffer)
73
+ + ` system.login.device ` 需要解设备锁
74
+ + * ` url ` * 设备锁验证地址(string)
75
+ + ` system.login.error ` 其他原因导致登陆失败
76
+ + * ` message ` * "密码错误"等(string)
77
+
98
78
+ ` system.online ` 上线事件,可以开始处理消息
79
+
99
80
+ ` system.offline ` 下线事件
100
81
+ ` system.offline.network ` 网络断开
101
82
+ ` system.offline.frozen ` 被冻结
@@ -105,58 +86,197 @@ client.on("system.login", (data)=>{
105
86
106
87
----
107
88
108
- 以下事件与 [ CQHTTP] ( https://github.com/howmanybots/onebot/blob/master/v11/specs/event/README.md ) 大同小异
89
+ 以下事件使用 [ CQHTTP] ( https://github.com/howmanybots/onebot/blob/master/v11/specs/event/README.md ) 风格的命名和字段
109
90
110
91
## Event: ` message `
111
92
112
- + ` message.private `
93
+ + ** message.private**
94
+
113
95
+ ` message.private.friend ` 好友消息
114
96
+ ` message.private.single ` 单向好友消息(对方未加你)
115
97
+ ` message.private.group ` 群临时会话
116
98
+ ` message.private.other ` 其他临时会话
117
- + ` message.group `
99
+ + * ` message_id ` * string型
100
+ + * ` user_id ` * 对方QQ号(number)
101
+ + * ` font ` * 字体名称(string),如:"微软雅黑"
102
+ + * ` message ` * 数组格式的消息
103
+ + * ` raw_message ` * 字符串格式的消息(CQ码已转义)
104
+ + * ` sender ` *
105
+ + * ` user_id ` *
106
+ + * ` nickname ` * 昵称(string)
107
+ + * ` remark ` * 备注
108
+ + * ` sex ` * "male"或"female"或"unknown"
109
+ + * ` age ` * 年龄(number)
110
+
111
+ + ** message.group**
112
+
118
113
+ ` message.group.normal ` 群消息
119
114
+ ` message.group.anonymous ` 群匿名消息
115
+ + * ` message_id ` * string型
116
+ + * ` group_id ` * 群号(number)
117
+ + * ` group_name ` * 群名(string)
118
+ + * ` user_id ` * 对方QQ号(number)
119
+ + * ` anonymous ` * 非匿名消息时为null
120
+ + * ` id ` * 暂时为0
121
+ + * ` name ` * 匿名者的名字
122
+ + * ` flag ` * 暂时为空
123
+ + * ` font ` * 字体名称(string),如:"微软雅黑"
124
+ + * ` message ` * 数组格式的消息
125
+ + * ` raw_message ` * 字符串格式的消息(CQ码已转义)
126
+ + * ` sender ` *
127
+ + * ` user_id ` *
128
+ + * ` nickname ` * 昵称(string)
129
+ + * ` card ` * 群名片
130
+ + * ` sex ` * "male"或"female"或"unknown"
131
+ + * ` age ` * 年龄(number)
132
+ + * ` area ` * 暂时为"unknown"
133
+ + * ` level ` * 群等级(number)
134
+ + * ` role ` * "owner"或"admin"或"member"
135
+ + * ` title ` * 群头衔(string)
120
136
121
137
----
122
138
123
139
## Event: ` request `
124
140
125
- + ` request.friend `
141
+ + ** request.friend**
142
+
126
143
+ ` request.friend.add ` 好友请求
127
- + ` request.group `
144
+ + * ` user_id ` *
145
+ + * ` nickname ` *
146
+ + * ` source ` * 来源(某QQ群或搜索等)(string)
147
+ + * ` comment ` *
148
+ + * ` sex ` *
149
+ + * ` age ` *
150
+ + * ` flag ` * 用于处理请求时传入(string)
151
+
152
+ + ** request.group**
153
+
128
154
+ ` request.group.add ` 加群请求
155
+ + * ` group_id ` *
156
+ + * ` group_name ` *
157
+ + * ` user_id ` *
158
+ + * ` nickname ` *
159
+ + * ` comment ` *
160
+ + * ` flag ` *
161
+
129
162
+ ` request.group.invite ` 加群邀请
163
+ + * ` group_id ` *
164
+ + * ` group_name ` *
165
+ + * ` user_id ` *
166
+ + * ` nickname ` *
167
+ + * ` role ` * 邀请者的权限(admin或member)
168
+ + * ` flag ` *
130
169
131
170
----
132
171
133
172
## Event: ` notice `
134
173
135
174
为了统一风格,notice事件的命名和原版cqhttp有一定出入
136
175
137
- + ` notice.friend `
176
+ + ** notice.friend**
177
+
138
178
+ ` notice.friend.increase ` 好友增加
139
- + ` notice.friend.decrease ` 好友减少(被拉黑或自己删除)
179
+ + * ` user_id ` *
180
+ + * ` nickname ` *
181
+
182
+ + ` notice.friend.decrease ` 好友减少(被拉黑或自己删除都会触发)
183
+ + * ` user_id ` *
184
+ + * ` nickname ` *
185
+
140
186
+ ` notice.friend.recall ` 消息撤回事件
141
- + ` notice.group `
187
+ + * ` user_id ` *
188
+ + * ` message_id ` *
189
+
190
+ + ** notice.group**
191
+
142
192
+ ` notice.group.increase ` 群员增加
143
- + ` notice.group.decrease ` 群员减少
144
- + ` notice.group.recall ` 消息撤回事件
145
- + ` notice.group.admin ` 管理变更事件
193
+ + * ` group_id ` *
194
+ + * ` user_id ` *
195
+ + * ` nickname ` *
196
+
197
+ + ` notice.group.decrease ` 群员减少(bot在其他客户端自己退群,事件不会触发)
198
+ + * ` group_id ` *
199
+ + * ` operator_id ` * 操作者,自己退群的时候和user_id相同
200
+ + * ` user_id ` *
201
+ + * ` dismiss ` * 是否是解散(boolean型)
202
+
203
+ + ` notice.group.recall ` 群消息撤回事件
204
+ + * ` group_id ` *
205
+ + * ` operator_id ` *
206
+ + * ` user_id ` *
207
+ + * ` message_id ` *
208
+
209
+ + ` notice.group.admin ` 管理变更事件(bot是群主,在其他客户端设置管理,事件不会触发)
210
+ + * ` group_id ` *
211
+ + * ` user_id ` *
212
+ + * ` set ` * boolean型
213
+
146
214
+ ` notice.group.ban ` 群禁言事件
215
+ + * ` group_id ` *
216
+ + * ` operator_id ` *
217
+ + * ` user_id ` *
218
+ + * ` duration ` * 时间(0为解禁)
219
+
147
220
+ ` notice.group.transfer ` 群转让事件
221
+ + * ` group_id ` *
222
+ + * ` operator_id ` * 旧群主
223
+ + * ` user_id ` * 新群主
224
+
148
225
+ ` notice.group.notice ` 收到群公告
226
+ + * ` group_id ` *
227
+ + * ` user_id ` *
228
+ + * ` title ` *
229
+ + * ` content ` *
230
+
149
231
+ ` notice.group.file ` 收到群文件
232
+ + * ` group_id ` *
233
+ + * ` user_id ` *
234
+ + * ` file ` *
235
+ + * ` name ` *
236
+ + * ` url ` *
237
+ + * ` size ` *
238
+ + * ` md5 ` *
239
+ + * ` duration ` *
240
+
150
241
+ ` notice.group.name ` 群名变更事件
242
+ + * ` group_id ` *
243
+ + * ` user_id ` *
244
+ + * ` new_name ` *
245
+
246
+ + ` notice.group.title ` 群头衔变更事件
247
+ + * ` group_id ` *
248
+ + * ` user_id ` *
249
+ + * ` new_title ` *
250
+
151
251
+ ` notice.group.poke ` 群戳一戳事件
252
+ + * ` group_id ` *
253
+ + * ` operator_id ` * 操作者
254
+ + * ` user_id ` * 目标
255
+ + * ` action ` * 动作名
256
+ + * ` suffix ` * 动作后缀
257
+
258
+ + ` notice.group.setting ` 群设置变更事件,以下带有enable的字段都为 ` boolean `
259
+ + * ` enable_guest ` * 允许游客进入
260
+ + * ` enable_anonymous ` * 允许匿名
261
+ + * ` enable_upload_album ` * 允许群员上传相册
262
+ + * ` enable_upload_file ` * 允许群员上传文件
263
+ + * ` enable_temp_chat ` * 允许临时会话
264
+ + * ` enable_new_group ` * 允许发起新群聊
265
+ + * ` enable_show_honor ` * 展示群互动标识(龙王等)
266
+ + * ` enable_show_level ` * 展示群等级
267
+ + * ` enable_show_title ` * 展示群头衔
268
+ + * ` enable_confess ` * 开启坦白说
269
+ + * ` enable_cowrite ` * 开启一起写
270
+ + * ` group_id ` *
271
+ + * ` user_id ` * 操作者不明的时候为 -1
152
272
153
273
----
154
274
155
275
## 系统类API
156
276
157
277
## ` client.login(password_md5) ` 密码登陆
158
278
159
- + ` password_md5 ` \< string|Buffer> md5后的密码,可以是字符串或Buffer
279
+ + ` password_md5 ` \< string|Buffer> md5后的密码,hex字符串或Buffer
160
280
161
281
----
162
282
@@ -172,7 +292,7 @@ client.on("system.login", (data)=>{
172
292
173
293
## APIs
174
294
175
- (与 [ CQHTTP] ( https://github.com/howmanybots/onebot/blob/master/v11/specs/api/public.md ) 大同小异 )
295
+ (使用 [ CQHTTP] ( https://github.com/howmanybots/onebot/blob/master/v11/specs/api/public.md ) 风格的命名和参数 )
176
296
177
297
同步函数会直接返回。异步函数标注为 ` async ` ,返回的是 ` Promise ` ,返回值为以下格式的json对象:
178
298
@@ -265,3 +385,21 @@ message可以使用 `Array` 格式或 `String` 格式,支持CQ码
265
385
+ ` client.getLoginInfo() `
266
386
267
387
----
388
+
389
+ ## oicq.setGlobalConfig(config)
390
+
391
+ + ` config ` \< Object>
392
+
393
+ 全局设置
394
+
395
+ ``` js
396
+ // 要使用默认配置请勿传递该字段
397
+ oicq .setGlobalConfig ({
398
+ web_image_timeout: 0 , // 下载网络图片的超时时间(0表示系统自己判断)
399
+ web_record_timeout: 0 , // 下载网络语音的超时时间
400
+ cache_root: " " , // 缓存文件夹根目录,需要可写权限,默认主目录下的data文件夹
401
+ debug: false ,
402
+ });
403
+ ```
404
+
405
+ ----
0 commit comments