@alemonjs/qq-bot 2.1.0-alpha.4 → 2.1.0-alpha.5

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 (2) hide show
  1. package/lib/sends.js +321 -261
  2. package/package.json +1 -1
package/lib/sends.js CHANGED
@@ -147,6 +147,72 @@ const createArkList = (value) => {
147
147
  ]
148
148
  };
149
149
  };
150
+ // 数据md转为文本
151
+ const createMarkdownText = (data) => {
152
+ const content = data.map(mdItem => {
153
+ if (mdItem.type === 'MD.title') {
154
+ // \n
155
+ return `# ${mdItem.value}\n`;
156
+ }
157
+ else if (mdItem.type === 'MD.subtitle') {
158
+ // \n
159
+ return `## ${mdItem.value}\n`;
160
+ }
161
+ else if (mdItem.type === 'MD.text') {
162
+ // 正文
163
+ return `${mdItem.value} `;
164
+ }
165
+ else if (mdItem.type === 'MD.bold') {
166
+ // 加粗
167
+ return `**${mdItem.value}** `;
168
+ }
169
+ else if (mdItem.type === 'MD.divider') {
170
+ // 分割线
171
+ return '\n————————\n';
172
+ }
173
+ else if (mdItem.type === 'MD.italic') {
174
+ // 斜体
175
+ return `_${mdItem.value}_ `;
176
+ }
177
+ else if (mdItem.type === 'MD.italicStar') {
178
+ // 星号斜体
179
+ return `*${mdItem.value}* `;
180
+ }
181
+ else if (mdItem.type === 'MD.strikethrough') {
182
+ // 删除线
183
+ return `~~${mdItem.value}~~ `;
184
+ }
185
+ else if (mdItem.type === 'MD.blockquote') {
186
+ // \n
187
+ return `> ${mdItem.value}\n`;
188
+ }
189
+ else if (mdItem.type === 'MD.newline') {
190
+ // 换行
191
+ return '\n';
192
+ }
193
+ else if (mdItem.type === 'MD.link') {
194
+ //
195
+ return `[🔗${mdItem.value.text}](${mdItem.value.url}) `;
196
+ }
197
+ else if (mdItem.type === 'MD.image') {
198
+ //
199
+ return `![text #${mdItem.options?.width || 208}px #${mdItem.options?.height || 320}px](${mdItem.value}) `;
200
+ }
201
+ else if (mdItem.type === 'MD.list') {
202
+ const listStr = mdItem.value.map((listItem) => {
203
+ // 有序
204
+ if (typeof listItem.value === 'object') {
205
+ return `\n${listItem.value.index}. ${listItem.value.text}`;
206
+ }
207
+ // 无序
208
+ return `\n- ${listItem.value}`;
209
+ });
210
+ return `${listStr}\n`;
211
+ }
212
+ return;
213
+ }).join('');
214
+ return content;
215
+ };
150
216
  /**
151
217
  * 群组消息
152
218
  * @param client
@@ -155,171 +221,158 @@ const createArkList = (value) => {
155
221
  * @returns
156
222
  */
157
223
  const GROUP_AT_MESSAGE_CREATE = async (client, event, val) => {
158
- const content = val
159
- .filter(item => item.type == 'Mention' || item.type == 'Text' || item.type == 'Link')
160
- .map(item => {
161
- if (item.type == 'Link') {
162
- return `[${item.value}](${item?.options?.link})`;
163
- }
164
- else if (item.type == 'Mention') {
165
- if (item.value == 'everyone' ||
166
- item.value == 'all' ||
167
- item.value == '' ||
168
- typeof item.value != 'string') {
169
- return ``;
224
+ try {
225
+ const content = val
226
+ .filter(item => item.type == 'Mention' || item.type == 'Text' || item.type == 'Link')
227
+ .map(item => {
228
+ if (item.type == 'Link') {
229
+ return `[${item.value}](${item?.options?.link})`;
170
230
  }
171
- if (item.options?.belong == 'user') {
172
- return `<@${item.value}>`;
231
+ else if (item.type == 'Mention') {
232
+ if (item.value == 'everyone' ||
233
+ item.value == 'all' ||
234
+ item.value == '' ||
235
+ typeof item.value != 'string') {
236
+ return ``;
237
+ }
238
+ if (item.options?.belong == 'user') {
239
+ return `<@${item.value}>`;
240
+ }
241
+ return '';
173
242
  }
174
- return '';
175
- }
176
- else if (item.type == 'Text') {
177
- return item.value;
178
- }
179
- })
180
- .join('');
181
- if (content) {
182
- const res = await Promise.all([content].map(async (item) => {
243
+ else if (item.type == 'Text') {
244
+ return item.value;
245
+ }
246
+ })
247
+ .join('');
248
+ if (content) {
183
249
  const res = await client.groupOpenMessages(event.GuildId, {
184
- content: item,
250
+ content: content,
185
251
  msg_id: event.MessageId,
186
252
  msg_type: 0,
187
253
  msg_seq: client.getMessageSeq(event.MessageId)
188
254
  });
189
- return createResult(ResultCode.Ok, 'client.groupOpenMessages', {
190
- id: res.id
255
+ return [createResult(ResultCode.Ok, 'client.groupOpenMessages', {
256
+ id: res.id
257
+ })];
258
+ }
259
+ const images = val.filter(item => item.type == 'Image' || item.type == 'ImageFile' || item.type == 'ImageURL');
260
+ if (images && images.length > 0) {
261
+ let url = '';
262
+ images.filter(async (item) => {
263
+ // 已经处理。
264
+ if (url)
265
+ return;
266
+ if (item.type == 'ImageURL') {
267
+ url = item.value;
268
+ }
269
+ else if (item.type === 'ImageFile' || item.type === 'Image') {
270
+ const getFileBase64 = () => readFileSync(item.value, 'base64');
271
+ const file_data = item.type == 'ImageFile' ? getFileBase64() : item.value;
272
+ const file_info = await client
273
+ .postRichMediaByGroup(event.GuildId, {
274
+ file_type: 1,
275
+ file_data: file_data
276
+ })
277
+ .then(res => res?.file_info);
278
+ if (file_info) {
279
+ url = file_info;
280
+ }
281
+ }
191
282
  });
192
- })).catch(err => [
193
- createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)
194
- ]);
195
- return res;
196
- }
197
- const images = val.filter(item => item.type == 'Image' || item.type == 'ImageFile' || item.type == 'ImageURL');
198
- if (images && images.length > 0) {
199
- return Promise.all(images.map(async (item) => {
200
- if (item.type == 'ImageURL') {
201
- const res = await client.groupOpenMessages(event.GuildId, {
202
- content: '',
203
- media: {
204
- file_info: item.value
205
- },
206
- msg_id: event.MessageId,
207
- msg_type: 7,
208
- msg_seq: client.getMessageSeq(event.MessageId)
209
- });
210
- return createResult(ResultCode.Ok, 'client.groupOpenMessages', {
283
+ const res = await client.groupOpenMessages(event.GuildId, {
284
+ content: '',
285
+ media: {
286
+ file_info: url
287
+ },
288
+ msg_id: event.MessageId,
289
+ msg_type: 7,
290
+ msg_seq: client.getMessageSeq(event.MessageId)
291
+ });
292
+ return [
293
+ createResult(ResultCode.Ok, 'client.groupOpenMessages', {
211
294
  id: res.id
212
- });
213
- }
214
- try {
215
- const getFileBase64 = () => readFileSync(item.value, 'base64');
216
- const file_data = item.type == 'ImageFile' ? getFileBase64() : item.value;
217
- const file_info = await client
218
- .postRichMediaByGroup(event.GuildId, {
219
- file_type: 1,
220
- file_data: file_data
221
295
  })
222
- .then(res => res?.file_info);
223
- if (!file_info) {
224
- return createResult(ResultCode.Fail, 'client.postRichMediaByGroup', null);
296
+ ];
297
+ }
298
+ const mdAndButtons = val.filter(item => item.type == 'Markdown' || item.type == 'BT.group');
299
+ if (mdAndButtons && mdAndButtons.length > 0) {
300
+ const params = {};
301
+ mdAndButtons.forEach(async (item) => {
302
+ if (item.type === 'BT.group') {
303
+ // 如果是按钮,获取参数
304
+ const template_id = item?.options?.template_id;
305
+ if (template_id) {
306
+ params['keyboard'] = {
307
+ id: template_id
308
+ };
309
+ }
310
+ else {
311
+ const rows = item.value;
312
+ // 构造成按钮
313
+ const content = createButtonsData(rows);
314
+ params['keyboard'] = {
315
+ content: content
316
+ };
317
+ }
225
318
  }
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 => [
243
- createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)
244
- ]);
245
- }
246
- // buttons
247
- const buttons = val.filter(item => item.type == 'BT.group');
248
- if (buttons && buttons.length > 0) {
249
- return Promise.all(buttons.map(async (item) => {
250
- const template_id = item?.options?.template_id;
251
- if (template_id) {
252
- const res = await client.groupOpenMessages(event.GuildId, {
253
- content: '',
254
- msg_id: event.MessageId,
255
- keyboard: {
256
- id: template_id
257
- },
258
- msg_type: 2,
259
- msg_seq: client.getMessageSeq(event.MessageId)
260
- });
261
- return createResult(ResultCode.Ok, 'client.groupOpenMessages', {
262
- id: res.id
263
- });
264
- }
265
- const rows = item.value;
266
- // 构造成按钮
267
- const data = createButtonsData(rows);
319
+ else if (item.type === 'Markdown') {
320
+ // 如果是markdown,获取内容
321
+ const content = createMarkdownText(item.value);
322
+ if (content) {
323
+ params['markdown'] = {
324
+ content: content
325
+ };
326
+ }
327
+ }
328
+ });
268
329
  const res = await client.groupOpenMessages(event.GuildId, {
269
330
  content: '',
270
- msg_id: event.MessageId,
271
- keyboard: {
272
- content: data
331
+ markdown: {
332
+ content: content,
273
333
  },
334
+ msg_id: event.MessageId,
274
335
  msg_type: 2,
275
- msg_seq: client.getMessageSeq(event.MessageId)
336
+ msg_seq: client.getMessageSeq(event.MessageId),
337
+ ...params
276
338
  });
277
- return createResult(ResultCode.Ok, 'client.groupOpenMessages', {
278
- id: res.id
339
+ return [
340
+ createResult(ResultCode.Ok, 'client.groupOpenMessages', { id: res.id })
341
+ ];
342
+ }
343
+ // ark
344
+ const ark = val.filter(item => item.type == 'Ark.BigCard' || item.type == 'Ark.Card' || item.type == 'Ark.list');
345
+ if (ark && ark.length > 0) {
346
+ const params = {};
347
+ ark.forEach(async (item) => {
348
+ if (item.type === 'Ark.Card') {
349
+ const arkData = createArkCardData(item.value);
350
+ params['ark'] = arkData;
351
+ }
352
+ else if (item.type === 'Ark.BigCard') {
353
+ const arkData = createArkBigCardData(item.value);
354
+ params['ark'] = arkData;
355
+ }
356
+ else if (item.type === 'Ark.list') {
357
+ const arkData = createArkList(item.value);
358
+ params['ark'] = arkData;
359
+ }
279
360
  });
280
- })).catch(err => [
281
- createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)
282
- ]);
283
- }
284
- // ark
285
- const ark = val.filter(item => item.type == 'Ark.BigCard' || item.type == 'Ark.Card' || item.type == 'Ark.list');
286
- if (ark && ark.length > 0) {
287
- return Promise.all(ark.map(async (item) => {
288
- if (item.type === 'Ark.Card') {
289
- const arkData = createArkCardData(item.value);
290
- const res = await client.groupOpenMessages(event.GuildId, {
291
- msg_id: event.MessageId,
292
- ark: arkData,
293
- msg_type: 3,
294
- msg_seq: client.getMessageSeq(event.MessageId)
295
- });
296
- return createResult(ResultCode.Ok, 'client.groupOpenMessages', {
297
- id: res.id
298
- });
299
- }
300
- if (item.type === 'Ark.BigCard') {
301
- const arkData = createArkBigCardData(item.value);
302
- const res = await client.groupOpenMessages(event.GuildId, {
303
- msg_id: event.MessageId,
304
- ark: arkData,
305
- msg_type: 3,
306
- msg_seq: client.getMessageSeq(event.MessageId)
307
- });
308
- return createResult(ResultCode.Ok, 'client.groupOpenMessages', { id: res.id });
309
- }
310
- const arkData = createArkList(item.value);
311
361
  const res = await client.groupOpenMessages(event.GuildId, {
312
362
  msg_id: event.MessageId,
313
- ark: arkData,
314
363
  msg_type: 3,
315
- msg_seq: client.getMessageSeq(event.MessageId)
364
+ msg_seq: client.getMessageSeq(event.MessageId),
365
+ ...params
316
366
  });
317
- return createResult(ResultCode.Ok, 'client.groupOpenMessages', { id: res.id });
318
- })).catch(err => [
367
+ return [createResult(ResultCode.Ok, 'client.groupOpenMessages', { id: res.id })];
368
+ }
369
+ }
370
+ catch (err) {
371
+ return [
319
372
  createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)
320
- ]);
373
+ ];
321
374
  }
322
- return Promise.all([]);
375
+ return [];
323
376
  };
324
377
  /**
325
378
  * 私聊消息
@@ -328,149 +381,156 @@ const GROUP_AT_MESSAGE_CREATE = async (client, event, val) => {
328
381
  * @param val
329
382
  * @returns
330
383
  */
331
- const C2C_MESSAGE_CREATE = (client, event, val) => {
332
- const content = val
333
- .filter(item => item.type == 'Mention' || item.type == 'Text' || item.type == 'Link')
334
- .map(item => {
335
- if (item.type == 'Link') {
336
- return `[${item.value}](${item?.options?.link})`;
337
- }
338
- else if (item.type == 'Text') {
339
- return item.value;
340
- }
341
- return '';
342
- })
343
- .join('');
344
- if (content) {
345
- return Promise.all([content].map(async (item) => {
384
+ const C2C_MESSAGE_CREATE = async (client, event, val) => {
385
+ try {
386
+ const content = val
387
+ .filter(item => item.type == 'Mention' || item.type == 'Text' || item.type == 'Link')
388
+ .map(item => {
389
+ if (item.type == 'Link') {
390
+ return `[${item.value}](${item?.options?.link})`;
391
+ }
392
+ else if (item.type == 'Mention') {
393
+ if (item.value == 'everyone' ||
394
+ item.value == 'all' ||
395
+ item.value == '' ||
396
+ typeof item.value != 'string') {
397
+ return ``;
398
+ }
399
+ if (item.options?.belong == 'user') {
400
+ return `<@${item.value}>`;
401
+ }
402
+ return '';
403
+ }
404
+ else if (item.type == 'Text') {
405
+ return item.value;
406
+ }
407
+ })
408
+ .join('');
409
+ if (content) {
346
410
  const res = await client.usersOpenMessages(event.OpenId, {
347
- content: item,
411
+ content: content,
348
412
  msg_id: event.MessageId,
349
413
  msg_type: 0,
350
414
  msg_seq: client.getMessageSeq(event.MessageId)
351
415
  });
352
- return createResult(ResultCode.Ok, 'client.usersOpenMessages', {
353
- id: res.id
354
- });
355
- })).catch(err => [
356
- createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)
357
- ]);
358
- }
359
- const images = val.filter(item => item.type == 'Image' || item.type == 'ImageFile' || item.type == 'ImageURL');
360
- if (images && images.length > 0) {
361
- return Promise.all(images.map(async (item) => {
362
- if (item.type == 'ImageURL') {
363
- const res = await client.usersOpenMessages(event.OpenId, {
364
- content: '',
365
- media: {
366
- file_info: item.value
367
- },
368
- msg_id: event.MessageId,
369
- msg_type: 7,
370
- msg_seq: client.getMessageSeq(event.MessageId)
371
- });
372
- return createResult(ResultCode.Ok, 'client.usersOpenMessages', {
416
+ return [createResult(ResultCode.Ok, 'client.usersOpenMessages', {
373
417
  id: res.id
374
- });
375
- }
376
- const getFileBase64 = () => readFileSync(item.value, 'base64');
377
- const file_data = item.type == 'ImageFile' ? getFileBase64() : item.value;
378
- const file_info = await client
379
- .postRichMediaByUsers(event.OpenId, {
380
- file_type: 1,
381
- file_data: file_data
382
- })
383
- .then(res => res?.file_info);
384
- if (!file_info)
385
- return Promise.resolve(null);
386
- return client.usersOpenMessages(event.OpenId, {
418
+ })];
419
+ }
420
+ const images = val.filter(item => item.type == 'Image' || item.type == 'ImageFile' || item.type == 'ImageURL');
421
+ if (images && images.length > 0) {
422
+ let url = '';
423
+ images.filter(async (item) => {
424
+ // 已经处理。
425
+ if (url)
426
+ return;
427
+ if (item.type == 'ImageURL') {
428
+ url = item.value;
429
+ }
430
+ else if (item.type === 'ImageFile' || item.type === 'Image') {
431
+ const getFileBase64 = () => readFileSync(item.value, 'base64');
432
+ const file_data = item.type == 'ImageFile' ? getFileBase64() : item.value;
433
+ const file_info = await client
434
+ .postRichMediaByGroup(event.GuildId, {
435
+ file_type: 1,
436
+ file_data: file_data
437
+ })
438
+ .then(res => res?.file_info);
439
+ if (file_info) {
440
+ url = file_info;
441
+ }
442
+ }
443
+ });
444
+ const res = await client.usersOpenMessages(event.OpenId, {
387
445
  content: '',
388
446
  media: {
389
- file_info
447
+ file_info: url
390
448
  },
391
449
  msg_id: event.MessageId,
392
450
  msg_type: 7,
393
451
  msg_seq: client.getMessageSeq(event.MessageId)
394
452
  });
395
- })).catch(err => [
396
- createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)
397
- ]);
398
- }
399
- // buttons
400
- const buttons = val.filter(item => item.type == 'BT.group');
401
- if (buttons && buttons.length > 0) {
402
- return Promise.all(buttons.map(async (item) => {
403
- const template_id = item?.options?.template_id;
404
- if (template_id) {
405
- const res = await client.usersOpenMessages(event.GuildId, {
406
- content: '',
407
- msg_id: event.MessageId,
408
- keyboard: {
409
- id: template_id
410
- },
411
- msg_type: 2,
412
- msg_seq: client.getMessageSeq(event.MessageId)
413
- });
414
- return createResult(ResultCode.Ok, 'client.usersOpenMessages', {
453
+ return [
454
+ createResult(ResultCode.Ok, 'client.usersOpenMessages', {
415
455
  id: res.id
416
- });
417
- }
418
- const rows = item.value;
419
- // 构造成按钮
420
- const data = createButtonsData(rows);
421
- const res = await client.usersOpenMessages(event.GuildId, {
456
+ })
457
+ ];
458
+ }
459
+ const mdAndButtons = val.filter(item => item.type == 'Markdown' || item.type == 'BT.group');
460
+ if (mdAndButtons && mdAndButtons.length > 0) {
461
+ const params = {};
462
+ mdAndButtons.forEach(async (item) => {
463
+ if (item.type === 'BT.group') {
464
+ // 如果是按钮,获取参数
465
+ const template_id = item?.options?.template_id;
466
+ if (template_id) {
467
+ params['keyboard'] = {
468
+ id: template_id
469
+ };
470
+ }
471
+ else {
472
+ const rows = item.value;
473
+ // 构造成按钮
474
+ const content = createButtonsData(rows);
475
+ params['keyboard'] = {
476
+ content: content
477
+ };
478
+ }
479
+ }
480
+ else if (item.type === 'Markdown') {
481
+ // 如果是markdown,获取内容
482
+ const content = createMarkdownText(item.value);
483
+ if (content) {
484
+ params['markdown'] = {
485
+ content: content
486
+ };
487
+ }
488
+ }
489
+ });
490
+ const res = await client.usersOpenMessages(event.OpenId, {
422
491
  content: '',
423
492
  msg_id: event.MessageId,
424
- keyboard: {
425
- content: data
426
- },
427
493
  msg_type: 2,
428
- msg_seq: client.getMessageSeq(event.MessageId)
494
+ msg_seq: client.getMessageSeq(event.MessageId),
495
+ ...params
429
496
  });
430
- return createResult(ResultCode.Ok, 'client.usersOpenMessages', {
431
- id: res.id
497
+ return [
498
+ createResult(ResultCode.Ok, 'client.usersOpenMessages', { id: res.id })
499
+ ];
500
+ }
501
+ // ark
502
+ const ark = val.filter(item => item.type == 'Ark.BigCard' || item.type == 'Ark.Card' || item.type == 'Ark.list');
503
+ if (ark && ark.length > 0) {
504
+ const params = {};
505
+ ark.forEach(async (item) => {
506
+ if (item.type === 'Ark.Card') {
507
+ const arkData = createArkCardData(item.value);
508
+ params['ark'] = arkData;
509
+ }
510
+ else if (item.type === 'Ark.BigCard') {
511
+ const arkData = createArkBigCardData(item.value);
512
+ params['ark'] = arkData;
513
+ }
514
+ else if (item.type === 'Ark.list') {
515
+ const arkData = createArkList(item.value);
516
+ params['ark'] = arkData;
517
+ }
432
518
  });
433
- })).catch(err => [
434
- createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)
435
- ]);
436
- }
437
- // ark
438
- const ark = val.filter(item => item.type == 'Ark.BigCard' || item.type == 'Ark.Card' || item.type == 'Ark.list');
439
- if (ark && ark.length > 0) {
440
- return Promise.all(ark.map(async (item) => {
441
- if (item.type === 'Ark.Card') {
442
- const arkData = createArkCardData(item.value);
443
- const res = await client.usersOpenMessages(event.GuildId, {
444
- msg_id: event.MessageId,
445
- ark: arkData,
446
- msg_type: 3,
447
- msg_seq: client.getMessageSeq(event.MessageId)
448
- });
449
- return createResult(ResultCode.Ok, 'client.usersOpenMessages', { id: res.id });
450
- }
451
- if (item.type === 'Ark.BigCard') {
452
- const arkData = createArkBigCardData(item.value);
453
- const res = await client.usersOpenMessages(event.GuildId, {
454
- msg_id: event.MessageId,
455
- ark: arkData,
456
- msg_type: 3,
457
- msg_seq: client.getMessageSeq(event.MessageId)
458
- });
459
- return createResult(ResultCode.Ok, 'client.usersOpenMessages', { id: res.id });
460
- }
461
- const arkData = createArkList(item.value);
462
- const res = await client.usersOpenMessages(event.GuildId, {
519
+ const res = await client.usersOpenMessages(event.OpenId, {
463
520
  msg_id: event.MessageId,
464
- ark: arkData,
465
521
  msg_type: 3,
466
- msg_seq: client.getMessageSeq(event.MessageId)
522
+ msg_seq: client.getMessageSeq(event.MessageId),
523
+ ...params
467
524
  });
468
- return createResult(ResultCode.Ok, 'client.usersOpenMessages', { id: res.id });
469
- })).catch(err => [
525
+ return [createResult(ResultCode.Ok, 'client.usersOpenMessages', { id: res.id })];
526
+ }
527
+ }
528
+ catch (err) {
529
+ return [
470
530
  createResult(ResultCode.Fail, err?.response?.data ?? err?.message ?? err, null)
471
- ]);
531
+ ];
472
532
  }
473
- return Promise.all([]);
533
+ return [];
474
534
  };
475
535
  /**
476
536
  * 频道私聊
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alemonjs/qq-bot",
3
- "version": "2.1.0-alpha.4",
3
+ "version": "2.1.0-alpha.5",
4
4
  "description": "阿柠檬qqbot平台连接",
5
5
  "author": "lemonade",
6
6
  "license": "MIT",