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,43 @@
1
+ const { errCodeMap } = require('../../util/errCode');
2
+ const axios = require('axios');
3
+ const { URL } = require('../../polyfill/URL');
4
+ const errorHandler = require('../../util/errorHandler');
5
+ const path = require('path');
6
+ const { isBrowserEnv } = require('../../util/isBrowserEnv');
7
+ const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
8
+
9
+ /**
10
+ * @description 删除群公告
11
+ * @param {string} baseUrl mirai-api-http server 的地址
12
+ * @param {string} sessionKey 会话标识
13
+ * @param {number} id 群号
14
+ * @param {string} fid 公告 id
15
+ * @returns {Object} { code, msg }
16
+ */
17
+ module.exports = async ({ baseUrl, sessionKey, id, fid }) => {
18
+ try {
19
+ // 拼接 url
20
+ const url = new URL('/anno/delete', baseUrl).toString();
21
+
22
+ // 请求
23
+ const responseData = await axios.post(url, {
24
+ sessionKey, id, fid,
25
+ });
26
+ try {
27
+ var {
28
+ data: { msg: message, code }
29
+ } = responseData;
30
+ } catch (error) {
31
+ throw new Error(('请求返回格式出错,请检查 mirai-console'));
32
+ }
33
+ // 抛出 mirai 的异常,到 catch 中处理后再抛出
34
+ if (code in errCodeMap) {
35
+ throw new Error(message);
36
+ }
37
+ return { message, code };
38
+ } catch (error) {
39
+ console.error(`mirai-js: error ${locationStr}`);
40
+ errorHandler(error);
41
+ }
42
+
43
+ };
@@ -0,0 +1,44 @@
1
+ const { errCodeMap } = require('../../util/errCode');
2
+ const axios = require('axios').default;
3
+ const { URL } = require('../../polyfill/URL');
4
+ const errorHandler = require('../../util/errorHandler');
5
+ const path = require('path');
6
+ const { isBrowserEnv } = require('../../util/isBrowserEnv');
7
+ const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
8
+
9
+ /**
10
+ * @description 获取群公告
11
+ * @param {string} baseUrl mirai-api-http server 的地址
12
+ * @param {string} sessionKey 会话标识
13
+ * @param {number} id 群号
14
+ * @param {number} offset 分页
15
+ * @param {number} size 分页, 默认 10
16
+ * @returns {Object[]}
17
+ */
18
+ module.exports = async ({ baseUrl, sessionKey, id, offset, size = 10 }) => {
19
+ try {
20
+ // 拼接 url
21
+ const url = new URL('/anno/list', baseUrl).toString();
22
+
23
+ // 请求
24
+ const responseData = await axios.get(url, {
25
+ params: {
26
+ sessionKey, id, offset, size,
27
+ }
28
+ });
29
+ try {
30
+ var { data: { msg: message, code, data } } = responseData;
31
+ } catch (error) {
32
+ throw new Error(('请求返回格式出错,请检查 mirai-console'));
33
+ }
34
+
35
+ // 抛出 mirai 的异常,到 catch 中处理后再抛出
36
+ if (code in errCodeMap) {
37
+ throw new Error(message);
38
+ }
39
+ return data;
40
+ } catch (error) {
41
+ console.error(`mirai-js: error ${locationStr}`);
42
+ errorHandler(error);
43
+ }
44
+ };
@@ -0,0 +1,44 @@
1
+ const { errCodeMap } = require('../../util/errCode');
2
+ const axios = require('axios');
3
+ const { URL } = require('../../polyfill/URL');
4
+ const errorHandler = require('../../util/errorHandler');
5
+ const path = require('path');
6
+ const { isBrowserEnv } = require('../../util/isBrowserEnv');
7
+ const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
8
+
9
+ /**
10
+ * @description 发布群公告
11
+ * @param {string} baseUrl mirai-api-http server 的地址
12
+ * @param {string} sessionKey 会话标识
13
+ * @param {number} target 群号
14
+ * @param {string} content 公告内容
15
+ * @param {boolean} pinned 是否置顶
16
+ * @returns {Object} { code, msg }
17
+ */
18
+ module.exports = async ({ baseUrl, sessionKey, target, content, pinned }) => {
19
+ try {
20
+ // 拼接 url
21
+ const url = new URL('/anno/publish', baseUrl).toString();
22
+
23
+ // 请求
24
+ const responseData = await axios.post(url, {
25
+ sessionKey, target, content, pinned
26
+ });
27
+ try {
28
+ var {
29
+ data: { msg: message, code }
30
+ } = responseData;
31
+ } catch (error) {
32
+ throw new Error(('请求返回格式出错,请检查 mirai-console'));
33
+ }
34
+ // 抛出 mirai 的异常,到 catch 中处理后再抛出
35
+ if (code in errCodeMap) {
36
+ throw new Error(message);
37
+ }
38
+ return { message, code };
39
+ } catch (error) {
40
+ console.error(`mirai-js: error ${locationStr}`);
41
+ errorHandler(error);
42
+ }
43
+
44
+ };
@@ -0,0 +1,40 @@
1
+ const { errCodeMap } = require('../util/errCode');
2
+ const axios = require('axios');
3
+ const { URL } = require('../polyfill/URL');
4
+ const errorHandler = require('../util/errorHandler');
5
+ const path = require('path');
6
+ const { isBrowserEnv } = require('../util/isBrowserEnv');
7
+ const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
8
+
9
+ /**
10
+ *
11
+ * @description 认证 verifyKey,创建回话,返回一个 sessionKey
12
+ * @param {string} baseUrl mirai-api-http server 的地址
13
+ * @param {string} verifyKey mirai-api-http server 设置的 verifyKey
14
+ * @returns {string} 会话标识 sessionKey
15
+ */
16
+ module.exports = async ({ baseUrl, verifyKey }) => {
17
+ try {
18
+ // 拼接 url
19
+ const url = new URL('/verify', baseUrl).toString();
20
+
21
+ // 请求
22
+ const responseData = await axios.post(url, { verifyKey });
23
+ try {
24
+ var {
25
+ data: { msg: message, code, session: sessionKey },
26
+ } = responseData;
27
+ } catch (error) {
28
+ throw new Error(('请求返回格式出错,请检查 mirai-console'));
29
+ }
30
+
31
+ // 抛出 mirai 的异常,到 catch 中处理后再抛出
32
+ if (code in errCodeMap) {
33
+ throw new Error(message);
34
+ }
35
+ return sessionKey;
36
+ } catch (error) {
37
+ console.error(`mirai-js: error ${locationStr}`);
38
+ errorHandler(error);
39
+ }
40
+ };
@@ -0,0 +1,45 @@
1
+ const { errCodeMap } = require('../../util/errCode');
2
+ const axios = require('axios');
3
+ const { URL } = require('../../polyfill/URL');
4
+ const errorHandler = require('../../util/errorHandler');
5
+ const path = require('path');
6
+ const { isBrowserEnv } = require('../../util/isBrowserEnv');
7
+ const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
8
+
9
+ /**
10
+ * @description 删除群文件
11
+ * @param {string} baseUrl mirai-api-http server 的地址
12
+ * @param {string} sessionKey 会话标识
13
+ * @param {string} id 文件夹id, 空串为根目录
14
+ * @param {string} path 文件夹路径, 文件夹允许重名, 不保证准确, 准确定位使用 id
15
+ * @param {number} group 群号
16
+ * @returns {Object} 结构 { message, code }
17
+ */
18
+ module.exports = async ({ baseUrl, sessionKey, id, path, group }) => {
19
+ try {
20
+ // 拼接 url
21
+ const url = new URL('/file/delete', baseUrl).toString();
22
+
23
+ // 请求
24
+ const responseData = await axios.post(url, {
25
+ sessionKey, id, path, target: group, group,
26
+ });
27
+
28
+ try {
29
+ var {
30
+ data: { msg: message, code }
31
+ } = responseData;
32
+ } catch (error) {
33
+ throw new Error(('请求返回格式出错,请检查 mirai-console'));
34
+ }
35
+ // 抛出 mirai 的异常,到 catch 中处理后再抛出
36
+ if (code in errCodeMap) {
37
+ throw new Error(message);
38
+ }
39
+ return { message, code };
40
+ } catch (error) {
41
+ console.error(`mirai-js: error ${locationStr}`);
42
+ errorHandler(error);
43
+ }
44
+
45
+ };
@@ -0,0 +1,46 @@
1
+ const { errCodeMap } = require('../../util/errCode');
2
+ const axios = require('axios').default;
3
+ const { URL } = require('../../polyfill/URL');
4
+ const errorHandler = require('../../util/errorHandler');
5
+ const path = require('path');
6
+ const { isBrowserEnv } = require('../../util/isBrowserEnv');
7
+ const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
8
+
9
+ /**
10
+ * @description 获取群文件详细信息
11
+ * @param {string} baseUrl mirai-api-http server 的地址
12
+ * @param {string} sessionKey 会话标识
13
+ * @param {string} id 文件夹id, 空串为根目录
14
+ * @param {string} path 文件夹路径, 文件夹允许重名, 不保证准确, 准确定位使用 id
15
+ * @param {number} group 群号
16
+ * @param {boolean} withDownloadInfo 是否携带下载信息,额外请求,无必要不要携带
17
+ * @returns {Object}
18
+ * 结构 { id, name, path, parent, contact, isFile, isDirectory, downloadInfo }
19
+ */
20
+ module.exports = async ({ baseUrl, sessionKey, id, path, group/*, qq 字段保留 */, withDownloadInfo }) => {
21
+ try {
22
+ // 拼接 url
23
+ const url = new URL('/file/info', baseUrl).toString();
24
+
25
+ // 请求
26
+ const responseData = await axios.get(url, {
27
+ params: {
28
+ sessionKey, id, path, target: group, group, withDownloadInfo
29
+ }
30
+ });
31
+ try {
32
+ var { data: { msg: message, code, data } } = responseData;
33
+ } catch (error) {
34
+ throw new Error(('请求返回格式出错,请检查 mirai-console'));
35
+ }
36
+
37
+ // 抛出 mirai 的异常,到 catch 中处理后再抛出
38
+ if (code in errCodeMap) {
39
+ throw new Error(message);
40
+ }
41
+ return data;
42
+ } catch (error) {
43
+ console.error(`mirai-js: error ${locationStr}`);
44
+ errorHandler(error);
45
+ }
46
+ };
@@ -0,0 +1,47 @@
1
+ const { errCodeMap } = require('../../util/errCode');
2
+ const axios = require('axios').default;
3
+ const { URL } = require('../../polyfill/URL');
4
+ const errorHandler = require('../../util/errorHandler');
5
+ const path = require('path');
6
+ const { isBrowserEnv } = require('../../util/isBrowserEnv');
7
+ const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
8
+
9
+ /**
10
+ * @description 获取群文件列表
11
+ * @param {string} baseUrl mirai-api-http server 的地址
12
+ * @param {string} sessionKey 会话标识
13
+ * @param {string} id 文件夹id, 空串为根目录
14
+ * @param {string} path 文件夹路径, 文件夹允许重名, 不保证准确, 准确定位使用 id
15
+ * @param {number} group 群号
16
+ * @param {boolern} withDownloadInfo 是否携带下载信息,额外请求,无必要不要携带
17
+ * @param {number} offset 分页偏移
18
+ * @param {number} size 分页大小
19
+ * @returns {Object[]} 结构 array[...{ id, name, path, parent, contact, isFile, isDirectory, downloadInfo }]
20
+ */
21
+ module.exports = async ({ baseUrl, sessionKey, id, path, group/*, qq 字段保留 */, withDownloadInfo, offset, size }) => {
22
+ try {
23
+ // 拼接 url
24
+ const url = new URL('/file/list', baseUrl).toString();
25
+
26
+ // 请求
27
+ const responseData = await axios.get(url, {
28
+ params: {
29
+ sessionKey, id, path, target: group, group, withDownloadInfo, offset, size
30
+ }
31
+ });
32
+ try {
33
+ var { data: { msg: message, code, data } } = responseData;
34
+ } catch (error) {
35
+ throw new Error(('请求返回格式出错,请检查 mirai-console'));
36
+ }
37
+
38
+ // 抛出 mirai 的异常,到 catch 中处理后再抛出
39
+ if (code in errCodeMap) {
40
+ throw new Error(message);
41
+ }
42
+ return data;
43
+ } catch (error) {
44
+ console.error(`mirai-js: error ${locationStr}`);
45
+ errorHandler(error);
46
+ }
47
+ };
@@ -0,0 +1,45 @@
1
+ const { errCodeMap } = require('../../util/errCode');
2
+ const axios = require('axios');
3
+ const { URL } = require('../../polyfill/URL');
4
+ const errorHandler = require('../../util/errorHandler');
5
+ const path = require('path');
6
+ const { isBrowserEnv } = require('../../util/isBrowserEnv');
7
+ const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
8
+
9
+ /**
10
+ * @description 新建群文件夹
11
+ * @param {string} baseUrl mirai-api-http server 的地址
12
+ * @param {string} sessionKey 会话标识
13
+ * @param {string} id 文件夹id, 空串为根目录
14
+ * @param {string} path 文件夹路径, 文件夹允许重名, 不保证准确, 准确定位使用 id
15
+ * @param {number} group 群号
16
+ * @param {boolern} withDownloadInfo 是否携带下载信息,额外请求,无必要不要携带
17
+ * @returns {Object} 结构 { id, name, path, parent, contact, isFile, isDirectory, downloadInfo }
18
+ */
19
+ module.exports = async ({ baseUrl, sessionKey, id, rename, path, group, withDownloadInfo }) => {
20
+ try {
21
+ // 拼接 url
22
+ const url = new URL('/file/mkdir', baseUrl).toString();
23
+
24
+ // 请求
25
+ const responseData = await axios.post(url, {
26
+ sessionKey, id, rename, path, group, withDownloadInfo
27
+ });
28
+
29
+ try {
30
+ var {
31
+ data: { msg: message, code, data }
32
+ } = responseData;
33
+ } catch (error) {
34
+ throw new Error(('请求返回格式出错,请检查 mirai-console'));
35
+ }
36
+ // 抛出 mirai 的异常,到 catch 中处理后再抛出
37
+ if (code in errCodeMap) {
38
+ throw new Error(message);
39
+ }
40
+ return data;
41
+ } catch (error) {
42
+ console.error(`mirai-js: error ${locationStr}`);
43
+ errorHandler(error);
44
+ }
45
+ };
@@ -0,0 +1,47 @@
1
+ const { errCodeMap } = require('../../util/errCode');
2
+ const axios = require('axios');
3
+ const { URL } = require('../../polyfill/URL');
4
+ const errorHandler = require('../../util/errorHandler');
5
+ const path = require('path');
6
+ const { isBrowserEnv } = require('../../util/isBrowserEnv');
7
+ const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
8
+
9
+ /**
10
+ * @description 移动群文件
11
+ * @param {string} baseUrl mirai-api-http server 的地址
12
+ * @param {string} sessionKey 会话标识
13
+ * @param {string} id 文件夹id, 空串为根目录
14
+ * @param {string} path 文件夹路径, 文件夹允许重名, 不保证准确, 准确定位使用 id
15
+ * @param {number} group 群号
16
+ * @param {string} moveTo 移动目标文件夹id
17
+ * @param {string} moveToPath 移动目标文件夹path
18
+ * @returns {Object} 结构 { message, code }
19
+ */
20
+ module.exports = async ({ baseUrl, sessionKey, id, path, group, moveTo, moveToPath }) => {
21
+ try {
22
+ // 拼接 url
23
+ const url = new URL('/file/move', baseUrl).toString();
24
+
25
+ // 请求
26
+ const responseData = await axios.post(url, {
27
+ sessionKey, id, path, target: group, group, moveTo, moveToPath
28
+ });
29
+
30
+ try {
31
+ var {
32
+ data: { msg: message, code }
33
+ } = responseData;
34
+ } catch (error) {
35
+ throw new Error(('请求返回格式出错,请检查 mirai-console'));
36
+ }
37
+ // 抛出 mirai 的异常,到 catch 中处理后再抛出
38
+ if (code in errCodeMap) {
39
+ throw new Error(message);
40
+ }
41
+ return { message, code };
42
+ } catch (error) {
43
+ console.error(`mirai-js: error ${locationStr}`);
44
+ errorHandler(error);
45
+ }
46
+
47
+ };
@@ -0,0 +1,44 @@
1
+ const { errCodeMap } = require('../../util/errCode');
2
+ const axios = require('axios');
3
+ const { URL } = require('../../polyfill/URL');
4
+ const errorHandler = require('../../util/errorHandler');
5
+ const path = require('path');
6
+ const { isBrowserEnv } = require('../../util/isBrowserEnv');
7
+ const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
8
+
9
+ /**
10
+ * @description 重命名群文件
11
+ * @param {string} baseUrl mirai-api-http server 的地址
12
+ * @param {string} sessionKey 会话标识
13
+ * @param {number} id 文件 id
14
+ * @param {number} group 群号
15
+ * @param {string} rename 重命名
16
+ * @returns {Object} 结构 { message, code }
17
+ */
18
+ module.exports = async ({ baseUrl, sessionKey, id, path, group, renameTo }) => {
19
+ try {
20
+ // 拼接 url
21
+ const url = new URL('/file/rename', baseUrl).toString();
22
+
23
+ // 请求
24
+ const responseData = await axios.post(url, {
25
+ sessionKey, id, path, target: group, group, renameTo
26
+ });
27
+
28
+ try {
29
+ var {
30
+ data: { msg: message, code }
31
+ } = responseData;
32
+ } catch (error) {
33
+ throw new Error(('请求返回格式出错,请检查 mirai-console'));
34
+ }
35
+ // 抛出 mirai 的异常,到 catch 中处理后再抛出
36
+ if (code in errCodeMap) {
37
+ throw new Error(message);
38
+ }
39
+ return { message, code };
40
+ } catch (error) {
41
+ console.error(`mirai-js: error ${locationStr}`);
42
+ errorHandler(error);
43
+ }
44
+ };
@@ -0,0 +1,58 @@
1
+ const { errCodeMap } = require('../../util/errCode');
2
+ const axios = require('axios').default;
3
+ const { URL } = require('../../polyfill/URL');
4
+ const errorHandler = require('../../util/errorHandler');
5
+ const path = require('path');
6
+ const { isBrowserEnv } = require('../../util/isBrowserEnv');
7
+ const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
8
+ const FormData = require('form-data');
9
+
10
+
11
+ /**
12
+ * @description 上传文件至服务器并发送,返回文件 id
13
+ * @param {string} baseUrl mirai-api-http server 的地址
14
+ * @param {string} sessionKey 会话标识
15
+ * @param {string} type "friend" 或 "group",目前仅支持 group
16
+ * @param {string} target 群/好友号
17
+ * @param {string} path 上传目录id
18
+ * @param {Buffer} file 文件二进制数据
19
+ * @returns {string} 文件 id
20
+ */
21
+ module.exports = async ({ baseUrl, sessionKey, type, target, path, file }) => {
22
+ try {
23
+ // 拼接 url
24
+ const targetUrl = new URL('/file/upload', baseUrl).toString();
25
+
26
+ // 构造 fromdata
27
+ const form = new FormData();
28
+ form.append('sessionKey', sessionKey);
29
+ form.append('type', type);
30
+ form.append('target', target);
31
+ form.append('path', path);
32
+ form.append('file', file, { filename: 'payload' });
33
+
34
+ // 请求
35
+ const responseData = await axios.post(targetUrl, form, {
36
+ // formdata.getHeaders 将会指定 content-type,同时给定随
37
+ // 机生成的 boundary,即分隔符,用以分隔多个表单项而不会造成混乱
38
+ headers: form.getHeaders(),
39
+ });
40
+
41
+ try {
42
+ var {
43
+ data: { msg: message, code, id }
44
+ } = responseData;
45
+ } catch (error) {
46
+ throw new Error(('请求返回格式出错,请检查 mirai-console'));
47
+ }
48
+
49
+ // 抛出 mirai 的异常,到 catch 中处理后再抛出
50
+ if (code in errCodeMap) {
51
+ throw new Error(message);
52
+ }
53
+ return id;
54
+ } catch (error) {
55
+ console.error(`mirai-js: error ${locationStr}`);
56
+ errorHandler(error);
57
+ }
58
+ };
@@ -0,0 +1,37 @@
1
+ const { errCodeMap } = require('../util/errCode');
2
+ const axios = require('axios').default;
3
+ const { URL } = require('../polyfill/URL');
4
+ const errorHandler = require('../util/errorHandler');
5
+ const path = require('path');
6
+ const { isBrowserEnv } = require('../util/isBrowserEnv');
7
+ const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
8
+
9
+ /**
10
+ * @description 获取好友列表
11
+ * @param {string} baseUrl mirai-api-http server 的地址
12
+ * @param {string} sessionKey 会话标识
13
+ * @returns {Object[]} 结构 array[...{ id, nickname, remark }]
14
+ */
15
+ module.exports = async ({ baseUrl, sessionKey }) => {
16
+ try {
17
+ // 拼接 url
18
+ const url = new URL('/friendList', baseUrl).toString();
19
+
20
+ // 请求
21
+ const responseData = await axios.get(url, { params: { sessionKey } });
22
+ try {
23
+ var { data: { msg: message, code, data } } = responseData;
24
+ } catch (error) {
25
+ throw new Error(('请求返回格式出错,请检查 mirai-console'));
26
+ }
27
+
28
+ // 抛出 mirai 的异常,到 catch 中处理后再抛出
29
+ if (code in errCodeMap) {
30
+ throw new Error(message);
31
+ }
32
+ return data;
33
+ } catch (error) {
34
+ console.error(`mirai-js: error ${locationStr}`);
35
+ errorHandler(error);
36
+ }
37
+ };
@@ -0,0 +1,37 @@
1
+ const { errCodeMap } = require('../util/errCode');
2
+ const axios = require('axios').default;
3
+ const { URL } = require('../polyfill/URL');
4
+ const errorHandler = require('../util/errorHandler');
5
+ const path = require('path');
6
+ const { isBrowserEnv } = require('../util/isBrowserEnv');
7
+ const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
8
+
9
+ /**
10
+ * @description 获取群配置
11
+ * @param {string} baseUrl mirai-api-http server 的地址
12
+ * @param {string} sessionKey 会话标识
13
+ * @param {string} target 群号
14
+ * @returns {Object}
15
+ */
16
+ module.exports = async ({ baseUrl, sessionKey, target }) => {
17
+ try {
18
+ // 拼接 url
19
+ const url = new URL('/groupConfig', baseUrl).toString();
20
+
21
+ // 请求
22
+ const responseData = await axios.get(url, { params: { sessionKey, target } });
23
+ try {
24
+ var { data, data: { msg: message, code } } = responseData;
25
+ } catch (error) {
26
+ throw new Error(('请求返回格式出错,请检查 mirai-console'));
27
+ }
28
+ // 抛出 mirai 的异常,到 catch 中处理后再抛出
29
+ if (code in errCodeMap) {
30
+ throw new Error(message);
31
+ }
32
+ return data;
33
+ } catch (error) {
34
+ console.error(`mirai-js: error ${locationStr}`);
35
+ errorHandler(error);
36
+ }
37
+ };
@@ -0,0 +1,37 @@
1
+ const { errCodeMap } = require('../util/errCode');
2
+ const axios = require('axios').default;
3
+ const { URL } = require('../polyfill/URL');
4
+ const errorHandler = require('../util/errorHandler');
5
+ const path = require('path');
6
+ const { isBrowserEnv } = require('../util/isBrowserEnv');
7
+ const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
8
+
9
+ /**
10
+ * @description 获取群列表
11
+ * @param {string} baseUrl mirai-api-http server 的地址
12
+ * @param {string} sessionKey 会话标识
13
+ * @returns {Object[]} 结构 array[...{ id, name, permission }]
14
+ */
15
+ module.exports = async ({ baseUrl, sessionKey }) => {
16
+ try {
17
+ // 拼接 url
18
+ const url = new URL('/groupList', baseUrl).toString();
19
+
20
+ // 请求
21
+ const responseData = await axios.get(url, { params: { sessionKey } });
22
+ try {
23
+ var { data, data: { msg: message, code } } = responseData;
24
+ } catch (error) {
25
+ throw new Error(('请求返回格式出错,请检查 mirai-console'));
26
+ }
27
+
28
+ // 抛出 mirai 的异常,到 catch 中处理后再抛出
29
+ if (code in errCodeMap) {
30
+ throw new Error(message);
31
+ }
32
+ return data;
33
+ } catch (error) {
34
+ console.error(`mirai-js: error ${locationStr}`);
35
+ errorHandler(error);
36
+ }
37
+ };
@@ -0,0 +1,41 @@
1
+ const { errCodeMap } = require('../util/errCode');
2
+ const axios = require('axios');
3
+ const { URL } = require('../polyfill/URL');
4
+ const errorHandler = require('../util/errorHandler');
5
+ const path = require('path');
6
+ const { isBrowserEnv } = require('../util/isBrowserEnv');
7
+ const locationStr = !isBrowserEnv() ? `core.${path.basename(__filename, path.extname(__filename))}` : 'borwser';
8
+
9
+ /**
10
+ * @description 获取群成员信息
11
+ * @param {string} baseUrl mirai-api-http server 的地址
12
+ * @param {string} sessionKey 会话标识
13
+ * @param {number} target 群成员所在群号
14
+ * @param {number} memberId 群成员的 qq 号
15
+ * @returns {Object}
16
+ */
17
+ module.exports = async ({ baseUrl, sessionKey, target, memberId }) => {
18
+ try {
19
+ // 拼接 url
20
+ const url = new URL('/memberInfo', baseUrl).toString();
21
+
22
+ // 请求
23
+ const responseData = await axios.get(url, { params: { sessionKey, target, memberId } });
24
+ try {
25
+ var {
26
+ data, data: { msg: message, code }
27
+ } = responseData;
28
+ } catch (error) {
29
+ throw new Error(('请求返回格式出错,请检查 mirai-console'));
30
+ }
31
+ // 抛出 mirai 的异常,到 catch 中处理后再抛出
32
+ if (code in errCodeMap) {
33
+ throw new Error(message);
34
+ }
35
+ return data;
36
+ } catch (error) {
37
+ console.error(`mirai-js: error ${locationStr}`);
38
+ errorHandler(error);
39
+ }
40
+
41
+ };