@alemonjs/qq-bot 0.0.20 → 0.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.
package/lib/sends.js ADDED
@@ -0,0 +1,648 @@
1
+ import { readFileSync } from 'fs';
2
+ import { createResult, ResultCode } from 'alemonjs';
3
+ import axios from 'axios';
4
+
5
+ const createButtonsData = (rows) => {
6
+ let id = 0;
7
+ const data = {
8
+ rows: rows.map(row => {
9
+ const val = row.value;
10
+ return {
11
+ buttons: val.map(button => {
12
+ const value = button.value;
13
+ const options = button.options;
14
+ id++;
15
+ return {
16
+ id: String(id),
17
+ render_data: {
18
+ label: typeof value == 'object' ? value.title : value,
19
+ visited_label: typeof value == 'object' ? value.label : value,
20
+ // tudo
21
+ style: 0
22
+ },
23
+ action: {
24
+ // 0 link 1 callback , 2 command
25
+ type: typeof options.data === 'object' ? 1 : options?.isLink ? 0 : 2,
26
+ permission: {
27
+ // 所有人
28
+ type: 2
29
+ // "specify_role_ids": ["1", "2", "3"]
30
+ },
31
+ // "click_limit": 10,
32
+ unsupport_tips: options?.toolTip ?? '',
33
+ data: options?.data ?? '',
34
+ // reply: true,
35
+ at_bot_show_channel_list: options.showList ?? false,
36
+ enter: options?.autoEnter ?? false
37
+ }
38
+ };
39
+ })
40
+ };
41
+ })
42
+ };
43
+ return data;
44
+ };
45
+ const createArkCardData = (value) => {
46
+ return {
47
+ template_id: 24,
48
+ kv: [
49
+ {
50
+ key: '#DESC#',
51
+ value: value.decs
52
+ },
53
+ {
54
+ key: '#PROMPT#',
55
+ value: value.prompt
56
+ },
57
+ {
58
+ key: '#TITLE#',
59
+ value: value.title
60
+ },
61
+ {
62
+ key: '#METADESC#',
63
+ value: value.metadecs
64
+ },
65
+ {
66
+ key: '#IMG#',
67
+ value: value.cover
68
+ },
69
+ {
70
+ key: '#LINK#',
71
+ value: value.link
72
+ },
73
+ {
74
+ key: '#SUBTITLE#',
75
+ value: value.subtitle
76
+ }
77
+ ]
78
+ };
79
+ };
80
+ const createArkBigCardData = (value) => {
81
+ return {
82
+ template_id: 37,
83
+ kv: [
84
+ {
85
+ key: '#PROMPT#',
86
+ value: value.prompt
87
+ },
88
+ {
89
+ key: '#METATITLE#',
90
+ value: value.title
91
+ },
92
+ {
93
+ key: '#METASUBTITLE#',
94
+ value: value.subtitle
95
+ },
96
+ {
97
+ key: '#METACOVER#',
98
+ value: value.cover
99
+ },
100
+ {
101
+ key: '#METAURL#',
102
+ value: value.link
103
+ }
104
+ ]
105
+ };
106
+ };
107
+ const createArkList = (value) => {
108
+ const [tip, data] = value;
109
+ return {
110
+ template_id: 23,
111
+ kv: [
112
+ {
113
+ key: '#DESC#',
114
+ value: tip.value.desc
115
+ },
116
+ {
117
+ key: '#PROMPT#',
118
+ value: tip.value.prompt
119
+ },
120
+ {
121
+ key: '#LIST#',
122
+ obj: data.value.map(item => {
123
+ const value = item.value;
124
+ if (typeof value === 'string') {
125
+ return {
126
+ obj_kv: [
127
+ {
128
+ key: 'desc',
129
+ value: value
130
+ }
131
+ ]
132
+ };
133
+ }
134
+ return {
135
+ obj_kv: [
136
+ {
137
+ key: 'desc',
138
+ value: value.title
139
+ },
140
+ {
141
+ key: 'link',
142
+ value: value.link
143
+ }
144
+ ]
145
+ };
146
+ })
147
+ }
148
+ ]
149
+ };
150
+ };
151
+ /**
152
+ * 群组消息
153
+ * @param client
154
+ * @param event
155
+ * @param val
156
+ * @returns
157
+ */
158
+ const GROUP_AT_MESSAGE_CREATE = async (client, event, val) => {
159
+ const content = val
160
+ .filter(item => item.type == 'Mention' || item.type == 'Text' || item.type == 'Link')
161
+ .map(item => {
162
+ if (item.type == 'Link') {
163
+ return `[${item.value}](${item?.options?.link})`;
164
+ }
165
+ else if (item.type == 'Mention') {
166
+ if (item.value == 'everyone' ||
167
+ item.value == 'all' ||
168
+ item.value == '' ||
169
+ typeof item.value != 'string') {
170
+ return ``;
171
+ }
172
+ if (item.options?.belong == 'user') {
173
+ return `<@${item.value}>`;
174
+ }
175
+ return '';
176
+ }
177
+ else if (item.type == 'Text') {
178
+ return item.value;
179
+ }
180
+ })
181
+ .join('');
182
+ if (content) {
183
+ const res = await Promise.all([content].map(async (item) => {
184
+ const res = await client.groupOpenMessages(event.GuildId, {
185
+ content: item,
186
+ msg_id: event.MessageId,
187
+ msg_type: 0,
188
+ msg_seq: client.getMessageSeq(event.MessageId)
189
+ });
190
+ return createResult(ResultCode.Ok, 'client.groupOpenMessages', {
191
+ id: res.id
192
+ });
193
+ })).catch(err => [createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)]);
194
+ return res;
195
+ }
196
+ const images = val.filter(item => item.type == 'Image' || item.type == 'ImageFile' || item.type == 'ImageURL');
197
+ if (images && images.length > 0) {
198
+ return Promise.all(images.map(async (item) => {
199
+ if (item.type == 'ImageURL') {
200
+ const res = await client.groupOpenMessages(event.GuildId, {
201
+ content: '',
202
+ media: {
203
+ file_info: item.value
204
+ },
205
+ msg_id: event.MessageId,
206
+ msg_type: 7,
207
+ msg_seq: client.getMessageSeq(event.MessageId)
208
+ });
209
+ return createResult(ResultCode.Ok, 'client.groupOpenMessages', {
210
+ id: res.id
211
+ });
212
+ }
213
+ try {
214
+ const file_data = item.type == 'ImageFile'
215
+ ? readFileSync(item.value, 'base64')
216
+ : item.value.toString('base64');
217
+ const file_info = await client
218
+ .postRichMediaByGroup(event.GuildId, {
219
+ file_type: 1,
220
+ file_data: file_data
221
+ })
222
+ .then(res => res?.file_info);
223
+ if (!file_info) {
224
+ return createResult(ResultCode.Fail, 'client.postRichMediaByGroup', null);
225
+ }
226
+ const res = await client.groupOpenMessages(event.GuildId, {
227
+ content: '',
228
+ media: {
229
+ file_info
230
+ },
231
+ msg_id: event.MessageId,
232
+ msg_type: 7,
233
+ msg_seq: client.getMessageSeq(event.MessageId)
234
+ });
235
+ return createResult(ResultCode.Ok, 'client.groupOpenMessages', {
236
+ id: res.id
237
+ });
238
+ }
239
+ catch (error) {
240
+ return createResult(ResultCode.Fail, error ? (error?.message ?? error) : 'client.groupOpenMessages', null);
241
+ }
242
+ })).catch(err => [createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)]);
243
+ }
244
+ // buttons
245
+ const buttons = val.filter(item => item.type == 'BT.group');
246
+ if (buttons && buttons.length > 0) {
247
+ return Promise.all(buttons.map(async (item) => {
248
+ const template_id = item?.options?.template_id;
249
+ if (template_id) {
250
+ const res = await client.groupOpenMessages(event.GuildId, {
251
+ content: '',
252
+ msg_id: event.MessageId,
253
+ keyboard: {
254
+ id: template_id
255
+ },
256
+ msg_type: 2,
257
+ msg_seq: client.getMessageSeq(event.MessageId)
258
+ });
259
+ return createResult(ResultCode.Ok, 'client.groupOpenMessages', {
260
+ id: res.id
261
+ });
262
+ }
263
+ const rows = item.value;
264
+ // 构造成按钮
265
+ const data = createButtonsData(rows);
266
+ const res = await client.groupOpenMessages(event.GuildId, {
267
+ content: '',
268
+ msg_id: event.MessageId,
269
+ keyboard: {
270
+ content: data
271
+ },
272
+ msg_type: 2,
273
+ msg_seq: client.getMessageSeq(event.MessageId)
274
+ });
275
+ return createResult(ResultCode.Ok, 'client.groupOpenMessages', {
276
+ id: res.id
277
+ });
278
+ })).catch(err => [createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)]);
279
+ }
280
+ // ark
281
+ const ark = val.filter(item => item.type == 'Ark.BigCard' || item.type == 'Ark.Card' || item.type == 'Ark.list');
282
+ if (ark && ark.length > 0) {
283
+ return Promise.all(ark.map(async (item) => {
284
+ if (item.type === 'Ark.Card') {
285
+ const arkData = createArkCardData(item.value);
286
+ const res = await client.groupOpenMessages(event.GuildId, {
287
+ msg_id: event.MessageId,
288
+ ark: arkData,
289
+ msg_type: 3,
290
+ msg_seq: client.getMessageSeq(event.MessageId)
291
+ });
292
+ return createResult(ResultCode.Ok, 'client.groupOpenMessages', {
293
+ id: res.id
294
+ });
295
+ }
296
+ if (item.type === 'Ark.BigCard') {
297
+ const arkData = createArkBigCardData(item.value);
298
+ const res = await client.groupOpenMessages(event.GuildId, {
299
+ msg_id: event.MessageId,
300
+ ark: arkData,
301
+ msg_type: 3,
302
+ msg_seq: client.getMessageSeq(event.MessageId)
303
+ });
304
+ return createResult(ResultCode.Ok, 'client.groupOpenMessages', { id: res.id });
305
+ }
306
+ const arkData = createArkList(item.value);
307
+ const res = await client.groupOpenMessages(event.GuildId, {
308
+ msg_id: event.MessageId,
309
+ ark: arkData,
310
+ msg_type: 3,
311
+ msg_seq: client.getMessageSeq(event.MessageId)
312
+ });
313
+ return createResult(ResultCode.Ok, 'client.groupOpenMessages', { id: res.id });
314
+ })).catch(err => [createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)]);
315
+ }
316
+ return Promise.all([]);
317
+ };
318
+ /**
319
+ * 私聊消息
320
+ * @param client
321
+ * @param event
322
+ * @param val
323
+ * @returns
324
+ */
325
+ const C2C_MESSAGE_CREATE = (client, event, val) => {
326
+ const content = val
327
+ .filter(item => item.type == 'Mention' || item.type == 'Text' || item.type == 'Link')
328
+ .map(item => {
329
+ if (item.type == 'Link') {
330
+ return `[${item.value}](${item?.options?.link})`;
331
+ }
332
+ else if (item.type == 'Text') {
333
+ return item.value;
334
+ }
335
+ return '';
336
+ })
337
+ .join('');
338
+ if (content) {
339
+ return Promise.all([content].map(async (item) => {
340
+ const res = await client.usersOpenMessages(event.OpenId, {
341
+ content: item,
342
+ msg_id: event.MessageId,
343
+ msg_type: 0,
344
+ msg_seq: client.getMessageSeq(event.MessageId)
345
+ });
346
+ return createResult(ResultCode.Ok, 'client.usersOpenMessages', {
347
+ id: res.id
348
+ });
349
+ })).catch(err => [createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)]);
350
+ }
351
+ const images = val.filter(item => item.type == 'Image' || item.type == 'ImageFile' || item.type == 'ImageURL');
352
+ if (images && images.length > 0) {
353
+ return Promise.all(images.map(async (item) => {
354
+ if (item.type == 'ImageURL') {
355
+ const res = await client.usersOpenMessages(event.OpenId, {
356
+ content: '',
357
+ media: {
358
+ file_info: item.value
359
+ },
360
+ msg_id: event.MessageId,
361
+ msg_type: 7,
362
+ msg_seq: client.getMessageSeq(event.MessageId)
363
+ });
364
+ return createResult(ResultCode.Ok, 'client.usersOpenMessages', {
365
+ id: res.id
366
+ });
367
+ }
368
+ const file_data = item.type == 'ImageFile'
369
+ ? readFileSync(item.value, 'base64')
370
+ : item.value.toString('base64');
371
+ const file_info = await client
372
+ .postRichMediaByUsers(event.OpenId, {
373
+ file_type: 1,
374
+ file_data: file_data
375
+ })
376
+ .then(res => res?.file_info);
377
+ if (!file_info)
378
+ return Promise.resolve(null);
379
+ return client.usersOpenMessages(event.OpenId, {
380
+ content: '',
381
+ media: {
382
+ file_info
383
+ },
384
+ msg_id: event.MessageId,
385
+ msg_type: 7,
386
+ msg_seq: client.getMessageSeq(event.MessageId)
387
+ });
388
+ })).catch(err => [createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)]);
389
+ }
390
+ // buttons
391
+ const buttons = val.filter(item => item.type == 'BT.group');
392
+ if (buttons && buttons.length > 0) {
393
+ return Promise.all(buttons.map(async (item) => {
394
+ const template_id = item?.options?.template_id;
395
+ if (template_id) {
396
+ const res = await client.usersOpenMessages(event.GuildId, {
397
+ content: '',
398
+ msg_id: event.MessageId,
399
+ keyboard: {
400
+ id: template_id
401
+ },
402
+ msg_type: 2,
403
+ msg_seq: client.getMessageSeq(event.MessageId)
404
+ });
405
+ return createResult(ResultCode.Ok, 'client.usersOpenMessages', {
406
+ id: res.id
407
+ });
408
+ }
409
+ const rows = item.value;
410
+ // 构造成按钮
411
+ const data = createButtonsData(rows);
412
+ const res = await client.usersOpenMessages(event.GuildId, {
413
+ content: '',
414
+ msg_id: event.MessageId,
415
+ keyboard: {
416
+ content: data
417
+ },
418
+ msg_type: 2,
419
+ msg_seq: client.getMessageSeq(event.MessageId)
420
+ });
421
+ return createResult(ResultCode.Ok, 'client.usersOpenMessages', {
422
+ id: res.id
423
+ });
424
+ })).catch(err => [createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)]);
425
+ }
426
+ // ark
427
+ const ark = val.filter(item => item.type == 'Ark.BigCard' || item.type == 'Ark.Card' || item.type == 'Ark.list');
428
+ if (ark && ark.length > 0) {
429
+ return Promise.all(ark.map(async (item) => {
430
+ if (item.type === 'Ark.Card') {
431
+ const arkData = createArkCardData(item.value);
432
+ const res = await client.usersOpenMessages(event.GuildId, {
433
+ msg_id: event.MessageId,
434
+ ark: arkData,
435
+ msg_type: 3,
436
+ msg_seq: client.getMessageSeq(event.MessageId)
437
+ });
438
+ return createResult(ResultCode.Ok, 'client.usersOpenMessages', { id: res.id });
439
+ }
440
+ if (item.type === 'Ark.BigCard') {
441
+ const arkData = createArkBigCardData(item.value);
442
+ const res = await client.usersOpenMessages(event.GuildId, {
443
+ msg_id: event.MessageId,
444
+ ark: arkData,
445
+ msg_type: 3,
446
+ msg_seq: client.getMessageSeq(event.MessageId)
447
+ });
448
+ return createResult(ResultCode.Ok, 'client.usersOpenMessages', { id: res.id });
449
+ }
450
+ const arkData = createArkList(item.value);
451
+ const res = await client.usersOpenMessages(event.GuildId, {
452
+ msg_id: event.MessageId,
453
+ ark: arkData,
454
+ msg_type: 3,
455
+ msg_seq: client.getMessageSeq(event.MessageId)
456
+ });
457
+ return createResult(ResultCode.Ok, 'client.usersOpenMessages', { id: res.id });
458
+ })).catch(err => [createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)]);
459
+ }
460
+ return Promise.all([]);
461
+ };
462
+ /**
463
+ * 频道私聊
464
+ * @param client
465
+ * @param event
466
+ * @param val
467
+ * @returns
468
+ */
469
+ const DIRECT_MESSAGE_CREATE = (client, event, val) => {
470
+ const content = val
471
+ .filter(item => item.type == 'Mention' || item.type == 'Text' || item.type == 'Link')
472
+ .map(item => {
473
+ if (item.type == 'Link') {
474
+ return `[${item.value}](${item?.options?.link})`;
475
+ }
476
+ if (item.type == 'Text') {
477
+ return item.value;
478
+ }
479
+ return '';
480
+ })
481
+ .join('');
482
+ if (content) {
483
+ return Promise.all([content].map(async (item) => {
484
+ const res = await client.dmsMessage(event.OpenId, {
485
+ content: item,
486
+ msg_id: event.MessageId
487
+ });
488
+ return createResult(ResultCode.Ok, 'client.dmsMessage', { id: res?.id });
489
+ })).catch(err => [createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)]);
490
+ }
491
+ const images = val.filter(item => item.type == 'Image' || item.type == 'ImageFile' || item.type == 'ImageURL');
492
+ if (images && images.length > 0) {
493
+ return Promise.all(images.map(async (item) => {
494
+ if (item.value == 'ImageURL') {
495
+ // 请求得到buffer
496
+ const data = await axios
497
+ .get(item.value, {
498
+ responseType: 'arraybuffer'
499
+ })
500
+ .then(res => res?.data);
501
+ const res = await client.postDirectImage(event.OpenId, {
502
+ msg_id: event.MessageId,
503
+ image: data
504
+ });
505
+ return createResult(ResultCode.Ok, 'client.postDirectImage', { id: res?.id });
506
+ }
507
+ const file_data = item.type == 'ImageFile' ? readFileSync(item.value) : item.value;
508
+ const res = await client.postDirectImage(event.OpenId, {
509
+ msg_id: event.MessageId,
510
+ image: Buffer.isBuffer(file_data) ? file_data : Buffer.from(file_data)
511
+ });
512
+ return createResult(ResultCode.Ok, 'client.postDirectImage', { id: res?.id });
513
+ })).catch(err => [createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)]);
514
+ }
515
+ return Promise.all([]);
516
+ };
517
+ const AT_MESSAGE_CREATE = (client, event, val) => {
518
+ const content = val
519
+ .filter(item => item.type == 'Mention' || item.type == 'Text' || item.type == 'Link')
520
+ .map(item => {
521
+ if (item.type == 'Link') {
522
+ return `[${item.value}](${item?.options?.link})`;
523
+ }
524
+ if (item.type == 'Mention') {
525
+ if (item.value == 'everyone' ||
526
+ item.value == 'all' ||
527
+ item.value == '' ||
528
+ typeof item.value != 'string') {
529
+ return `@everyone`;
530
+ }
531
+ if (item.options?.belong == 'user') {
532
+ return `<@!${item.value}>`;
533
+ }
534
+ else if (item.options?.belong == 'channel') {
535
+ return `<#${item.value}>`;
536
+ }
537
+ return '';
538
+ }
539
+ else if (item.type == 'Text') {
540
+ return item.value;
541
+ }
542
+ })
543
+ .join('');
544
+ if (content) {
545
+ return Promise.all([content].map(async (item) => {
546
+ const res = await client.channelsMessagesPost(event.ChannelId, {
547
+ content: item,
548
+ msg_id: event.MessageId
549
+ });
550
+ return createResult(ResultCode.Ok, 'client.channelsMessagesPost', { id: res?.id });
551
+ })).catch(err => [createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)]);
552
+ }
553
+ const images = val.filter(item => item.type == 'Image' || item.type == 'ImageFile' || item.type == 'ImageURL');
554
+ if (images && images.length > 0) {
555
+ return Promise.all(images.map(async (item) => {
556
+ if (item.value == 'ImageURL') {
557
+ // 请求得到buffer
558
+ const data = await axios
559
+ .get(item.value, {
560
+ responseType: 'arraybuffer'
561
+ })
562
+ .then(res => res.data);
563
+ const res = await client.postImage(event.ChannelId, {
564
+ msg_id: event.MessageId,
565
+ image: data
566
+ });
567
+ return createResult(ResultCode.Ok, 'client.postImage', { id: res?.id });
568
+ }
569
+ const file_data = item.type == 'ImageFile' ? readFileSync(item.value) : item.value;
570
+ const res = await client.postImage(event.ChannelId, {
571
+ msg_id: event.MessageId,
572
+ image: Buffer.isBuffer(file_data) ? file_data : Buffer.from(file_data)
573
+ });
574
+ return createResult(ResultCode.Ok, 'client.postImage', { id: res?.id });
575
+ })).catch(err => [createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)]);
576
+ }
577
+ return Promise.all([]);
578
+ };
579
+ /**
580
+ *
581
+ * @param event
582
+ * @param val
583
+ * @returns
584
+ */
585
+ const MESSAGE_CREATE = (client, event, val) => {
586
+ const content = val
587
+ .filter(item => item.type == 'Mention' || item.type == 'Text' || item.type == 'Link')
588
+ .map(item => {
589
+ if (item.type == 'Link') {
590
+ return `[${item.value}](${item?.options?.link})`;
591
+ }
592
+ if (item.type == 'Mention') {
593
+ if (item.value == 'everyone' ||
594
+ item.value == 'all' ||
595
+ item.value == '' ||
596
+ typeof item.value != 'string') {
597
+ return `@everyone`;
598
+ }
599
+ if (item.options?.belong == 'user') {
600
+ return `<@!${item.value}>`;
601
+ }
602
+ else if (item.options?.belong == 'channel') {
603
+ return `<#${item.value}>`;
604
+ }
605
+ return '';
606
+ }
607
+ else if (item.type == 'Text') {
608
+ return item.value;
609
+ }
610
+ })
611
+ .join('');
612
+ if (content) {
613
+ return Promise.all([content].map(async (item) => {
614
+ const res = await client.channelsMessagesPost(event.ChannelId, {
615
+ content: item,
616
+ msg_id: event.MessageId
617
+ });
618
+ return createResult(ResultCode.Ok, 'client.channelsMessagesPost', { id: res?.id });
619
+ })).catch(err => [createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)]);
620
+ }
621
+ const images = val.filter(item => item.type == 'Image' || item.type == 'ImageFile' || item.type == 'ImageURL');
622
+ if (images && images.length > 0) {
623
+ return Promise.all(images.map(async (item) => {
624
+ if (item.value == 'ImageURL') {
625
+ // 请求得到buffer
626
+ const data = await axios
627
+ .get(item.value, {
628
+ responseType: 'arraybuffer'
629
+ })
630
+ .then(res => res.data);
631
+ const res = await client.postImage(event.ChannelId, {
632
+ msg_id: event.MessageId,
633
+ image: data
634
+ });
635
+ return createResult(ResultCode.Ok, 'client.postImage', { id: res?.id });
636
+ }
637
+ const file_data = item.type == 'ImageFile' ? readFileSync(item.value) : item.value;
638
+ const res = await client.postImage(event.ChannelId, {
639
+ msg_id: event.MessageId,
640
+ image: Buffer.isBuffer(file_data) ? file_data : Buffer.from(file_data)
641
+ });
642
+ return createResult(ResultCode.Ok, 'client.postImage', { id: res?.id });
643
+ })).catch(err => [createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)]);
644
+ }
645
+ return Promise.all([]);
646
+ };
647
+
648
+ export { AT_MESSAGE_CREATE, C2C_MESSAGE_CREATE, DIRECT_MESSAGE_CREATE, GROUP_AT_MESSAGE_CREATE, MESSAGE_CREATE };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alemonjs/qq-bot",
3
- "version": "0.0.20",
3
+ "version": "0.0.22",
4
4
  "description": "阿柠檬qqbot平台连接",
5
5
  "author": "lemonade",
6
6
  "license": "MIT",