mirai-js 2.1.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (130) hide show
  1. package/.eslintrc.json +45 -45
  2. package/.github/FUNDING.yml +12 -12
  3. package/.github/dependabot.yml +14 -14
  4. package/.github/workflows/codeql-analysis.yml +70 -0
  5. package/.husky/pre-commit +5 -5
  6. package/LICENSE +661 -661
  7. package/README.md +17 -283
  8. package/demo.html +1 -1
  9. package/demo.js +14 -92
  10. package/dist/browser/mirai-js.js +1 -1
  11. package/dist/node/BaseType.d.ts +3 -0
  12. package/dist/node/Bot.d.ts +95 -8
  13. package/dist/node/Bot.js +241 -18
  14. package/dist/node/FileManager.js +15 -6
  15. package/dist/node/Middleware.js +90 -16
  16. package/dist/node/core/anno/deleteAnno.js +67 -0
  17. package/dist/node/core/anno/getAnno.js +70 -0
  18. package/dist/node/core/anno/publishAnno.js +70 -0
  19. package/dist/node/core/auth.js +9 -11
  20. package/dist/node/core/fs/deleteGroupFile.js +71 -0
  21. package/dist/node/core/fs/getGroupFileInfo.js +77 -0
  22. package/dist/node/core/fs/getGroupFileList.js +82 -0
  23. package/dist/node/core/fs/makeGroupDir.js +73 -0
  24. package/dist/node/core/fs/moveGroupFile.js +77 -0
  25. package/dist/node/core/fs/renameGroupFile.js +73 -0
  26. package/dist/node/core/fs/uploadGroupFIle.js +81 -0
  27. package/dist/node/core/getFriendList.js +9 -11
  28. package/dist/node/core/getGroupConfig.js +9 -11
  29. package/dist/node/core/getGroupFileInfo.js +6 -2
  30. package/dist/node/core/getGroupFileList.js +6 -2
  31. package/dist/node/core/getGroupList.js +9 -11
  32. package/dist/node/core/getMemberInfo.js +13 -19
  33. package/dist/node/core/getMemberList.js +9 -11
  34. package/dist/node/core/getSessionConfig.js +9 -11
  35. package/dist/node/core/getUserProfile.js +78 -0
  36. package/dist/node/core/groupFileDelete.js +6 -2
  37. package/dist/node/core/groupFileMove.js +6 -2
  38. package/dist/node/core/groupFileRename.js +6 -2
  39. package/dist/node/core/mute.js +9 -11
  40. package/dist/node/core/muteAll.js +9 -11
  41. package/dist/node/core/quitGroup.js +9 -11
  42. package/dist/node/core/recall.js +9 -11
  43. package/dist/node/core/releaseSession.js +10 -11
  44. package/dist/node/core/removeFriend.js +64 -0
  45. package/dist/node/core/removeMember.js +9 -11
  46. package/dist/node/core/responseBotInvitedJoinGroupRequest.js +9 -11
  47. package/dist/node/core/responseFirendRequest.js +9 -11
  48. package/dist/node/core/responseMemberJoinRequest.js +9 -11
  49. package/dist/node/core/sendCommand.js +9 -11
  50. package/dist/node/core/sendFirendMessage.js +9 -11
  51. package/dist/node/core/sendGroupMessage.js +9 -11
  52. package/dist/node/core/sendNudge.js +9 -11
  53. package/dist/node/core/sendTempMessage.js +9 -11
  54. package/dist/node/core/setEssence.js +9 -11
  55. package/dist/node/core/setGroupConfig.js +9 -11
  56. package/dist/node/core/setMemberAdmin.js +70 -0
  57. package/dist/node/core/setMemberInfo.js +9 -11
  58. package/dist/node/core/setSessionConfig.js +9 -11
  59. package/dist/node/core/startListeningBrowser.js +8 -9
  60. package/dist/node/core/startListeningNode.js +8 -10
  61. package/dist/node/core/stopListeningBrowser.js +5 -1
  62. package/dist/node/core/stopListeningNode.js +5 -1
  63. package/dist/node/core/unmute.js +9 -11
  64. package/dist/node/core/unmuteAll.js +9 -11
  65. package/dist/node/core/uploadFileAndSend.js +6 -1
  66. package/dist/node/core/uploadImage.js +9 -10
  67. package/dist/node/core/uploadVoice.js +9 -10
  68. package/dist/node/core/verify.js +9 -11
  69. package/dist/node/polyfill/URL.js +5 -0
  70. package/dist/node/polyfill/wsListener.js +6 -0
  71. package/docs/checkDocShouldBuild.sh +4 -4
  72. package/package.json +51 -51
  73. package/src/BaseType.d.ts +3 -0
  74. package/src/Bot.d.ts +95 -8
  75. package/src/Bot.js +154 -9
  76. package/src/FileManager.js +10 -6
  77. package/src/Middleware.js +51 -3
  78. package/src/core/anno/deleteAnno.js +42 -0
  79. package/src/core/anno/getAnno.js +43 -0
  80. package/src/core/anno/publishAnno.js +43 -0
  81. package/src/core/auth.js +5 -7
  82. package/src/core/fs/deleteGroupFile.js +44 -0
  83. package/src/core/fs/getGroupFileInfo.js +45 -0
  84. package/src/core/fs/getGroupFileList.js +46 -0
  85. package/src/core/fs/makeGroupDir.js +44 -0
  86. package/src/core/fs/moveGroupFile.js +46 -0
  87. package/src/core/{groupFileRename.js → fs/renameGroupFile.js} +11 -13
  88. package/src/core/{uploadFileAndSend.js → fs/uploadGroupFIle.js} +9 -11
  89. package/src/core/getFriendList.js +5 -7
  90. package/src/core/getGroupConfig.js +5 -7
  91. package/src/core/getGroupList.js +5 -7
  92. package/src/core/getMemberInfo.js +8 -10
  93. package/src/core/getMemberList.js +5 -7
  94. package/src/core/getSessionConfig.js +5 -7
  95. package/src/core/getUserProfile.js +39 -0
  96. package/src/core/mute.js +5 -7
  97. package/src/core/muteAll.js +5 -7
  98. package/src/core/quitGroup.js +5 -7
  99. package/src/core/recall.js +5 -7
  100. package/src/core/releaseSession.js +6 -7
  101. package/src/core/{groupFileDelete.js → removeFriend.js} +11 -17
  102. package/src/core/removeMember.js +5 -7
  103. package/src/core/responseBotInvitedJoinGroupRequest.js +5 -7
  104. package/src/core/responseFirendRequest.js +5 -7
  105. package/src/core/responseMemberJoinRequest.js +5 -7
  106. package/src/core/sendCommand.js +5 -7
  107. package/src/core/sendFirendMessage.js +5 -7
  108. package/src/core/sendGroupMessage.js +5 -7
  109. package/src/core/sendNudge.js +5 -7
  110. package/src/core/sendTempMessage.js +5 -7
  111. package/src/core/setEssence.js +5 -7
  112. package/src/core/setGroupConfig.js +5 -7
  113. package/src/core/setMemberAdmin.js +43 -0
  114. package/src/core/setMemberInfo.js +5 -7
  115. package/src/core/setSessionConfig.js +5 -7
  116. package/src/core/startListeningBrowser.js +4 -6
  117. package/src/core/startListeningNode.js +4 -6
  118. package/src/core/stopListeningBrowser.js +3 -0
  119. package/src/core/stopListeningNode.js +3 -0
  120. package/src/core/unmute.js +5 -7
  121. package/src/core/unmuteAll.js +5 -7
  122. package/src/core/uploadImage.js +5 -7
  123. package/src/core/uploadVoice.js +5 -7
  124. package/src/core/verify.js +5 -7
  125. package/src/polyfill/URL.js +3 -0
  126. package/src/polyfill/wsListener.js +4 -0
  127. package/webpack.config.js +4 -0
  128. package/src/core/getGroupFileInfo.js +0 -44
  129. package/src/core/getGroupFileList.js +0 -40
  130. package/src/core/groupFileMove.js +0 -46
package/dist/node/Bot.js CHANGED
@@ -33,8 +33,18 @@ const _getMemberList = require('./core/getMemberList');
33
33
 
34
34
  const _getMemberInfo = require('./core/getMemberInfo');
35
35
 
36
+ const _getUserProfile = require('./core/getUserProfile');
37
+
36
38
  const _setMemberInfo = require('./core/setMemberInfo');
37
39
 
40
+ const _setMemberAdmin = require('./core/setMemberAdmin');
41
+
42
+ const _getAnnoList = require('./core/anno/getAnno');
43
+
44
+ const _publishAnno = require('./core/anno/publishAnno');
45
+
46
+ const _deleteAnno = require('./core/anno/deleteAnno');
47
+
38
48
  const _recall = require('./core/recall');
39
49
 
40
50
  const _mute = require('./core/mute');
@@ -47,6 +57,8 @@ const _unmuteAll = require('./core/unmuteAll');
47
57
 
48
58
  const _removeMember = require('./core/removeMember');
49
59
 
60
+ const _removeFriend = require('./core/removeFriend');
61
+
50
62
  const _quitGroup = require('./core/quitGroup');
51
63
 
52
64
  const _getGroupConfig = require('./core/getGroupConfig');
@@ -55,9 +67,10 @@ const _setGroupConfig = require('./core/setGroupConfig');
55
67
 
56
68
  const _setEssence = require('./core/setEssence');
57
69
 
58
- const _startListening = process.browser ? require('./core/startListeningBrowser') : require('./core/startListeningNode');
59
-
60
- const _stopListening = process.browser ? require('./core/stopListeningBrowser') : require('./core/stopListeningNode'); // 其他
70
+ const {
71
+ wsStartListening: _startListening,
72
+ wsStopListening: _stopListening
73
+ } = require('./polyfill/wsListener'); // 其他
61
74
 
62
75
 
63
76
  const random = require('./util/random')(0, 2E16);
@@ -433,14 +446,14 @@ class Bot extends BotConfigGetable {
433
446
  });
434
447
  } // 发给好友
435
448
  else if (friend) {
436
- await _sendNudge({
437
- baseUrl,
438
- sessionKey,
439
- target,
440
- subject: friend,
441
- kind: 'Friend'
442
- });
443
- }
449
+ await _sendNudge({
450
+ baseUrl,
451
+ sessionKey,
452
+ target,
453
+ subject: friend,
454
+ kind: 'Friend'
455
+ });
456
+ }
444
457
  }
445
458
  /**
446
459
  * @description 添加一个事件处理器
@@ -910,7 +923,7 @@ class Bot extends BotConfigGetable {
910
923
  * @description 获取群成员信息
911
924
  * @param {number} group 必选,群成员所在群号
912
925
  * @param {number} qq 必选,群成员的 qq 号
913
- * @returns {Object[]} 结构 { name, title } 群名片和群头衔
926
+ * @returns {Object}
914
927
  */
915
928
 
916
929
 
@@ -947,12 +960,44 @@ class Bot extends BotConfigGetable {
947
960
  delete memberInfo.specialTitle;
948
961
  return memberInfo;
949
962
  }
963
+ /**
964
+ * @description 获取群成员信息
965
+ * @param {number} qq 必选,用户的 qq 号
966
+ * @returns {Object} 结构 { nickname, email, age, level, sign, sex }
967
+ */
968
+
969
+
970
+ async getUserProfile({
971
+ qq
972
+ }) {
973
+ // 检查对象状态
974
+ if (!this.config) {
975
+ throw new Error('getUserProfile 请先调用 open,建立一个会话');
976
+ } // 检查参数
977
+
978
+
979
+ if (!qq) {
980
+ throw new Error('getUserProfile 缺少必要的 qq 参数');
981
+ }
982
+
983
+ const {
984
+ baseUrl,
985
+ sessionKey
986
+ } = this.config;
987
+ return await _getUserProfile({
988
+ baseUrl,
989
+ sessionKey,
990
+ target: qq
991
+ });
992
+ }
950
993
  /**
951
994
  * @description 设置群成员信息
952
995
  * @param {number} group 必选,群成员所在群号
953
996
  * @param {number} qq 必选,群成员的 qq 号
954
997
  * @param {string} name 可选,要设置的群名片
955
998
  * @param {string} title 可选,要设置的群头衔
999
+ * @param {boolean} permission 可选,要设置的权限,
1000
+ * 使用枚举值:Bot.Permission.Admin, Bot.Permission.Member
956
1001
  * @returns {void}
957
1002
  */
958
1003
 
@@ -961,7 +1006,8 @@ class Bot extends BotConfigGetable {
961
1006
  group,
962
1007
  qq,
963
1008
  name,
964
- title
1009
+ title,
1010
+ permission
965
1011
  }) {
966
1012
  // 检查对象状态
967
1013
  if (!this.config) {
@@ -974,6 +1020,58 @@ class Bot extends BotConfigGetable {
974
1020
  group,
975
1021
  qq
976
1022
  })} 参数`);
1023
+ }
1024
+
1025
+ if (permission != undefined && permission != Bot.groupPermission.ADMINISTRATOR && permission != Bot.groupPermission.MEMBER) {
1026
+ throw new Error('setMemberInfo admin 参数只能是 Bot.groupPermission.ADMINISTRATOR 或 Bot.groupPermission.Member');
1027
+ } // setMemberInfo
1028
+
1029
+
1030
+ const {
1031
+ baseUrl,
1032
+ sessionKey
1033
+ } = this.config;
1034
+
1035
+ if (name != undefined || title != undefined) {
1036
+ await _setMemberInfo({
1037
+ baseUrl,
1038
+ sessionKey,
1039
+ target: group,
1040
+ memberId: qq,
1041
+ name,
1042
+ specialTitle: title
1043
+ });
1044
+ } // setPermission
1045
+
1046
+
1047
+ if (permission != undefined) {
1048
+ await _setMemberAdmin({
1049
+ baseUrl,
1050
+ sessionKey,
1051
+ target: group,
1052
+ memberId: qq,
1053
+ assign: permission == Bot.groupPermission.ADMINISTRATOR ? true : false
1054
+ });
1055
+ }
1056
+ }
1057
+ /**
1058
+ * @description 获取群公告列表迭代器
1059
+ * @param {number} group 必选,群号
1060
+ * @returns 迭代器
1061
+ */
1062
+
1063
+
1064
+ async *getAnnoIter({
1065
+ group
1066
+ }) {
1067
+ // 检查对象状态
1068
+ if (!this.config) {
1069
+ throw new Error('getAnno 请先调用 open,建立一个会话');
1070
+ } // 检查参数
1071
+
1072
+
1073
+ if (!group) {
1074
+ throw new Error('getAnno 缺少必要的 group 参数');
977
1075
  } // 获取列表
978
1076
 
979
1077
 
@@ -981,13 +1079,107 @@ class Bot extends BotConfigGetable {
981
1079
  baseUrl,
982
1080
  sessionKey
983
1081
  } = this.config;
984
- await _setMemberInfo({
1082
+ let offset = 0;
1083
+ let annoList = await _getAnnoList({
1084
+ baseUrl,
1085
+ sessionKey,
1086
+ id: group,
1087
+ offset,
1088
+ size: 10
1089
+ });
1090
+
1091
+ while (annoList.length > 0) {
1092
+ for (const anno of annoList) {
1093
+ yield anno;
1094
+ } // 获取下一页
1095
+
1096
+
1097
+ offset += 10;
1098
+ annoList = await _getAnnoList({
1099
+ baseUrl,
1100
+ sessionKey,
1101
+ id: group,
1102
+ offset,
1103
+ size: 10
1104
+ });
1105
+ }
1106
+
1107
+ return;
1108
+ }
1109
+ /**
1110
+ * @description 发布群公告
1111
+ * @param {number} group 必选,群号
1112
+ * @param {string} content 必选,公告内容
1113
+ * @returns {void}
1114
+ */
1115
+
1116
+
1117
+ async publishAnno({
1118
+ group,
1119
+ content,
1120
+ pinned
1121
+ }) {
1122
+ // 检查对象状态
1123
+ if (!this.config) {
1124
+ throw new Error('publishAllo 请先调用 open,建立一个会话');
1125
+ } // 检查参数
1126
+
1127
+
1128
+ if (!group || !content) {
1129
+ throw new Error(`publishAllo 缺少必要的 ${getInvalidParamsString({
1130
+ group,
1131
+ content
1132
+ })} 参数`);
1133
+ } // 发布公告
1134
+
1135
+
1136
+ const {
1137
+ baseUrl,
1138
+ sessionKey
1139
+ } = this.config;
1140
+ await _publishAnno({
985
1141
  baseUrl,
986
1142
  sessionKey,
987
1143
  target: group,
988
- memberId: qq,
989
- name,
990
- specialTitle: title
1144
+ content,
1145
+ pinned
1146
+ });
1147
+ }
1148
+ /**
1149
+ * @description 删除群公告
1150
+ * @param {number} group 必选,群号
1151
+ * @param {string} fid 必选,公告 id
1152
+ * @reaturns {void}
1153
+ */
1154
+
1155
+
1156
+ async deleteAnno({
1157
+ group,
1158
+ fid
1159
+ }) {
1160
+ // 检查对象状态
1161
+ if (!this.config) {
1162
+ throw new Error('deleteAnno 请先调用 open,建立一个会话');
1163
+ } // 检查参数
1164
+
1165
+
1166
+ if (!group || !fid) {
1167
+ throw new Error(`deleteAnno 缺少必要的 ${getInvalidParamsString({
1168
+ group,
1169
+ fid
1170
+ })} 参数`);
1171
+ } // 发布公告
1172
+
1173
+
1174
+ const {
1175
+ baseUrl,
1176
+ sessionKey
1177
+ } = this.config;
1178
+ await _deleteAnno({
1179
+ baseUrl,
1180
+ sessionKey,
1181
+ id: group,
1182
+ fid
991
1183
  });
992
1184
  }
993
1185
  /**
@@ -1170,6 +1362,37 @@ class Bot extends BotConfigGetable {
1170
1362
  msg: message
1171
1363
  });
1172
1364
  }
1365
+ /**
1366
+ * @description 删除好友
1367
+ * @param {*} qq 欲删除的好友 qq 号
1368
+ * @returns {void}
1369
+ */
1370
+
1371
+
1372
+ async removeFriend({
1373
+ qq
1374
+ }) {
1375
+ // 检查对象状态
1376
+ if (!this.config) {
1377
+ throw new Error('removeFriend 请先调用 open,建立一个会话');
1378
+ } // 检查参数
1379
+
1380
+
1381
+ if (!qq) {
1382
+ throw new Error('removeFriend 缺少必要的 qq 参数');
1383
+ }
1384
+
1385
+ const {
1386
+ baseUrl,
1387
+ sessionKey
1388
+ } = this.config; // 删除好友
1389
+
1390
+ await _removeFriend({
1391
+ baseUrl,
1392
+ sessionKey,
1393
+ target: qq
1394
+ });
1395
+ }
1173
1396
  /**
1174
1397
  * @description 移除群成员
1175
1398
  * @param {number} group 必选,欲移除的成员所在群号
@@ -1180,7 +1403,7 @@ class Bot extends BotConfigGetable {
1180
1403
  async quitGroup({
1181
1404
  group
1182
1405
  }) {
1183
- // 检查对象状态
1406
+ // 检查对象状态
1184
1407
  if (!this.config) {
1185
1408
  throw new Error('quitGroup 请先调用 open,建立一个会话');
1186
1409
  } // 检查参数
@@ -18,7 +18,7 @@ class FileManager {
18
18
 
19
19
  this._getGroupFileList = ({
20
20
  dir
21
- }) => require('./core/getGroupFileList')({
21
+ }) => require('./core/fs/getGroupFileList')({
22
22
  baseUrl,
23
23
  sessionKey,
24
24
  target: group,
@@ -27,7 +27,7 @@ class FileManager {
27
27
 
28
28
  this._getGroupFileInfo = ({
29
29
  id
30
- }) => require('./core/getGroupFileInfo')({
30
+ }) => require('./core/fs/getGroupFileInfo')({
31
31
  baseUrl,
32
32
  sessionKey,
33
33
  target: group,
@@ -38,7 +38,7 @@ class FileManager {
38
38
  type,
39
39
  path,
40
40
  file
41
- }) => require('./core/uploadFileAndSend')({
41
+ }) => require('./core/fs/uploadGroupFIle')({
42
42
  baseUrl,
43
43
  sessionKey,
44
44
  type,
@@ -49,17 +49,26 @@ class FileManager {
49
49
 
50
50
  this._groupFileDelete = ({
51
51
  id
52
- }) => require('./core/groupFileDelete')({
52
+ }) => require('./core/fs/deleteGroupFile')({
53
53
  baseUrl,
54
54
  sessionKey,
55
55
  target: group,
56
56
  id
57
57
  });
58
58
 
59
+ this._makeGroupDir = ({
60
+ dir
61
+ }) => require('./core/fs/makeGroupDir')({
62
+ baseUrl,
63
+ sessionKey,
64
+ target: group,
65
+ dir
66
+ });
67
+
59
68
  this._groupFileRename = ({
60
69
  id,
61
70
  rename
62
- }) => require('./core/groupFileRename')({
71
+ }) => require('./core/fs/renameGroupFile')({
63
72
  baseUrl,
64
73
  sessionKey,
65
74
  target: group,
@@ -70,7 +79,7 @@ class FileManager {
70
79
  this._groupFileMove = ({
71
80
  id,
72
81
  movePath
73
- }) => require('./core/groupFileMove')({
82
+ }) => require('./core/fs/moveGroupFile')({
74
83
  baseUrl,
75
84
  sessionKey,
76
85
  target: group,
@@ -640,26 +640,100 @@ class Middleware {
640
640
  throw new Error('Middleware.syncWrapper 消息格式出错');
641
641
  }
642
642
 
643
- data.waitFor = {
644
- messageChain: () => {
645
- var _data$bot, _data$bot$waiter;
643
+ const watiForMessageChain = async qq => {
644
+ var _qq, _data$sender17;
646
645
 
647
- return (_data$bot = data.bot) === null || _data$bot === void 0 ? void 0 : (_data$bot$waiter = _data$bot.waiter) === null || _data$bot$waiter === void 0 ? void 0 : _data$bot$waiter.wait(data.type, ({
648
- messageChain
649
- }) => messageChain);
650
- },
651
- text: () => {
652
- var _data$bot2, _data$bot2$waiter;
646
+ qq = (_qq = qq) !== null && _qq !== void 0 ? _qq : data === null || data === void 0 ? void 0 : (_data$sender17 = data.sender) === null || _data$sender17 === void 0 ? void 0 : _data$sender17.id;
653
647
 
654
- return (_data$bot2 = data.bot) === null || _data$bot2 === void 0 ? void 0 : (_data$bot2$waiter = _data$bot2.waiter) === null || _data$bot2$waiter === void 0 ? void 0 : _data$bot2$waiter.wait(data.type, new Middleware().textProcessor().done(({
655
- text
656
- }) => text));
657
- },
658
- custom: processor => {
659
- var _data$bot3, _data$bot3$waiter;
648
+ if (qq == undefined) {
649
+ throw new Error('Middleware.syncWrapper 消息格式出错');
650
+ }
651
+
652
+ do {
653
+ var _await$data$bot$waite, _data$bot, _data$bot$waiter;
654
+
655
+ var {
656
+ messageChain,
657
+ id
658
+ } = (_await$data$bot$waite = await ((_data$bot = data.bot) === null || _data$bot === void 0 ? void 0 : (_data$bot$waiter = _data$bot.waiter) === null || _data$bot$waiter === void 0 ? void 0 : _data$bot$waiter.wait(data.type, ({
659
+ messageChain,
660
+ sender: {
661
+ id
662
+ }
663
+ }) => ({
664
+ messageChain,
665
+ id
666
+ })))) !== null && _await$data$bot$waite !== void 0 ? _await$data$bot$waite : {};
667
+ } while (qq != id);
668
+
669
+ return messageChain;
670
+ };
671
+
672
+ const waitForText = async qq => {
673
+ var _qq2, _data$sender18;
674
+
675
+ qq = (_qq2 = qq) !== null && _qq2 !== void 0 ? _qq2 : data === null || data === void 0 ? void 0 : (_data$sender18 = data.sender) === null || _data$sender18 === void 0 ? void 0 : _data$sender18.id;
676
+
677
+ if (qq == undefined) {
678
+ throw new Error('Middleware.syncWrapper 消息格式出错');
679
+ }
680
+
681
+ do {
682
+ var _await$data$bot$waite2, _data$bot2, _data$bot2$waiter;
683
+
684
+ var {
685
+ text,
686
+ id
687
+ } = (_await$data$bot$waite2 = await ((_data$bot2 = data.bot) === null || _data$bot2 === void 0 ? void 0 : (_data$bot2$waiter = _data$bot2.waiter) === null || _data$bot2$waiter === void 0 ? void 0 : _data$bot2$waiter.wait(data.type, new Middleware().textProcessor().done(({
688
+ text,
689
+ sender: {
690
+ id
691
+ }
692
+ }) => ({
693
+ text,
694
+ id
695
+ }))))) !== null && _await$data$bot$waite2 !== void 0 ? _await$data$bot$waite2 : {};
696
+ } while (qq != id);
697
+
698
+ return text;
699
+ };
700
+
701
+ const waitForCustom = async (qq, processor) => {
702
+ var _qq3, _data$sender19;
703
+
704
+ qq = (_qq3 = qq) !== null && _qq3 !== void 0 ? _qq3 : data === null || data === void 0 ? void 0 : (_data$sender19 = data.sender) === null || _data$sender19 === void 0 ? void 0 : _data$sender19.id;
660
705
 
661
- return (_data$bot3 = data.bot) === null || _data$bot3 === void 0 ? void 0 : (_data$bot3$waiter = _data$bot3.waiter) === null || _data$bot3$waiter === void 0 ? void 0 : _data$bot3$waiter.wait(data.type, processor);
706
+ if (qq == undefined) {
707
+ throw new Error('Middleware.syncWrapper 消息格式出错');
662
708
  }
709
+
710
+ do {
711
+ var _data$sender20, _data$bot3, _data$bot3$waiter;
712
+
713
+ var data = await ((_data$bot3 = data.bot) === null || _data$bot3 === void 0 ? void 0 : (_data$bot3$waiter = _data$bot3.waiter) === null || _data$bot3$waiter === void 0 ? void 0 : _data$bot3$waiter.wait(data.type, new Middleware().textProcessor().done(data => data)));
714
+ } while (qq != (data === null || data === void 0 ? void 0 : (_data$sender20 = data.sender) === null || _data$sender20 === void 0 ? void 0 : _data$sender20.id));
715
+
716
+ return await processor(data);
717
+ };
718
+
719
+ data.waitFor = {
720
+ groupMember: (qq = undefined) => {
721
+ return {
722
+ messageChain: () => watiForMessageChain(qq),
723
+ text: () => waitForText(qq),
724
+ custom: processor => waitForCustom(qq, processor)
725
+ };
726
+ },
727
+ friend: qq => {
728
+ return {
729
+ messageChain: () => watiForMessageChain(qq),
730
+ text: () => waitForText(qq),
731
+ custom: processor => waitForCustom(qq, processor)
732
+ };
733
+ },
734
+ messageChain: () => watiForMessageChain(data.sender.id),
735
+ text: () => waitForText(data.sender.id),
736
+ custom: processor => waitForCustom(data.sender.id, processor)
663
737
  };
664
738
  await next();
665
739
  } catch (error) {
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ const {
4
+ errCodeMap
5
+ } = require('../../util/errCode');
6
+
7
+ const axios = require('axios');
8
+
9
+ const {
10
+ URL
11
+ } = require('../../polyfill/URL');
12
+
13
+ const errorHandler = require('../../util/errorHandler');
14
+
15
+ const path = require('path');
16
+
17
+ const locationStr = `core.${path.basename(__filename, path.extname(__filename))}`;
18
+ /**
19
+ * @description 删除群公告
20
+ * @param {string} baseUrl mirai-api-http server 的地址
21
+ * @param {string} sessionKey 会话标识
22
+ * @param {number} id 群号
23
+ * @param {string} fid 公告 id
24
+ * @returns {Object} { code, msg }
25
+ */
26
+
27
+ module.exports = async ({
28
+ baseUrl,
29
+ sessionKey,
30
+ id,
31
+ fid
32
+ }) => {
33
+ try {
34
+ // 拼接 url
35
+ const url = new URL('/anno/delete', baseUrl).toString(); // 请求
36
+
37
+ const responseData = await axios.post(url, {
38
+ sessionKey,
39
+ id,
40
+ fid
41
+ });
42
+
43
+ try {
44
+ var {
45
+ data: {
46
+ msg: message,
47
+ code
48
+ }
49
+ } = responseData;
50
+ } catch (error) {
51
+ throw new Error('请求返回格式出错,请检查 mirai-console');
52
+ } // 抛出 mirai 的异常,到 catch 中处理后再抛出
53
+
54
+
55
+ if (code in errCodeMap) {
56
+ throw new Error(message);
57
+ }
58
+
59
+ return {
60
+ message,
61
+ code
62
+ };
63
+ } catch (error) {
64
+ console.error(`mirai-js: error ${locationStr}`);
65
+ errorHandler(error);
66
+ }
67
+ };
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ const {
4
+ errCodeMap
5
+ } = require('../../util/errCode');
6
+
7
+ const axios = require('axios').default;
8
+
9
+ const {
10
+ URL
11
+ } = require('../../polyfill/URL');
12
+
13
+ const errorHandler = require('../../util/errorHandler');
14
+
15
+ const path = require('path');
16
+
17
+ const locationStr = `core.${path.basename(__filename, path.extname(__filename))}`;
18
+ /**
19
+ * @description 获取群公告
20
+ * @param {string} baseUrl mirai-api-http server 的地址
21
+ * @param {string} sessionKey 会话标识
22
+ * @param {number} id 群号
23
+ * @param {number} offset 分页
24
+ * @param {number} size 分页, 默认 10
25
+ * @returns {Object[]}
26
+ */
27
+
28
+ module.exports = async ({
29
+ baseUrl,
30
+ sessionKey,
31
+ id,
32
+ offset,
33
+ size = 10
34
+ }) => {
35
+ try {
36
+ // 拼接 url
37
+ const url = new URL('/anno/list', baseUrl).toString(); // 请求
38
+
39
+ const responseData = await axios.get(url, {
40
+ params: {
41
+ sessionKey,
42
+ id,
43
+ offset,
44
+ size
45
+ }
46
+ });
47
+
48
+ try {
49
+ var {
50
+ data: {
51
+ msg: message,
52
+ code,
53
+ data
54
+ }
55
+ } = responseData;
56
+ } catch (error) {
57
+ throw new Error('请求返回格式出错,请检查 mirai-console');
58
+ } // 抛出 mirai 的异常,到 catch 中处理后再抛出
59
+
60
+
61
+ if (code in errCodeMap) {
62
+ throw new Error(message);
63
+ }
64
+
65
+ return data;
66
+ } catch (error) {
67
+ console.error(`mirai-js: error ${locationStr}`);
68
+ errorHandler(error);
69
+ }
70
+ };