mirai-js 2.8.0-0 → 2.8.0-1

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.
@@ -1,4 +1,5 @@
1
1
  import { Bot } from './Bot';
2
+ import { ArrayToValuesUnion } from './typeHelpers';
2
3
 
3
4
  /**
4
5
  * 消息链的元素,是 mirai-api-http 接口需要的原始类型
@@ -154,7 +155,7 @@ interface Friend {
154
155
  remark: string;
155
156
  }
156
157
 
157
- interface EventTypes {
158
+ interface EventEntityMap {
158
159
  error: {
159
160
  code: number;
160
161
  } & EventBaseType,
@@ -352,10 +353,9 @@ interface EventTypes {
352
353
  nick: string,
353
354
  message: string
354
355
  } & RequestEventExtendType & EventBaseType;
355
- AnyEvent: EventBaseType;
356
356
  }
357
357
 
358
- type EventType = keyof EventTypes;
358
+ type EventType = keyof EventEntityMap;
359
359
 
360
360
  type Awaitable<T> = T | PromiseLike<T>;
361
361
 
@@ -366,7 +366,8 @@ type GroupPermission = 'OWNER' | 'ADMINISTRATOR' | 'MEMBER';
366
366
  type SEX = 'UNKNOWN' | 'MALE' | 'FEMALE';
367
367
 
368
368
  // 消息处理器
369
- type Processor<U extends keyof EventTypes> = (data: EventTypes[U]) => Awaitable<void | any>
369
+ type Processor<U extends EventType[] | 'UnknownEventType' = 'UnknownEventType'> =
370
+ (data: U extends 'UnknownEventType' ? EventBaseType : EventEntityMap[ArrayToValuesUnion<U extends 'UnknownEventType' ? never : U>]) => Awaitable<void | any>;
370
371
 
371
372
  // QQ 自带表情
372
373
  type FaceType =
@@ -433,7 +434,7 @@ export {
433
434
  // 图片 id 语音 id 消息 id
434
435
  ImageId, VoiceId, MessageId,
435
436
  // 事件类型 群成员权限 性别
436
- EventType, EventTypes, GroupPermission, SEX,
437
+ EventType, EventEntityMap, GroupPermission, SEX,
437
438
  // QQ 自带表情
438
439
  FaceType,
439
440
  Processor,
@@ -3,7 +3,7 @@ import {
3
3
  ImageId, VoiceId, MessageId,
4
4
 
5
5
  // 事件类型 群成员权限 性别
6
- EventType, EventTypes, GroupPermission, SEX,
6
+ EventType, EventEntityMap, GroupPermission, SEX,
7
7
 
8
8
  // 接口 原始消息类型 事件处理器类型
9
9
  MessageChainGetable, BotConfigGetable, MessageType,
@@ -93,8 +93,8 @@ export class Bot implements BotConfigGetable {
93
93
  * @param callback 必选,回调函数
94
94
  * @returns handle 事件处理器的标识,用于移除该处理器
95
95
  */
96
- on<U extends keyof EventTypes>(eventType: U, callback: Processor<U>): number;
97
- on<U extends (keyof EventTypes)[]>(eventType: U, callback: Processor<U[number]>): number[];
96
+ on<U extends EventType>(eventType: U, callback: Processor<[U]>): number;
97
+ on<U extends EventType[]>(eventType: U, callback: Processor<U>): number[];
98
98
 
99
99
  /**
100
100
  * @description 添加一个一次性事件处理器,回调一次后自动移除
@@ -104,8 +104,8 @@ export class Bot implements BotConfigGetable {
104
104
  * 当为 true 时,只有开发者的处理器结束后才会移除该处理器
105
105
  * 当为 false 时,即使消息被拦截,也会移除该处理器
106
106
  */
107
- one<U extends keyof EventTypes>(eventType: U, callback: Processor<U>, strict: boolean): void;
108
- one<U extends (keyof EventTypes)[]>(eventType: U, callback: Processor<U[number]>, strict: boolean): void;
107
+ one<U extends EventType>(eventType: U, callback: Processor<[U]>, strict: boolean): void;
108
+ one<U extends EventType[]>(eventType: U, callback: Processor<U>, strict: boolean): void;
109
109
 
110
110
  /**
111
111
  * @description 移除一个事件处理器
@@ -323,7 +323,7 @@ declare namespace Bot {
323
323
  type EventProcessorMap = {
324
324
  // 索引不能使用联合类型
325
325
  [eventType in EventType]: {
326
- [handler: number]: (data: EventTypes[eventType]) => Awaitable<void | any>;
326
+ [handler: number]: (data: EventEntityMap[eventType]) => Awaitable<void | any>;
327
327
  };
328
328
  }
329
329
 
@@ -128,12 +128,12 @@ export class Middleware {
128
128
  * @description 生成一个带有中间件的事件处理器
129
129
  * @param callback 事件处理器
130
130
  */
131
- done(callback: Processor<'AnyEvent'>): Processor<'AnyEvent'>;
131
+ done(callback: Processor): Processor;
132
132
 
133
133
  }
134
134
 
135
135
  declare namespace Middleware {
136
- type NextMiddlewareCaller = () => NextMiddlewareCaller | Processor<'AnyEvent'>;
136
+ type NextMiddlewareCaller = () => NextMiddlewareCaller | Processor;
137
137
 
138
138
  interface GroupMemberMap {
139
139
  [group: number]: number[];
@@ -9,5 +9,5 @@ export class Waiter {
9
9
  * @param eventType 事件类型
10
10
  * @param callback 处理器,其返回值将被 resolve,传递到外部
11
11
  */
12
- wait(eventType: EventType, callback: Processor<'AnyEvent'>): Promise<any>;
12
+ wait(eventType: EventType, callback: Processor): Promise<any>;
13
13
  }
@@ -1,6 +1,8 @@
1
- import { Bot as BotType } from './Bot';
2
- import { Message as MessageType } from './Message';
3
- import { Middleware as MiddlewareType } from './Middleware';
1
+ import { Bot, Bot as BotType } from './Bot';
2
+ import { Message, Message as MessageType } from './Message';
3
+ import { Middleware, Middleware as MiddlewareType } from './Middleware';
4
+
5
+ export { Bot, Message, Middleware };
4
6
  declare module 'mirai-js' {
5
7
  export const Bot: typeof BotType;
6
8
  export const Message: typeof MessageType;
@@ -0,0 +1,2 @@
1
+ // 将数组转换为
2
+ export type ArrayToValuesUnion<T extends string[]> = T extends (infer E)[] ? E : never;
package/index.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { Bot } from './src';
2
+ const bot = new Bot();
3
+ bot.on(['FriendMessage', 'NewFriendRequestEvent'], e => {
4
+
5
+
6
+
7
+ })
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "mirai-js",
3
- "version": "2.8.0-0",
3
+ "version": "2.8.0-1",
4
4
  "description": "QQ robot development framework based on Mirai-api-http.",
5
5
  "main": "dist/node/index.js",
6
6
  "scripts": {
7
7
  "lint": "eslint --fix .",
8
- "build": "tsc --noEmit src/*.d.ts && webpack && babel src --out-dir dist/node --copy-files",
8
+ "build": "rm -rf dist && tsc --noEmit src/*.d.ts && webpack && babel src --out-dir dist/node --copy-files",
9
9
  "prepare": "husky install"
10
10
  },
11
11
  "lint-staged": {
package/src/BaseType.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Bot } from './Bot';
2
+ import { ArrayToValuesUnion } from './typeHelpers';
2
3
 
3
4
  /**
4
5
  * 消息链的元素,是 mirai-api-http 接口需要的原始类型
@@ -154,7 +155,7 @@ interface Friend {
154
155
  remark: string;
155
156
  }
156
157
 
157
- interface EventTypes {
158
+ interface EventEntityMap {
158
159
  error: {
159
160
  code: number;
160
161
  } & EventBaseType,
@@ -352,10 +353,9 @@ interface EventTypes {
352
353
  nick: string,
353
354
  message: string
354
355
  } & RequestEventExtendType & EventBaseType;
355
- AnyEvent: EventBaseType;
356
356
  }
357
357
 
358
- type EventType = keyof EventTypes;
358
+ type EventType = keyof EventEntityMap;
359
359
 
360
360
  type Awaitable<T> = T | PromiseLike<T>;
361
361
 
@@ -366,7 +366,8 @@ type GroupPermission = 'OWNER' | 'ADMINISTRATOR' | 'MEMBER';
366
366
  type SEX = 'UNKNOWN' | 'MALE' | 'FEMALE';
367
367
 
368
368
  // 消息处理器
369
- type Processor<U extends keyof EventTypes> = (data: EventTypes[U]) => Awaitable<void | any>
369
+ type Processor<U extends EventType[] | 'UnknownEventType' = 'UnknownEventType'> =
370
+ (data: U extends 'UnknownEventType' ? EventBaseType : EventEntityMap[ArrayToValuesUnion<U extends 'UnknownEventType' ? never : U>]) => Awaitable<void | any>;
370
371
 
371
372
  // QQ 自带表情
372
373
  type FaceType =
@@ -433,7 +434,7 @@ export {
433
434
  // 图片 id 语音 id 消息 id
434
435
  ImageId, VoiceId, MessageId,
435
436
  // 事件类型 群成员权限 性别
436
- EventType, EventTypes, GroupPermission, SEX,
437
+ EventType, EventEntityMap, GroupPermission, SEX,
437
438
  // QQ 自带表情
438
439
  FaceType,
439
440
  Processor,
package/src/Bot.d.ts CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  ImageId, VoiceId, MessageId,
4
4
 
5
5
  // 事件类型 群成员权限 性别
6
- EventType, EventTypes, GroupPermission, SEX,
6
+ EventType, EventEntityMap, GroupPermission, SEX,
7
7
 
8
8
  // 接口 原始消息类型 事件处理器类型
9
9
  MessageChainGetable, BotConfigGetable, MessageType,
@@ -93,8 +93,8 @@ export class Bot implements BotConfigGetable {
93
93
  * @param callback 必选,回调函数
94
94
  * @returns handle 事件处理器的标识,用于移除该处理器
95
95
  */
96
- on<U extends keyof EventTypes>(eventType: U, callback: Processor<U>): number;
97
- on<U extends (keyof EventTypes)[]>(eventType: U, callback: Processor<U[number]>): number[];
96
+ on<U extends EventType>(eventType: U, callback: Processor<[U]>): number;
97
+ on<U extends EventType[]>(eventType: U, callback: Processor<U>): number[];
98
98
 
99
99
  /**
100
100
  * @description 添加一个一次性事件处理器,回调一次后自动移除
@@ -104,8 +104,8 @@ export class Bot implements BotConfigGetable {
104
104
  * 当为 true 时,只有开发者的处理器结束后才会移除该处理器
105
105
  * 当为 false 时,即使消息被拦截,也会移除该处理器
106
106
  */
107
- one<U extends keyof EventTypes>(eventType: U, callback: Processor<U>, strict: boolean): void;
108
- one<U extends (keyof EventTypes)[]>(eventType: U, callback: Processor<U[number]>, strict: boolean): void;
107
+ one<U extends EventType>(eventType: U, callback: Processor<[U]>, strict: boolean): void;
108
+ one<U extends EventType[]>(eventType: U, callback: Processor<U>, strict: boolean): void;
109
109
 
110
110
  /**
111
111
  * @description 移除一个事件处理器
@@ -323,7 +323,7 @@ declare namespace Bot {
323
323
  type EventProcessorMap = {
324
324
  // 索引不能使用联合类型
325
325
  [eventType in EventType]: {
326
- [handler: number]: (data: EventTypes[eventType]) => Awaitable<void | any>;
326
+ [handler: number]: (data: EventEntityMap[eventType]) => Awaitable<void | any>;
327
327
  };
328
328
  }
329
329
 
@@ -128,12 +128,12 @@ export class Middleware {
128
128
  * @description 生成一个带有中间件的事件处理器
129
129
  * @param callback 事件处理器
130
130
  */
131
- done(callback: Processor<'AnyEvent'>): Processor<'AnyEvent'>;
131
+ done(callback: Processor): Processor;
132
132
 
133
133
  }
134
134
 
135
135
  declare namespace Middleware {
136
- type NextMiddlewareCaller = () => NextMiddlewareCaller | Processor<'AnyEvent'>;
136
+ type NextMiddlewareCaller = () => NextMiddlewareCaller | Processor;
137
137
 
138
138
  interface GroupMemberMap {
139
139
  [group: number]: number[];
package/src/Waiter.d.ts CHANGED
@@ -9,5 +9,5 @@ export class Waiter {
9
9
  * @param eventType 事件类型
10
10
  * @param callback 处理器,其返回值将被 resolve,传递到外部
11
11
  */
12
- wait(eventType: EventType, callback: Processor<'AnyEvent'>): Promise<any>;
12
+ wait(eventType: EventType, callback: Processor): Promise<any>;
13
13
  }
package/src/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
- import { Bot as BotType } from './Bot';
2
- import { Message as MessageType } from './Message';
3
- import { Middleware as MiddlewareType } from './Middleware';
1
+ import { Bot, Bot as BotType } from './Bot';
2
+ import { Message, Message as MessageType } from './Message';
3
+ import { Middleware, Middleware as MiddlewareType } from './Middleware';
4
+
5
+ export { Bot, Message, Middleware };
4
6
  declare module 'mirai-js' {
5
7
  export const Bot: typeof BotType;
6
8
  export const Message: typeof MessageType;
@@ -0,0 +1,2 @@
1
+ // 将数组转换为
2
+ export type ArrayToValuesUnion<T extends string[]> = T extends (infer E)[] ? E : never;
@@ -1,15 +0,0 @@
1
- import { ForwardNodeGetable, ForwardNodeType, MessageId } from './BaseType';
2
-
3
- // Bot.sendForward 的 nodeList 参数是一个 ForwardNode 类型的实例
4
- // 方法内部通过 ForwardNodeType 接口的 getForwardNode 方法拿到消息链
5
- export class ForwardNode implements ForwardNodeGetable {
6
- private nodeList: ForwardNodeType[];
7
-
8
- // 自行添加一个消息节点
9
- addForwardNode(nodeList: ForwardNodeType): ForwardNode;
10
- // 使用 MessageId 添加一个消息节点
11
- addForwardNodeById(ID: MessageId): ForwardNode;
12
-
13
- // implements ForwardNodeGetable
14
- getForwardNode(): ForwardNodeType[];
15
- }
@@ -1,70 +0,0 @@
1
- "use strict";
2
-
3
- // 用于与 Bot.sendForward 耦合的接口
4
- const {
5
- ForwardNodeGetable,
6
- MessageChainGetable
7
- } = require('./interface');
8
-
9
- class ForwardNode_Data {
10
- constructor({
11
- senderId,
12
- time,
13
- senderName,
14
- messageChain
15
- }) {
16
- this.senderId = senderId;
17
- this.time = time;
18
- this.senderName = senderName;
19
- this.messageChain = messageChain;
20
- }
21
-
22
- }
23
-
24
- class ForwardNode_Id {
25
- constructor({
26
- messageId
27
- }) {
28
- this.messageId = messageId;
29
- }
30
-
31
- }
32
- /**
33
- * @description 本框架抽象的消息节点
34
- */
35
-
36
-
37
- class ForwardNode extends ForwardNodeGetable {
38
- constructor() {
39
- super();
40
- this.nodeList = [];
41
- } // 手动添加节点
42
-
43
-
44
- addForwardNode(nodeList) {
45
- if (nodeList.messageChain instanceof MessageChainGetable) {
46
- nodeList.messageChain = nodeList.messageChain.getMessageChain();
47
- }
48
-
49
- this.nodeList.push(new ForwardNode_Data(nodeList));
50
- return this;
51
- } // 使用 messageId 添加节点
52
-
53
-
54
- addForwardNodeById(messageId) {
55
- this.nodeList.push(new ForwardNode_Id({
56
- messageId
57
- }));
58
- return this;
59
- } // get 原接口格式的信息链
60
-
61
-
62
- getForwardNode() {
63
- return this.nodeList;
64
- }
65
-
66
- }
67
-
68
- module.exports = {
69
- ForwardNode
70
- };
@@ -1,77 +0,0 @@
1
- "use strict";
2
-
3
- const {
4
- errCodeMap
5
- } = require('../util/errCode');
6
-
7
- const axios = require('axios').default;
8
-
9
- let URL;
10
-
11
- if (!process.browser) {
12
- ({
13
- URL
14
- } = require('url'));
15
- } else {
16
- URL = window.URL;
17
- }
18
-
19
- const errorHandler = require('../util/errorHandler');
20
-
21
- const path = require('path');
22
-
23
- const locationStr = `core.${path.basename(__filename, path.extname(__filename))}`;
24
- /**
25
- * @description 获取群文件详细信息
26
- * @param {string} baseUrl mirai-api-http server 的地址
27
- * @param {string} sessionKey 会话标识
28
- * @param {number} target 群号
29
- * @param {string} id 文件 id
30
- * @returns {Object}
31
- * 结构 {
32
- * id, name, path, length, downloadTimes, uploaderId,
33
- * uploadTime, lastModifyTime, downloadUrl, sha1, md5
34
- * }
35
- */
36
-
37
- module.exports = async ({
38
- baseUrl,
39
- sessionKey,
40
- target,
41
- id
42
- }) => {
43
- try {
44
- // 拼接 url
45
- const url = new URL('/groupFileInfo', baseUrl).toString(); // 请求
46
-
47
- const responseData = await axios.get(url, {
48
- params: {
49
- sessionKey,
50
- target,
51
- id
52
- }
53
- });
54
-
55
- try {
56
- var {
57
- data,
58
- data: {
59
- msg: message,
60
- code
61
- }
62
- } = responseData;
63
- } catch (error) {
64
- throw new Error('请求返回格式出错,请检查 mirai-console');
65
- } // 抛出 mirai 的异常,到 catch 中处理后再抛出
66
-
67
-
68
- if (code in errCodeMap) {
69
- throw new Error(message);
70
- }
71
-
72
- return data;
73
- } catch (error) {
74
- console.error(`mirai-js: error ${locationStr}`);
75
- errorHandler(error);
76
- }
77
- };
@@ -1,73 +0,0 @@
1
- "use strict";
2
-
3
- const {
4
- errCodeMap
5
- } = require('../util/errCode');
6
-
7
- const axios = require('axios').default;
8
-
9
- let URL;
10
-
11
- if (!process.browser) {
12
- ({
13
- URL
14
- } = require('url'));
15
- } else {
16
- URL = window.URL;
17
- }
18
-
19
- const errorHandler = require('../util/errorHandler');
20
-
21
- const path = require('path');
22
-
23
- const locationStr = `core.${path.basename(__filename, path.extname(__filename))}`;
24
- /**
25
- * @description 获取群文件列表
26
- * @param {string} baseUrl mirai-api-http server 的地址
27
- * @param {string} sessionKey 会话标识
28
- * @param {number} target 群号
29
- * @param {string} dir 可选,查询目录,默认为根目录
30
- * @returns {Object[]} 结构 array[...{ id, name, path, isFile }]
31
- */
32
-
33
- module.exports = async ({
34
- baseUrl,
35
- sessionKey,
36
- target,
37
- dir
38
- }) => {
39
- try {
40
- // 拼接 url
41
- const url = new URL('/groupFileList', baseUrl).toString(); // 请求
42
-
43
- const responseData = await axios.get(url, {
44
- params: {
45
- sessionKey,
46
- target,
47
- dir
48
- }
49
- });
50
-
51
- try {
52
- var {
53
- data,
54
- data: {
55
- msg: message,
56
- code
57
- }
58
- } = responseData;
59
- } catch (error) {
60
- throw new Error('请求返回格式出错,请检查 mirai-console');
61
- } // 抛出 mirai 的异常,到 catch 中处理后再抛出
62
-
63
-
64
- if (code in errCodeMap) {
65
- throw new Error(message);
66
- }
67
-
68
- return data;
69
- } catch (error) {
70
- console.error(`mirai-js: error ${locationStr}`);
71
- errorHandler(error);
72
- }
73
- };
@@ -1,73 +0,0 @@
1
- "use strict";
2
-
3
- const {
4
- errCodeMap
5
- } = require('../util/errCode');
6
-
7
- const axios = require('axios');
8
-
9
- let URL;
10
-
11
- if (!process.browser) {
12
- ({
13
- URL
14
- } = require('url'));
15
- } else {
16
- URL = window.URL;
17
- }
18
-
19
- const errorHandler = require('../util/errorHandler');
20
-
21
- const path = require('path');
22
-
23
- const locationStr = `core.${path.basename(__filename, path.extname(__filename))}`;
24
- /**
25
- * @description 删除群文件
26
- * @param {string} baseUrl mirai-api-http server 的地址
27
- * @param {string} sessionKey 会话标识
28
- * @param {number} target 群号
29
- * @param {number} id 文件 id
30
- * @returns {Object} 结构 { message, code }
31
- */
32
-
33
- module.exports = async ({
34
- baseUrl,
35
- sessionKey,
36
- target,
37
- id
38
- }) => {
39
- try {
40
- // 拼接 url
41
- const url = new URL('/groupFileDelete', baseUrl).toString(); // 请求
42
-
43
- const responseData = await axios.post(url, {
44
- sessionKey,
45
- target,
46
- id
47
- });
48
-
49
- try {
50
- var {
51
- data: {
52
- msg: message,
53
- code
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 {
66
- message,
67
- code
68
- };
69
- } catch (error) {
70
- console.error(`mirai-js: error ${locationStr}`);
71
- errorHandler(error);
72
- }
73
- };
@@ -1,76 +0,0 @@
1
- "use strict";
2
-
3
- const {
4
- errCodeMap
5
- } = require('../util/errCode');
6
-
7
- const axios = require('axios');
8
-
9
- let URL;
10
-
11
- if (!process.browser) {
12
- ({
13
- URL
14
- } = require('url'));
15
- } else {
16
- URL = window.URL;
17
- }
18
-
19
- const errorHandler = require('../util/errorHandler');
20
-
21
- const path = require('path');
22
-
23
- const locationStr = `core.${path.basename(__filename, path.extname(__filename))}`;
24
- /**
25
- * @description 移动群文件
26
- * @param {string} baseUrl mirai-api-http server 的地址
27
- * @param {string} sessionKey 会话标识
28
- * @param {number} target 群号
29
- * @param {number} id 文件 id
30
- * @param {string} movePath 目标 path
31
- * @returns {Object} 结构 { message, code }
32
- */
33
-
34
- module.exports = async ({
35
- baseUrl,
36
- sessionKey,
37
- target,
38
- id,
39
- movePath
40
- }) => {
41
- try {
42
- // 拼接 url
43
- const url = new URL('/groupFileMove', baseUrl).toString(); // 请求
44
-
45
- const responseData = await axios.post(url, {
46
- sessionKey,
47
- target,
48
- id,
49
- movePath
50
- });
51
-
52
- try {
53
- var {
54
- data: {
55
- msg: message,
56
- code
57
- }
58
- } = responseData;
59
- } catch (error) {
60
- throw new Error('请求返回格式出错,请检查 mirai-console');
61
- } // 抛出 mirai 的异常,到 catch 中处理后再抛出
62
-
63
-
64
- if (code in errCodeMap) {
65
- throw new Error(message);
66
- }
67
-
68
- return {
69
- message,
70
- code
71
- };
72
- } catch (error) {
73
- console.error(`mirai-js: error ${locationStr}`);
74
- errorHandler(error);
75
- }
76
- };
@@ -1,76 +0,0 @@
1
- "use strict";
2
-
3
- const {
4
- errCodeMap
5
- } = require('../util/errCode');
6
-
7
- const axios = require('axios');
8
-
9
- let URL;
10
-
11
- if (!process.browser) {
12
- ({
13
- URL
14
- } = require('url'));
15
- } else {
16
- URL = window.URL;
17
- }
18
-
19
- const errorHandler = require('../util/errorHandler');
20
-
21
- const path = require('path');
22
-
23
- const locationStr = `core.${path.basename(__filename, path.extname(__filename))}`;
24
- /**
25
- * @description 重命名群文件
26
- * @param {string} baseUrl mirai-api-http server 的地址
27
- * @param {string} sessionKey 会话标识
28
- * @param {number} target 群号
29
- * @param {number} id 文件 id
30
- * @param {string} rename 重命名
31
- * @returns {Object} 结构 { message, code }
32
- */
33
-
34
- module.exports = async ({
35
- baseUrl,
36
- sessionKey,
37
- target,
38
- id,
39
- rename
40
- }) => {
41
- try {
42
- // 拼接 url
43
- const url = new URL('/groupFileRename', baseUrl).toString(); // 请求
44
-
45
- const responseData = await axios.post(url, {
46
- sessionKey,
47
- target,
48
- id,
49
- rename
50
- });
51
-
52
- try {
53
- var {
54
- data: {
55
- msg: message,
56
- code
57
- }
58
- } = responseData;
59
- } catch (error) {
60
- throw new Error('请求返回格式出错,请检查 mirai-console');
61
- } // 抛出 mirai 的异常,到 catch 中处理后再抛出
62
-
63
-
64
- if (code in errCodeMap) {
65
- throw new Error(message);
66
- }
67
-
68
- return {
69
- message,
70
- code
71
- };
72
- } catch (error) {
73
- console.error(`mirai-js: error ${locationStr}`);
74
- errorHandler(error);
75
- }
76
- };
@@ -1,68 +0,0 @@
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 向 qq 好友发送消息
20
- * @param {string} baseUrl mirai-api-http server 的地址
21
- * @param {string} sessionKey 会话标识
22
- * @param {number} target 目标好友 qq 号
23
- * @param {number} quote 消息引用,使用发送时返回的 messageId
24
- * @param {MessageType[]} messageChain 消息链,MessageType 数组
25
- * @returns {Object} 结构 { message, code, messageId }
26
- */
27
-
28
- module.exports = async ({
29
- baseUrl,
30
- sessionKey,
31
- target,
32
- quote,
33
- messageChain
34
- }) => {
35
- try {
36
- // 拼接 url
37
- const url = new URL('/sendFriendMessage', baseUrl).toString(); // 请求
38
-
39
- const responseData = await axios.post(url, {
40
- sessionKey,
41
- target,
42
- quote,
43
- messageChain
44
- });
45
-
46
- try {
47
- var {
48
- data: {
49
- msg: message,
50
- code,
51
- messageId
52
- }
53
- } = responseData;
54
- } catch (error) {
55
- throw new Error('请求返回格式出错,请检查 mirai-console');
56
- } // 抛出 mirai 的异常,到 catch 中处理后再抛出
57
-
58
-
59
- if (code in errCodeMap) {
60
- throw new Error(message);
61
- }
62
-
63
- return messageId;
64
- } catch (error) {
65
- console.error(`mirai-js: error ${locationStr}`);
66
- errorHandler(error);
67
- }
68
- };
@@ -1,87 +0,0 @@
1
- "use strict";
2
-
3
- const {
4
- errCodeMap
5
- } = require('../util/errCode');
6
-
7
- const axios = require('axios').default;
8
-
9
- let URL;
10
-
11
- if (!process.browser) {
12
- ({
13
- URL
14
- } = require('url'));
15
- } else {
16
- URL = window.URL;
17
- }
18
-
19
- const errorHandler = require('../util/errorHandler');
20
-
21
- const path = require('path');
22
-
23
- const locationStr = `core.${path.basename(__filename, path.extname(__filename))}`;
24
-
25
- const FormData = require('form-data');
26
- /**
27
- * @description 上传文件至服务器并发送,返回文件 id
28
- * @param {string} baseUrl mirai-api-http server 的地址
29
- * @param {string} sessionKey 会话标识
30
- * @param {string} type "friend" 或 "group",目前仅支持 group
31
- * @param {string} target 群/好友号
32
- * @param {string} path 上传目录
33
- * @param {Buffer} file 文件二进制数据
34
- * @returns {string} 文件 id
35
- */
36
-
37
-
38
- module.exports = async ({
39
- baseUrl,
40
- sessionKey,
41
- type,
42
- target,
43
- path,
44
- file
45
- }) => {
46
- try {
47
- // 拼接 url
48
- const targetUrl = new URL('/uploadFileAndSend', baseUrl).toString(); // 构造 fromdata
49
-
50
- const form = new FormData();
51
- form.append('sessionKey', sessionKey);
52
- form.append('type', type);
53
- form.append('target', target);
54
- form.append('path', path);
55
- form.append('file', file, {
56
- filename: 'payload'
57
- }); // 请求
58
-
59
- const responseData = await axios.post(targetUrl, form, {
60
- // formdata.getHeaders 将会指定 content-type,同时给定随
61
- // 机生成的 boundary,即分隔符,用以分隔多个表单项而不会造成混乱
62
- headers: form.getHeaders()
63
- });
64
-
65
- try {
66
- var {
67
- data: {
68
- msg: message,
69
- code,
70
- id
71
- }
72
- } = responseData;
73
- } catch (error) {
74
- throw new Error('请求返回格式出错,请检查 mirai-console');
75
- } // 抛出 mirai 的异常,到 catch 中处理后再抛出
76
-
77
-
78
- if (code in errCodeMap) {
79
- throw new Error(message);
80
- }
81
-
82
- return id;
83
- } catch (error) {
84
- console.error(`mirai-js: error ${locationStr}`);
85
- errorHandler(error);
86
- }
87
- };