mirai-js 2.8.3 → 2.8.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. package/1.mp3 +0 -0
  2. package/README.md +2 -0
  3. package/demo.ts +3 -6
  4. package/dist/browser/mirai-js.js +1 -1
  5. package/dist/node/borwserEntry.js +21 -0
  6. package/dist/node/core/uploadVoice.js +1 -1
  7. package/dist/node/lib/index.ts +0 -0
  8. package/index.ts +36 -3
  9. package/package.json +1 -1
  10. package/src/borwserEntry.js +11 -0
  11. package/src/core/uploadVoice.js +1 -1
  12. package/src/lib/index.ts +0 -0
  13. package/srcold/BaseType.d.ts +419 -0
  14. package/srcold/Bot.d.ts +567 -0
  15. package/srcold/Bot.js +1208 -0
  16. package/srcold/FileManager.js +270 -0
  17. package/srcold/Message.d.ts +66 -0
  18. package/srcold/Message.js +314 -0
  19. package/srcold/Middleware.d.ts +170 -0
  20. package/srcold/Middleware.js +657 -0
  21. package/srcold/Waiter.d.ts +13 -0
  22. package/srcold/Waiter.js +24 -0
  23. package/srcold/core/anno/deleteAnno.js +43 -0
  24. package/srcold/core/anno/getAnno.js +44 -0
  25. package/srcold/core/anno/publishAnno.js +44 -0
  26. package/srcold/core/auth.js +40 -0
  27. package/srcold/core/fs/deleteGroupFile.js +45 -0
  28. package/srcold/core/fs/getGroupFileInfo.js +46 -0
  29. package/srcold/core/fs/getGroupFileList.js +47 -0
  30. package/srcold/core/fs/makeGroupDir.js +45 -0
  31. package/srcold/core/fs/moveGroupFile.js +47 -0
  32. package/srcold/core/fs/renameGroupFile.js +44 -0
  33. package/srcold/core/fs/uploadGroupFIle.js +58 -0
  34. package/srcold/core/getFriendList.js +37 -0
  35. package/srcold/core/getGroupConfig.js +37 -0
  36. package/srcold/core/getGroupList.js +37 -0
  37. package/srcold/core/getMemberInfo.js +41 -0
  38. package/srcold/core/getMemberList.js +49 -0
  39. package/srcold/core/getSessionConfig.js +39 -0
  40. package/srcold/core/getUserProfile.js +40 -0
  41. package/srcold/core/messageFromId.js +40 -0
  42. package/srcold/core/mute.js +41 -0
  43. package/srcold/core/muteAll.js +39 -0
  44. package/srcold/core/quitGroup.js +40 -0
  45. package/srcold/core/recall.js +39 -0
  46. package/srcold/core/releaseSession.js +41 -0
  47. package/srcold/core/removeFriend.js +40 -0
  48. package/srcold/core/removeMember.js +42 -0
  49. package/srcold/core/responseBotInvitedJoinGroupRequest.js +46 -0
  50. package/srcold/core/responseFirendRequest.js +45 -0
  51. package/srcold/core/responseMemberJoinRequest.js +47 -0
  52. package/srcold/core/sendCommand.js +41 -0
  53. package/srcold/core/sendFriendMessage.js +43 -0
  54. package/srcold/core/sendGroupMessage.js +43 -0
  55. package/srcold/core/sendImageMessage.js +4 -0
  56. package/srcold/core/sendNudge.js +43 -0
  57. package/srcold/core/sendTempMessage.js +55 -0
  58. package/srcold/core/setEssence.js +44 -0
  59. package/srcold/core/setGroupConfig.js +58 -0
  60. package/srcold/core/setMemberAdmin.js +44 -0
  61. package/srcold/core/setMemberInfo.js +48 -0
  62. package/srcold/core/setSessionConfig.js +41 -0
  63. package/srcold/core/startListeningBrowser.js +62 -0
  64. package/srcold/core/startListeningNode.js +74 -0
  65. package/srcold/core/stopListeningBrowser.js +34 -0
  66. package/srcold/core/stopListeningNode.js +34 -0
  67. package/srcold/core/unmute.js +40 -0
  68. package/srcold/core/unmuteAll.js +39 -0
  69. package/srcold/core/uploadImage.js +55 -0
  70. package/srcold/core/uploadVoice.js +54 -0
  71. package/srcold/core/verify.js +41 -0
  72. package/srcold/index.d.ts +10 -0
  73. package/srcold/index.js +21 -0
  74. package/srcold/interface.js +20 -0
  75. package/srcold/polyfill/URL.js +5 -0
  76. package/srcold/polyfill/wsListener.js +6 -0
  77. package/srcold/typeHelpers.d.ts +2 -0
  78. package/srcold/util/errCode.js +23 -0
  79. package/srcold/util/errorHandler.js +24 -0
  80. package/srcold/util/getInvalidParamsString.js +12 -0
  81. package/srcold/util/isBrowserEnv.js +3 -0
  82. package/srcold/util/random.js +6 -0
  83. package/webpack.config.js +3 -2
@@ -0,0 +1,419 @@
1
+ import { Bot } from './Bot';
2
+ import { ArrayToValuesUnion } from './typeHelpers';
3
+
4
+ /**
5
+ * 消息链的元素,是 mirai-api-http 接口需要的原始类型
6
+ * 有多种消息类型实现了该接口,已经全部列出
7
+ *
8
+ * @see https://github.com/project-mirai/mirai-api-http/blob/master/docs/MessageType.md
9
+ */
10
+ interface MessageType {
11
+ type: MessageChainElementTypes;
12
+
13
+ // Quote
14
+ id?: number;
15
+ groupId?: number;
16
+ senderId?: number;
17
+ targetId?: number;
18
+ origin?: MessageType[];
19
+
20
+ // At
21
+ target?: number;
22
+ display?: string;
23
+
24
+ // Face Poke
25
+ faceId?: number;
26
+ name?: string;
27
+
28
+ // Plain
29
+ text?: string;
30
+
31
+ // Image FlashImage Voice
32
+ imageId?: ImageId;
33
+ voiceId?: VoiceId;
34
+ url?: string;
35
+ path?: string;
36
+
37
+ // Xml
38
+ xml?: string;
39
+
40
+ // Json
41
+ json?: string;
42
+
43
+ // App
44
+ content?: string;
45
+
46
+ // Forward
47
+ nodeList?: ForwardNode[];
48
+ }
49
+
50
+ // 用于 Bot 获得消息链,Message 使用了该扩展
51
+ interface MessageChainGetable {
52
+ getMessageChain(): MessageType[];
53
+ }
54
+
55
+ /**
56
+ * @description 合并转发类型Forward内消息节点的类型定义
57
+ */
58
+ interface ForwardNode {
59
+ senderId?: number;
60
+ time?: number;
61
+ senderName?: string;
62
+ messageChain?: MessageType[] | MessageChainGetable;
63
+ messageId?: MessageId;
64
+ }
65
+
66
+ /**
67
+ * @description Bot 实现的接口,其他类访问 bot.config
68
+ * 的途径,避免其他类直接访问实现,用来解耦
69
+ */
70
+ interface BotConfigGetable {
71
+ getBaseUrl(): string;
72
+ getQQ(): number;
73
+ getVerifyKey(): string;
74
+ getSessionKey(): string;
75
+ }
76
+
77
+ // 图片 id
78
+ type ImageId = string;
79
+ // 语音 id
80
+ type VoiceId = string;
81
+ // 消息 id
82
+ type MessageId = number;
83
+
84
+ /**
85
+ * 消息类型
86
+ *
87
+ * @see https://github.com/project-mirai/mirai-api-http/blob/master/docs/EventType.md
88
+ */
89
+
90
+ export type MessageChainElementTypes =
91
+ | 'Source'
92
+ | 'Quote'
93
+ | 'At'
94
+ | 'AtAll'
95
+ | 'Face'
96
+ | 'Plain'
97
+ | 'Image'
98
+ | 'FlashImage'
99
+ | 'Voice'
100
+ | 'Xml'
101
+ | 'Json'
102
+ | 'App'
103
+ | 'Poke'
104
+ | 'Dice'
105
+ | 'MarketFace'
106
+ | 'MusicShare'
107
+ | 'ForwardMessage'
108
+ | 'File'
109
+ | 'MiraiCode';
110
+
111
+ interface EventBaseType {
112
+ bot: Bot;
113
+ }
114
+
115
+ // Middleware
116
+ interface Member {
117
+ id: number;
118
+ memberName: string;
119
+ specialTitle: string;
120
+ permission: GroupPermission;
121
+ joinTimestamp: number;
122
+ lastSpeakTimestamp: number;
123
+ muteTimeRemaining: number;
124
+ }
125
+
126
+ interface GroupSenderType {
127
+ id: number;
128
+ name: string;
129
+ permission: GroupPermission;
130
+ }
131
+
132
+ interface Friend {
133
+ id: number,
134
+ nickname: string,
135
+ remark: string;
136
+ }
137
+
138
+ interface EventEntityMap {
139
+ error: {
140
+ code: number;
141
+ } & EventBaseType,
142
+ close: {
143
+ reason: string;
144
+ } & EventBaseType,
145
+ 'unexpected-response': {
146
+ reason: string;
147
+ } & EventBaseType,
148
+ GroupMessage: {
149
+ type: 'GroupMessage';
150
+ sender: Member & { group: GroupSenderType },
151
+ messageChain: MessageType[];
152
+ } & EventBaseType,
153
+ FriendMessage: {
154
+ type: 'FriendMessage';
155
+ messageChain: MessageType[];
156
+ sender: Friend
157
+ } & EventBaseType,
158
+ BotOnlineEvent: {
159
+ type: 'BotOnlineEvent',
160
+ qq: number
161
+ } & EventBaseType,
162
+ BotOfflineEventActive: {
163
+ type: 'BotOfflineEventActive',
164
+ qq: number
165
+ } & EventBaseType,
166
+ BotOfflineEventForce: {
167
+ type: 'BotOfflineEventForce',
168
+ qq: number
169
+ } & EventBaseType,
170
+ BotOfflineEventDropped: {
171
+ type: 'BotOfflineEventDropped',
172
+ qq: number
173
+ } & EventBaseType,
174
+ BotReloginEvent: {
175
+ type: 'BotReloginEvent',
176
+ qq: number
177
+ } & EventBaseType,
178
+ BotGroupPermissionChangeEvent: {
179
+ type: 'BotGroupPermissionChangeEvent';
180
+ origin: Exclude<GroupPermission, 'OWNER'>;
181
+ current: GroupPermission;
182
+ group: GroupSenderType;
183
+ } & EventBaseType,
184
+ BotMuteEvent: {
185
+ type: 'BotMuteEvent',
186
+ durationSeconds: number,
187
+ operator: Member & { group: GroupSenderType };
188
+ } & EventBaseType,
189
+ BotUnmuteEvent: {
190
+ type: 'BotUnmuteEvent',
191
+ durationSeconds: number,
192
+ operator: Member & { group: GroupSenderType };
193
+ } & EventBaseType,
194
+ BotJoinGroupEvent: {
195
+ type: 'BotJoinGroupEvent',
196
+ group: GroupSenderType
197
+ operator?: null | Member & { group: GroupSenderType };
198
+ };
199
+ BotLeaveEventActive: {
200
+ type: 'BotLeaveEventActive',
201
+ group: GroupSenderType
202
+ };
203
+ BotLeaveEventKick: {
204
+ type: 'BotLeaveEventKick',
205
+ group: GroupSenderType
206
+ operator: Member & { group: GroupSenderType };
207
+ } & EventBaseType;
208
+ GroupRecallEvent: {
209
+ type: 'GroupRecallEvent'
210
+ authorId: number,
211
+ messageId: number,
212
+ time: number,
213
+ group: GroupSenderType
214
+ operator: Member & { group: GroupSenderType };
215
+ } & EventBaseType;
216
+ FriendRecallEvent: {
217
+ type: 'GroupRecallEvent'
218
+ authorId: number,
219
+ messageId: number,
220
+ time: number,
221
+ operator: number
222
+ } & EventBaseType;
223
+ GroupNameChangeEvent: {
224
+ type: 'GroupNameChangeEvent',
225
+ origin: string,
226
+ current: string,
227
+ group: GroupSenderType;
228
+ operator: Member & { group: GroupSenderType };
229
+ } & EventBaseType;
230
+ GroupEntranceAnnouncementChangeEvent: {
231
+ type: 'GroupEntranceAnnouncementChangeEvent',
232
+ origin: string,
233
+ current: string,
234
+ group: GroupSenderType;
235
+ operator: Member & { group: GroupSenderType };
236
+ } & EventBaseType;
237
+ GroupMuteAllEvent: {
238
+ type: 'GroupMuteAllEvent',
239
+ origin: boolean,
240
+ current: boolean,
241
+ group: GroupSenderType;
242
+ operator: Member & { group: GroupSenderType };
243
+ } & EventBaseType;
244
+ GroupAllowAnonymousChatEvent: {
245
+ type: 'GroupAllowAnonymousChatEvent',
246
+ origin: boolean,
247
+ current: boolean,
248
+ group: GroupSenderType,
249
+ operator: Member & { group: GroupSenderType };
250
+ } & EventBaseType;
251
+ GroupAllowConfessTalkEvent: {
252
+ type: 'GroupAllowAnonymousChatEvent',
253
+ origin: boolean,
254
+ current: boolean,
255
+ group: GroupSenderType,
256
+ isByBot: boolean
257
+ } & EventBaseType;
258
+ GroupAllowMemberInviteEvent: EventBaseType;
259
+ MemberJoinEvent: {
260
+ type: 'MemberJoinEvent',
261
+ member: Member & { group: GroupSenderType },
262
+ invitor: Member;
263
+ } & EventBaseType;
264
+ MemberLeaveEventKick: {
265
+ type: 'MemberLeaveEventKick',
266
+ member: Member & { group: GroupSenderType },
267
+ operator: Member & { group: GroupSenderType },
268
+ } & EventBaseType;
269
+ MemberLeaveEventQuit: {
270
+ type: 'MemberLeaveEventQuit',
271
+ member: Member & { group: GroupSenderType },
272
+ } & EventBaseType;
273
+ MemberCardChangeEvent: {
274
+ type: 'MemberCardChangeEvent',
275
+ origin: string,
276
+ current: string,
277
+ member: Member & { group: GroupSenderType };
278
+ } & EventBaseType;
279
+ MemberSpecialTitleChangeEvent: {
280
+ type: 'MemberSpecialTitleChangeEvent',
281
+ origin: string,
282
+ current: string,
283
+ member: Member & { group: GroupSenderType };
284
+ } & EventBaseType;
285
+ MemberPermissionChangeEvent: {
286
+ type: 'MemberPermissionChangeEvent',
287
+ origin: string,
288
+ current: string,
289
+ member: Member & { group: GroupSenderType };
290
+ } & EventBaseType;
291
+ MemberMuteEvent: {
292
+ type: 'MemberMuteEvent',
293
+ durationSeconds: number,
294
+ member: Member & { group: GroupSenderType };
295
+ operator: Member & { group: GroupSenderType };
296
+ } & EventBaseType;
297
+ MemberUnmuteEvent: {
298
+ type: 'MemberUnmuteEvent',
299
+ member: Member & { group: GroupSenderType };
300
+ operator: Member & { group: GroupSenderType };
301
+ } & EventBaseType;
302
+ MemberHonorChangeEvent: {
303
+ type: 'MemberHonorChangeEvent',
304
+ member: Member & { group: GroupSenderType }
305
+ action: 'achieve' | 'lose',
306
+ honor: string;
307
+ }
308
+ NewFriendRequestEvent: {
309
+ type: 'NewFriendRequestEvent',
310
+ eventId: number,
311
+ fromId: number,
312
+ groupId: number,
313
+ nick: string,
314
+ message: string
315
+ } & EventBaseType;
316
+ MemberJoinRequestEvent: {
317
+ type: 'MemberJoinRequestEvent',
318
+ eventId: number,
319
+ fromId: number,
320
+ groupId: number,
321
+ groupName: string,
322
+ nick: string,
323
+ message: string
324
+ } & EventBaseType;
325
+ BotInvitedJoinGroupRequestEvent: {
326
+ type: 'MemberJoinRequestEvent',
327
+ eventId: number,
328
+ fromId: number,
329
+ groupId: number,
330
+ groupName: string,
331
+ nick: string,
332
+ message: string
333
+ } & EventBaseType;
334
+ }
335
+
336
+ type EventType = keyof EventEntityMap;
337
+
338
+ type Awaitable<T> = T | PromiseLike<T>;
339
+
340
+ // 群成员权限
341
+ type GroupPermission = 'OWNER' | 'ADMINISTRATOR' | 'MEMBER';
342
+
343
+ // 性别
344
+ type SEX = 'UNKNOWN' | 'MALE' | 'FEMALE';
345
+
346
+ // 消息处理器
347
+ type Processor<U extends EventType[] = [], Extend = { [key: string]: any }> = (data: EventEntityMap[ArrayToValuesUnion<U>] & Extend) => Awaitable<void | any>;
348
+
349
+ // QQ 自带表情
350
+ type FaceType =
351
+ | '惊讶' | '撇嘴' | '色' | '发呆' | '得意'
352
+ | '流泪' | '害羞' | '闭嘴' | '睡' | '大哭'
353
+ | '尴尬' | '发怒' | '调皮' | '呲牙' | '微笑'
354
+ | '难过' | '酷' | '抓狂' | '吐' | '偷笑'
355
+ | '可爱' | '白眼' | '傲慢' | '饥饿' | '困'
356
+ | '惊恐' | '流汗' | '憨笑' | '悠闲' | '奋斗'
357
+ | '咒骂' | '疑问' | '嘘' | '晕' | '折磨'
358
+ | '衰' | '骷髅' | '敲打' | '再见' | '发抖'
359
+ | '爱情' | '跳跳' | '猪头' | '拥抱' | '蛋糕'
360
+ | '闪电' | '炸弹' | '刀' | '足球' | '便便'
361
+ | '咖啡' | '饭' | '玫瑰' | '凋谢' | '爱心'
362
+ | '心碎' | '礼物' | '太阳' | '月亮' | '赞'
363
+ | '踩' | '握手' | '胜利' | '飞吻' | '怄火'
364
+ | '西瓜' | '冷汗' | '擦汗' | '抠鼻' | '鼓掌'
365
+ | '糗大了' | '坏笑' | '左哼哼' | '右哼哼' | '哈欠'
366
+ | '鄙视' | '委屈' | '快哭了' | '阴险' | '左亲亲'
367
+ | '吓' | '可怜' | '菜刀' | '啤酒' | '篮球'
368
+ | '乒乓' | '示爱' | '瓢虫' | '抱拳' | '勾引'
369
+ | '拳头' | '差劲' | '爱你' | '不' | '好'
370
+ | '转圈' | '磕头' | '回头' | '跳绳' | '挥手'
371
+ | '激动' | '街舞' | '献吻' | '左太极' | '右太极'
372
+ | '双喜' | '鞭炮' | '灯笼' | 'K歌' | '喝彩'
373
+ | '祈祷' | '爆筋' | '棒棒糖' | '喝奶' | '飞机'
374
+ | '钞票' | '药' | '手枪' | '茶' | '眨眼睛'
375
+ | '泪奔' | '无奈' | '卖萌' | '小纠结' | '喷血'
376
+ | '斜眼笑' | 'doge' | '惊喜' | '骚扰' | '笑哭'
377
+ | '我最美' | '河蟹' | '羊驼' | '幽灵' | '蛋'
378
+ | '菊花' | '红包' | '大笑' | '不开心' | '冷漠'
379
+ | '呃' | '好棒' | '拜托' | '点赞' | '无聊'
380
+ | '托脸' | '吃' | '送花' | '害怕' | '花痴'
381
+ | '小样儿' | '飙泪' | '我不看' | '托腮' | '啵啵'
382
+ | '糊脸' | '拍头' | '扯一扯' | '舔一舔' | '蹭一蹭'
383
+ | '拽炸天' | '顶呱呱' | '抱抱' | '暴击' | '开枪'
384
+ | '撩一撩' | '拍桌' | '拍手' | '恭喜' | '干杯'
385
+ | '嘲讽' | '哼' | '佛系' | '掐一掐' | '惊呆'
386
+ | '颤抖' | '啃头' | '偷看' | '扇脸' | '原谅'
387
+ | '喷脸' | '生日快乐' | '头撞击' | '甩头' | '扔狗'
388
+ | '加油必胜' | '加油抱抱' | '口罩护体' | '搬砖中' | '忙到飞起'
389
+ | '脑阔疼' | '沧桑' | '捂脸' | '辣眼睛' | '哦哟'
390
+ | '头秃' | '问号脸' | '暗中观察' | 'emm' | '吃瓜'
391
+ | '呵呵哒' | '我酸了' | '太南了' | '辣椒酱' | '汪汪'
392
+ | '汗' | '打脸' | '击掌' | '无眼笑' | '敬礼'
393
+ | '狂笑' | '面无表情' | '摸鱼' | '魔鬼笑' | '哦'
394
+ | '请' | '睁眼' | '敲开心' | '震惊' | '让我康康'
395
+ | '摸锦鲤' | '期待' | '拿到红包' | '真好' | '拜谢'
396
+ | '元宝' | '牛啊' | '胖三斤' | '好闪' | '左拜年'
397
+ | '右拜年' | '红包包' | '右亲亲' | '牛气冲天' | '喵喵'
398
+ | '求红包' | '谢红包' | '新年烟花' | '打call' | '变形'
399
+ | '嗑到了' | '仔细分析' | '加油' | '我没事' | '菜狗'
400
+ | '崇拜' | '比心' | '庆祝' | '老色痞' | '拒绝'
401
+ | '嫌弃' | '吃糖';
402
+
403
+ // 消息处理器类型
404
+ export {
405
+ // 接口
406
+ MessageChainGetable, BotConfigGetable,
407
+ // 消息类型
408
+ MessageType,
409
+ // MessageType.nodeList 的元素类型
410
+ ForwardNode,
411
+ // 图片 id 语音 id 消息 id
412
+ ImageId, VoiceId, MessageId,
413
+ // 事件类型 群成员权限 性别
414
+ EventType, EventEntityMap, GroupPermission, SEX,
415
+ // QQ 自带表情
416
+ FaceType,
417
+ Processor,
418
+ Awaitable,
419
+ };