mirai-js 2.8.0-0 → 2.8.0-1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- };