mirai-js 2.8.5 → 2.8.7
Sign up to get free protection for your applications and to get access to all the features.
- package/.fleet/run.json +5 -0
- package/dist/browser/mirai-js.js +1 -1
- package/dist/node/Bot.d.ts +2 -1
- package/dist/node/Bot.js +20 -6
- package/dist/node/borwserEntry.js +1 -1
- package/dist/node/core/recall.js +7 -1
- package/package.json +1 -1
- package/src/Bot.d.ts +2 -1
- package/src/Bot.js +10 -3
- package/src/borwserEntry.js +1 -1
- package/src/core/recall.js +7 -3
- package/1.mp3 +0 -0
- package/demo.ts +0 -29
- package/dist/node/lib/index.ts +0 -0
- package/index.ts +0 -38
- package/src/lib/index.ts +0 -0
- package/srcold/BaseType.d.ts +0 -419
- package/srcold/Bot.d.ts +0 -567
- package/srcold/Bot.js +0 -1208
- package/srcold/FileManager.js +0 -270
- package/srcold/Message.d.ts +0 -66
- package/srcold/Message.js +0 -314
- package/srcold/Middleware.d.ts +0 -170
- package/srcold/Middleware.js +0 -657
- package/srcold/Waiter.d.ts +0 -13
- package/srcold/Waiter.js +0 -24
- package/srcold/core/anno/deleteAnno.js +0 -43
- package/srcold/core/anno/getAnno.js +0 -44
- package/srcold/core/anno/publishAnno.js +0 -44
- package/srcold/core/auth.js +0 -40
- package/srcold/core/fs/deleteGroupFile.js +0 -45
- package/srcold/core/fs/getGroupFileInfo.js +0 -46
- package/srcold/core/fs/getGroupFileList.js +0 -47
- package/srcold/core/fs/makeGroupDir.js +0 -45
- package/srcold/core/fs/moveGroupFile.js +0 -47
- package/srcold/core/fs/renameGroupFile.js +0 -44
- package/srcold/core/fs/uploadGroupFIle.js +0 -58
- package/srcold/core/getFriendList.js +0 -37
- package/srcold/core/getGroupConfig.js +0 -37
- package/srcold/core/getGroupList.js +0 -37
- package/srcold/core/getMemberInfo.js +0 -41
- package/srcold/core/getMemberList.js +0 -49
- package/srcold/core/getSessionConfig.js +0 -39
- package/srcold/core/getUserProfile.js +0 -40
- package/srcold/core/messageFromId.js +0 -40
- package/srcold/core/mute.js +0 -41
- package/srcold/core/muteAll.js +0 -39
- package/srcold/core/quitGroup.js +0 -40
- package/srcold/core/recall.js +0 -39
- package/srcold/core/releaseSession.js +0 -41
- package/srcold/core/removeFriend.js +0 -40
- package/srcold/core/removeMember.js +0 -42
- package/srcold/core/responseBotInvitedJoinGroupRequest.js +0 -46
- package/srcold/core/responseFirendRequest.js +0 -45
- package/srcold/core/responseMemberJoinRequest.js +0 -47
- package/srcold/core/sendCommand.js +0 -41
- package/srcold/core/sendFriendMessage.js +0 -43
- package/srcold/core/sendGroupMessage.js +0 -43
- package/srcold/core/sendImageMessage.js +0 -4
- package/srcold/core/sendNudge.js +0 -43
- package/srcold/core/sendTempMessage.js +0 -55
- package/srcold/core/setEssence.js +0 -44
- package/srcold/core/setGroupConfig.js +0 -58
- package/srcold/core/setMemberAdmin.js +0 -44
- package/srcold/core/setMemberInfo.js +0 -48
- package/srcold/core/setSessionConfig.js +0 -41
- package/srcold/core/startListeningBrowser.js +0 -62
- package/srcold/core/startListeningNode.js +0 -74
- package/srcold/core/stopListeningBrowser.js +0 -34
- package/srcold/core/stopListeningNode.js +0 -34
- package/srcold/core/unmute.js +0 -40
- package/srcold/core/unmuteAll.js +0 -39
- package/srcold/core/uploadImage.js +0 -55
- package/srcold/core/uploadVoice.js +0 -54
- package/srcold/core/verify.js +0 -41
- package/srcold/index.d.ts +0 -10
- package/srcold/index.js +0 -21
- package/srcold/interface.js +0 -20
- package/srcold/polyfill/URL.js +0 -5
- package/srcold/polyfill/wsListener.js +0 -6
- package/srcold/typeHelpers.d.ts +0 -2
- package/srcold/util/errCode.js +0 -23
- package/srcold/util/errorHandler.js +0 -24
- package/srcold/util/getInvalidParamsString.js +0 -12
- package/srcold/util/isBrowserEnv.js +0 -3
- package/srcold/util/random.js +0 -6
package/srcold/FileManager.js
DELETED
@@ -1,270 +0,0 @@
|
|
1
|
-
const { isBrowserEnv } = require('./util/isBrowserEnv');
|
2
|
-
const fs = isBrowserEnv() ? null : require('fs');
|
3
|
-
const path = isBrowserEnv() ? null : require('path');
|
4
|
-
const { promisify } = isBrowserEnv() ? { promisify: null } : require('util');
|
5
|
-
class FileManager {
|
6
|
-
constructor({ bot, group }) {
|
7
|
-
const baseUrl = bot.getBaseUrl();
|
8
|
-
const sessionKey = bot.sessionKey();
|
9
|
-
// core 柯里化,为内部类 File Directory 提供包装的接口
|
10
|
-
this._getGroupFileList = ({ dir }) => require('./core/fs/getGroupFileList')({
|
11
|
-
baseUrl, sessionKey, target: group, dir
|
12
|
-
});
|
13
|
-
|
14
|
-
this._getGroupFileInfo = ({ id }) => require('./core/fs/getGroupFileInfo')({
|
15
|
-
baseUrl, sessionKey, target: group, id
|
16
|
-
});
|
17
|
-
|
18
|
-
this._uploadFileAndSend = ({ type, path, file }) => require('./core/fs/uploadGroupFIle')({
|
19
|
-
baseUrl, sessionKey, type, target: group, path, file
|
20
|
-
});
|
21
|
-
|
22
|
-
this._groupFileDelete = ({ id }) => require('./core/fs/deleteGroupFile')({
|
23
|
-
baseUrl, sessionKey, target: group, id
|
24
|
-
});
|
25
|
-
|
26
|
-
this._makeGroupDir = ({ dir }) => require('./core/fs/makeGroupDir')({
|
27
|
-
baseUrl, sessionKey, target: group, dir
|
28
|
-
});
|
29
|
-
|
30
|
-
this._groupFileRename = ({ id, rename }) => require('./core/fs/renameGroupFile')({
|
31
|
-
baseUrl, sessionKey, target: group, id, rename
|
32
|
-
});
|
33
|
-
|
34
|
-
this._groupFileMove = ({ id, movePath }) => require('./core/fs/moveGroupFile')({
|
35
|
-
baseUrl, sessionKey, target: group, id, movePath
|
36
|
-
});
|
37
|
-
|
38
|
-
// 外部类实例引用
|
39
|
-
let FileManager_this = this;
|
40
|
-
|
41
|
-
class File {
|
42
|
-
constructor(fileObj) {
|
43
|
-
// 将 GET /groupFileList 与 GET /groupFileInfo 的信息放一起
|
44
|
-
this._details = {
|
45
|
-
name: fileObj?.name,
|
46
|
-
id: fileObj?.id,
|
47
|
-
path: fileObj?.path,
|
48
|
-
isFile: fileObj?.isFile,
|
49
|
-
};
|
50
|
-
|
51
|
-
// 按需请求,延后求值
|
52
|
-
/*{
|
53
|
-
id: undefined,
|
54
|
-
path: undefined,
|
55
|
-
name: undefined,
|
56
|
-
length: undefined,
|
57
|
-
downloadTimes: undefined,
|
58
|
-
uploaderId: undefined,
|
59
|
-
uploadTime: undefined,
|
60
|
-
lastModifyTime: undefined,
|
61
|
-
downloadUrl: undefined,
|
62
|
-
sha1: undefined,
|
63
|
-
md5: undefined,
|
64
|
-
};*/
|
65
|
-
}
|
66
|
-
|
67
|
-
/**
|
68
|
-
* @description 移除该文件
|
69
|
-
* @returns this
|
70
|
-
*/
|
71
|
-
async delete() {
|
72
|
-
await FileManager_this._groupFileDelete({
|
73
|
-
id: this._details.id,
|
74
|
-
});
|
75
|
-
return this;
|
76
|
-
}
|
77
|
-
|
78
|
-
/**
|
79
|
-
* @description 移动文件
|
80
|
-
* @returns this
|
81
|
-
*/
|
82
|
-
async move(path) {
|
83
|
-
if (!path) {
|
84
|
-
throw new Error('Bot.FileManager.File.move 缺少必要的 path 参数');
|
85
|
-
}
|
86
|
-
await FileManager_this._groupFileMove({
|
87
|
-
id: this._details.id,
|
88
|
-
movePath: path,
|
89
|
-
});
|
90
|
-
|
91
|
-
// 更新 fields
|
92
|
-
await this._requestFields();
|
93
|
-
return this;
|
94
|
-
}
|
95
|
-
|
96
|
-
/**
|
97
|
-
* @description 重命名文件
|
98
|
-
* @returns this
|
99
|
-
*/
|
100
|
-
async rename(name) {
|
101
|
-
if (!name) {
|
102
|
-
throw new Error('Bot.FileManager.File.rename 缺少必要的 name 参数');
|
103
|
-
}
|
104
|
-
await FileManager_this._groupFileRename({
|
105
|
-
id: this._details.id,
|
106
|
-
rename: name,
|
107
|
-
});
|
108
|
-
|
109
|
-
// 更新 fields
|
110
|
-
await this._requestFields();
|
111
|
-
return this;
|
112
|
-
}
|
113
|
-
|
114
|
-
/**
|
115
|
-
* @private
|
116
|
-
* @description 请求 file info 并合并对象至 this._details
|
117
|
-
*/
|
118
|
-
async _requestFields() {
|
119
|
-
return Object.assign(this._details, await FileManager_this._getGroupFileInfo({ id: await this.id() }));
|
120
|
-
}
|
121
|
-
|
122
|
-
/**
|
123
|
-
* @private
|
124
|
-
* @description 获取属性的抽象
|
125
|
-
*/
|
126
|
-
async _getField(field) {
|
127
|
-
if (!this._details[field]) {
|
128
|
-
await this._requestFields();
|
129
|
-
}
|
130
|
-
return this._details[field];
|
131
|
-
}
|
132
|
-
|
133
|
-
/**
|
134
|
-
* @description 文件属性
|
135
|
-
*/
|
136
|
-
async allFields() { return await this._requestFields(); }
|
137
|
-
async isDir() { return !(await this._getField('isFile')); }
|
138
|
-
async isFile() { return await this._getField('isFile'); }
|
139
|
-
async name() { return await this._getField('name'); }
|
140
|
-
async path() { return await this._getField('path'); }
|
141
|
-
async id() { return await this._getField('id'); }
|
142
|
-
async length() { return await this._getField('length'); }
|
143
|
-
async downloadTimes() { return await this._getField('downloadTimes'); }
|
144
|
-
async uploaderId() { return await this._getField('uploaderId'); }
|
145
|
-
async uploadTime() { return await this._getField('uploadTime'); }
|
146
|
-
async lastModifyTime() { return await this._getField('lastModifyTime'); }
|
147
|
-
async downloadUrl() { return await this._getField('downloadUrl'); }
|
148
|
-
async sha1() { return await this._getField('sha1'); }
|
149
|
-
async md5() { return await this._getField('md5'); }
|
150
|
-
}
|
151
|
-
|
152
|
-
class Directory {
|
153
|
-
constructor(fileObj) {
|
154
|
-
this._details = {
|
155
|
-
name: fileObj?.name,
|
156
|
-
id: fileObj?.id,
|
157
|
-
path: fileObj?.path,
|
158
|
-
isFile: fileObj?.isFile,
|
159
|
-
};
|
160
|
-
}
|
161
|
-
|
162
|
-
/**
|
163
|
-
* @private
|
164
|
-
* @description 获取属性的抽象
|
165
|
-
*/
|
166
|
-
async _getField(field) {
|
167
|
-
return this._details[field];
|
168
|
-
}
|
169
|
-
|
170
|
-
/**
|
171
|
-
* @description 目录属性
|
172
|
-
*/
|
173
|
-
async allFields() { return await this._details; }
|
174
|
-
async isDir() { return !(await this._getField('isFile')); }
|
175
|
-
async isFile() { return await this._getField('isFile'); }
|
176
|
-
async name() { return await this._getField('name'); }
|
177
|
-
async path() { return await this._getField('path'); }
|
178
|
-
async id() { return await this._getField('id'); }
|
179
|
-
|
180
|
-
/**
|
181
|
-
* @description 获取指定目录下的 文件/目录 数组
|
182
|
-
* @param {string} dir 可选,目录,默认为当前实例指代的目录
|
183
|
-
* @returns
|
184
|
-
*/
|
185
|
-
async getFileList(dir = this._details.path) {
|
186
|
-
return (await FileManager_this._getGroupFileList({ dir })).map(fileObj => FileManager_this._getInstance(fileObj));
|
187
|
-
}
|
188
|
-
|
189
|
-
/**
|
190
|
-
* @description 上传文件至当前实例指代的目录下
|
191
|
-
* @param {Buffer} file 二选一,文件二进制数据
|
192
|
-
* @param {string} filePath 二选一,文件路径
|
193
|
-
* @param {string} filename 可选,文件名,默认为指定路径的文件名
|
194
|
-
*/
|
195
|
-
async upload({ file, filePath, filename }) {
|
196
|
-
// 检查参数
|
197
|
-
if (isBrowserEnv && filePath) {
|
198
|
-
throw new Error('Bot.FileManager.Directory.upload 浏览器端不支持 filePath 参数');
|
199
|
-
}
|
200
|
-
if (!file && !filePath) {
|
201
|
-
throw new Error('Bot.FileManager.Directory.upload 缺少必要的 file 或 filePath 参数');
|
202
|
-
}
|
203
|
-
// 若传入 filename 则统一转换为 Buffer
|
204
|
-
if (filename) {
|
205
|
-
// 优先使用 file 的原值
|
206
|
-
file = file ?? await promisify(fs.readFile)(filename);
|
207
|
-
}
|
208
|
-
await this._uploadFileAndSend({
|
209
|
-
file,
|
210
|
-
type: 'group',
|
211
|
-
path: await this.path() + filename ?? path.parse(filePath).base,
|
212
|
-
});
|
213
|
-
}
|
214
|
-
}
|
215
|
-
|
216
|
-
// 内部类引用
|
217
|
-
this.File = File;
|
218
|
-
this.Directory = Directory;
|
219
|
-
}
|
220
|
-
|
221
|
-
/**
|
222
|
-
* @private
|
223
|
-
* @description 工厂方法,返回 File Directory 实例
|
224
|
-
* @param {Object} fileObj
|
225
|
-
* @returns
|
226
|
-
*/
|
227
|
-
_getInstance(fileObj) {
|
228
|
-
if (fileObj?.isFile === true) {
|
229
|
-
return new this.File(fileObj);
|
230
|
-
} else if (fileObj?.isFile === false) {
|
231
|
-
return new this.Directory(fileObj);
|
232
|
-
}
|
233
|
-
return undefined;
|
234
|
-
}
|
235
|
-
|
236
|
-
/**
|
237
|
-
* @description 获取指定目录下的 文件/目录 数组
|
238
|
-
* @param {string} dir 可选,目录,默认为根目录
|
239
|
-
* @returns
|
240
|
-
*/
|
241
|
-
async getFileList(dir) {
|
242
|
-
return (await this._getGroupFileList({ dir })).map(fileObj => this._getInstance(fileObj));
|
243
|
-
}
|
244
|
-
|
245
|
-
/**
|
246
|
-
* @description 上传文件至指定的绝对路径
|
247
|
-
* @param {string} uploadPath 必须,上传的绝对路径
|
248
|
-
* @param {Buffer} file 二选一,文件二进制数据
|
249
|
-
* @param {string} filePath 二选一,文件路径
|
250
|
-
*/
|
251
|
-
async uploadTo({ uploadPath, file, filePath }) {
|
252
|
-
// 检查参数
|
253
|
-
if (isBrowserEnv() && filePath) {
|
254
|
-
throw new Error('Bot.FileManager.uploadTo 浏览器端不支持 filePath 参数');
|
255
|
-
}
|
256
|
-
if (!file && !filePath) {
|
257
|
-
throw new Error('Bot.FileManager.uploadTo 缺少必要的 file 或 filePath 参数');
|
258
|
-
}
|
259
|
-
// 若传入 filename 则统一转换为 Buffer
|
260
|
-
if (filePath) {
|
261
|
-
// 优先使用 file 的原值
|
262
|
-
file = file ?? await promisify(fs.readFile)(filePath);
|
263
|
-
|
264
|
-
}
|
265
|
-
await this._uploadFileAndSend({ type: 'Group', path: uploadPath, file });
|
266
|
-
}
|
267
|
-
}
|
268
|
-
|
269
|
-
|
270
|
-
module.exports = { FileManager };
|
package/srcold/Message.d.ts
DELETED
@@ -1,66 +0,0 @@
|
|
1
|
-
// Message 通过实现 MessageChaingetable 与 Bot.sendMessage 通信
|
2
|
-
// 消息链元素类型和图片 id 类型
|
3
|
-
import { MessageChainGetable, MessageType, ImageId, FaceType, MessageId, ForwardNode, } from './BaseType';
|
4
|
-
|
5
|
-
// Bot.sendMessage 的 message 参数是一个 Message 类型的实例
|
6
|
-
// 方法内部通过 getMessageChainable 接口的 getMessageChain 方法拿到消息链
|
7
|
-
export class Message implements MessageChainGetable {
|
8
|
-
private messageChain: MessageType[];
|
9
|
-
|
10
|
-
// Plain
|
11
|
-
addText(text: string): Message;
|
12
|
-
addPlain(text: string): Message;
|
13
|
-
|
14
|
-
// At
|
15
|
-
addAt(target: number): Message;
|
16
|
-
addAtAll(): Message;
|
17
|
-
|
18
|
-
// Image
|
19
|
-
addImageId(imageId: ImageId): Message;
|
20
|
-
addImageUrl(url: string): Message;
|
21
|
-
addImagePath(path: string): Message;
|
22
|
-
|
23
|
-
// FlashImage
|
24
|
-
addFlashImageId(imageId: ImageId): Message;
|
25
|
-
addFlashImageUrl(url: string): Message;
|
26
|
-
addFlashImagePath(path: string): Message;
|
27
|
-
|
28
|
-
// Voice
|
29
|
-
addVoiceId(imageId: ImageId): Message;
|
30
|
-
addVoiceUrl(url: string): Message;
|
31
|
-
addVoicePath(path: string): Message;
|
32
|
-
|
33
|
-
// xml
|
34
|
-
addXml(xml: string): Message;
|
35
|
-
|
36
|
-
// json
|
37
|
-
addJson(json: string): Message;
|
38
|
-
|
39
|
-
// app
|
40
|
-
addApp(content: string): Message;
|
41
|
-
|
42
|
-
// face
|
43
|
-
addFace(name: FaceType): Message;
|
44
|
-
|
45
|
-
// implements MessageChainGetable
|
46
|
-
getMessageChain(): MessageType[];
|
47
|
-
|
48
|
-
// factory
|
49
|
-
static createForwardMessage(): ForwardMessage;
|
50
|
-
}
|
51
|
-
|
52
|
-
export class ForwardMessage implements MessageChainGetable {
|
53
|
-
constructor(nodeList: ForwardNode[]);
|
54
|
-
private messageChain: MessageType[];
|
55
|
-
|
56
|
-
addForwardNode({
|
57
|
-
senderId,
|
58
|
-
time,
|
59
|
-
senderName,
|
60
|
-
messageChain
|
61
|
-
}: ForwardNode): this;
|
62
|
-
addForwardNode(messageId: MessageId): this;
|
63
|
-
|
64
|
-
// implements MessageChainGetable
|
65
|
-
getMessageChain(): MessageType[];
|
66
|
-
}
|
package/srcold/Message.js
DELETED
@@ -1,314 +0,0 @@
|
|
1
|
-
// 用于与 Bot.sendMessage 耦合的接口
|
2
|
-
const { MessageChainGetable } = require('./interface');
|
3
|
-
|
4
|
-
/**
|
5
|
-
* @description http 接口需要的消息类型
|
6
|
-
*/
|
7
|
-
class MessageType {
|
8
|
-
constructor({ type }) {
|
9
|
-
this.type = type;
|
10
|
-
}
|
11
|
-
}
|
12
|
-
|
13
|
-
|
14
|
-
class Plain extends MessageType {
|
15
|
-
constructor({ text }) {
|
16
|
-
super({ type: 'Plain' });
|
17
|
-
this.text = text;
|
18
|
-
}
|
19
|
-
}
|
20
|
-
|
21
|
-
class Text extends MessageType {
|
22
|
-
constructor({ text }) {
|
23
|
-
super({ type: 'Plain' });
|
24
|
-
this.text = text;
|
25
|
-
}
|
26
|
-
}
|
27
|
-
|
28
|
-
class At extends MessageType {
|
29
|
-
constructor({ target, display }) {
|
30
|
-
super({ type: 'At' });
|
31
|
-
this.target = target;
|
32
|
-
|
33
|
-
// ? 不太清楚这个字段是干啥的
|
34
|
-
this.display = display;
|
35
|
-
}
|
36
|
-
}
|
37
|
-
|
38
|
-
class AtAll extends MessageType {
|
39
|
-
constructor() {
|
40
|
-
super({ type: 'AtAll' });
|
41
|
-
}
|
42
|
-
}
|
43
|
-
|
44
|
-
class Image extends MessageType {
|
45
|
-
constructor({ imageId, url, path }) {
|
46
|
-
super({ type: 'Image' });
|
47
|
-
this.imageId = imageId;
|
48
|
-
this.url = url;
|
49
|
-
|
50
|
-
// 图片路径相对于 mirai-console
|
51
|
-
// 的 plugins/MiraiAPIHTTP/images
|
52
|
-
this.path = path;
|
53
|
-
}
|
54
|
-
}
|
55
|
-
|
56
|
-
class FlashImage extends MessageType {
|
57
|
-
constructor({ imageId, url, path }) {
|
58
|
-
super({ type: 'FlashImage' });
|
59
|
-
this.imageId = imageId;
|
60
|
-
this.url = url;
|
61
|
-
|
62
|
-
// 图片路径相对于 mirai-console
|
63
|
-
// 的 plugins/MiraiAPIHTTP/images
|
64
|
-
this.path = path;
|
65
|
-
}
|
66
|
-
}
|
67
|
-
|
68
|
-
class Voice extends MessageType {
|
69
|
-
constructor({ voiceId, url, path }) {
|
70
|
-
super({ type: 'Voice' });
|
71
|
-
this.voiceId = voiceId;
|
72
|
-
this.url = url;
|
73
|
-
|
74
|
-
// 语音路径相对于 mirai-console
|
75
|
-
// 的 plugins/MiraiAPIHTTP/voices
|
76
|
-
this.path = path;
|
77
|
-
}
|
78
|
-
}
|
79
|
-
|
80
|
-
class Xml extends MessageType {
|
81
|
-
constructor({ xml }) {
|
82
|
-
super({ type: 'Xml' });
|
83
|
-
this.xml = xml;
|
84
|
-
}
|
85
|
-
}
|
86
|
-
|
87
|
-
class Json extends MessageType {
|
88
|
-
constructor({ json }) {
|
89
|
-
super({ type: 'Json' });
|
90
|
-
this.json = json;
|
91
|
-
}
|
92
|
-
}
|
93
|
-
|
94
|
-
class App extends MessageType {
|
95
|
-
constructor({ content }) {
|
96
|
-
super({ type: 'App' });
|
97
|
-
this.content = content;
|
98
|
-
}
|
99
|
-
}
|
100
|
-
|
101
|
-
class ForwardNodeList extends MessageType {
|
102
|
-
constructor({ nodeList }) {
|
103
|
-
super({ type: 'Forward' });
|
104
|
-
this.nodeList = nodeList;
|
105
|
-
}
|
106
|
-
}
|
107
|
-
|
108
|
-
const faceMap = new Map([
|
109
|
-
['惊讶', 0], ['撇嘴', 1], ['色', 2], ['发呆', 3], ['得意', 4],
|
110
|
-
['流泪', 5], ['害羞', 6], ['闭嘴', 7], ['睡', 8], ['大哭', 9],
|
111
|
-
['尴尬', 10], ['发怒', 11], ['调皮', 12], ['呲牙', 13], ['微笑', 14],
|
112
|
-
['难过', 15], ['酷', 16], ['抓狂', 18], ['吐', 19], ['偷笑', 20],
|
113
|
-
['可爱', 21], ['白眼', 22], ['傲慢', 23], ['饥饿', 24], ['困', 25],
|
114
|
-
['惊恐', 26], ['流汗', 27], ['憨笑', 28], ['悠闲', 29], ['奋斗', 30],
|
115
|
-
['咒骂', 31], ['疑问', 32], ['嘘', 33], ['晕', 34], ['折磨', 35],
|
116
|
-
['衰', 36], ['骷髅', 37], ['敲打', 38], ['再见', 39], ['发抖', 41],
|
117
|
-
['爱情', 42], ['跳跳', 43], ['猪头', 46], ['拥抱', 49], ['蛋糕', 53],
|
118
|
-
['闪电', 54], ['炸弹', 55], ['刀', 56], ['足球', 57], ['便便', 59],
|
119
|
-
['咖啡', 60], ['饭', 61], ['玫瑰', 63], ['凋谢', 64], ['爱心', 66],
|
120
|
-
['心碎', 67], ['礼物', 69], ['太阳', 74], ['月亮', 75], ['赞', 76],
|
121
|
-
['踩', 77], ['握手', 78], ['胜利', 79], ['飞吻', 85], ['怄火', 86],
|
122
|
-
['西瓜', 89], ['冷汗', 96], ['擦汗', 97], ['抠鼻', 98], ['鼓掌', 99],
|
123
|
-
['糗大了', 100], ['坏笑', 101], ['左哼哼', 102], ['右哼哼', 103], ['哈欠', 104],
|
124
|
-
['鄙视', 105], ['委屈', 106], ['快哭了', 107], ['阴险', 108], ['左亲亲', 109],
|
125
|
-
['吓', 110], ['可怜', 111], ['菜刀', 112], ['啤酒', 113], ['篮球', 114],
|
126
|
-
['乒乓', 115], ['示爱', 116], ['瓢虫', 117], ['抱拳', 118], ['勾引', 119],
|
127
|
-
['拳头', 120], ['差劲', 121], ['爱你', 122], ['不', 123], ['好', 124],
|
128
|
-
['转圈', 125], ['磕头', 126], ['回头', 127], ['跳绳', 128], ['挥手', 129],
|
129
|
-
['激动', 130], ['街舞', 131], ['献吻', 132], ['左太极', 133], ['右太极', 134],
|
130
|
-
['双喜', 136], ['鞭炮', 137], ['灯笼', 138], ['K歌', 140], ['喝彩', 144],
|
131
|
-
['祈祷', 145], ['爆筋', 146], ['棒棒糖', 147], ['喝奶', 148], ['飞机', 151],
|
132
|
-
['钞票', 158], ['药', 168], ['手枪', 169], ['茶', 171], ['眨眼睛', 172],
|
133
|
-
['泪奔', 173], ['无奈', 174], ['卖萌', 175], ['小纠结', 176], ['喷血', 177],
|
134
|
-
['斜眼笑', 178], ['doge', 179], ['惊喜', 180], ['骚扰', 181], ['笑哭', 182],
|
135
|
-
['我最美', 183], ['河蟹', 184], ['羊驼', 185], ['幽灵', 187], ['蛋', 188],
|
136
|
-
['菊花', 190], ['红包', 192], ['大笑', 193], ['不开心', 194], ['冷漠', 197],
|
137
|
-
['呃', 198], ['好棒', 199], ['拜托', 200], ['点赞', 201], ['无聊', 202],
|
138
|
-
['托脸', 203], ['吃', 204], ['送花', 205], ['害怕', 206], ['花痴', 207],
|
139
|
-
['小样儿', 208], ['飙泪', 210], ['我不看', 211], ['托腮', 212], ['啵啵', 214],
|
140
|
-
['糊脸', 215], ['拍头', 216], ['扯一扯', 217], ['舔一舔', 218], ['蹭一蹭', 219],
|
141
|
-
['拽炸天', 220], ['顶呱呱', 221], ['抱抱', 222], ['暴击', 223], ['开枪', 224],
|
142
|
-
['撩一撩', 225], ['拍桌', 226], ['拍手', 227], ['恭喜', 228], ['干杯', 229],
|
143
|
-
['嘲讽', 230], ['哼', 231], ['佛系', 232], ['掐一掐', 233], ['惊呆', 234],
|
144
|
-
['颤抖', 235], ['啃头', 236], ['偷看', 237], ['扇脸', 238], ['原谅', 239],
|
145
|
-
['喷脸', 240], ['生日快乐', 241], ['头撞击', 242], ['甩头', 243], ['扔狗', 244],
|
146
|
-
['加油必胜', 245], ['加油抱抱', 246], ['口罩护体', 247], ['搬砖中', 260], ['忙到飞起', 261],
|
147
|
-
['脑阔疼', 262], ['沧桑', 263], ['捂脸', 264], ['辣眼睛', 265], ['哦哟', 266],
|
148
|
-
['头秃', 267], ['问号脸', 268], ['暗中观察', 269], ['emm', 270], ['吃瓜', 271],
|
149
|
-
['呵呵哒', 272], ['我酸了', 273], ['太南了', 274], ['辣椒酱', 276], ['汪汪', 277],
|
150
|
-
['汗', 278], ['打脸', 279], ['击掌', 280], ['无眼笑', 281], ['敬礼', 282],
|
151
|
-
['狂笑', 283], ['面无表情', 284], ['摸鱼', 285], ['魔鬼笑', 286], ['哦', 287],
|
152
|
-
['请', 288], ['睁眼', 289], ['敲开心', 290], ['震惊', 291], ['让我康康', 292],
|
153
|
-
['摸锦鲤', 293], ['期待', 294], ['拿到红包', 295], ['真好', 296], ['拜谢', 297],
|
154
|
-
['元宝', 298], ['牛啊', 299], ['胖三斤', 300], ['好闪', 301], ['左拜年', 302],
|
155
|
-
['右拜年', 303], ['红包包', 304], ['右亲亲', 305], ['牛气冲天', 306], ['喵喵', 307],
|
156
|
-
['求红包', 308], ['谢红包', 309], ['新年烟花', 310], ['打call', 311], ['变形', 312],
|
157
|
-
['嗑到了', 313], ['仔细分析', 314], ['加油', 315], ['我没事', 316], ['菜狗', 317],
|
158
|
-
['崇拜', 318], ['比心', 319], ['庆祝', 320], ['老色痞', 321], ['拒绝', 322],
|
159
|
-
['嫌弃', 323], ['吃糖', 324]
|
160
|
-
]);
|
161
|
-
|
162
|
-
class Face extends MessageType {
|
163
|
-
constructor({
|
164
|
-
faceId,
|
165
|
-
name
|
166
|
-
}) {
|
167
|
-
super({
|
168
|
-
type: 'Face'
|
169
|
-
});
|
170
|
-
this.faceId = faceId;
|
171
|
-
this.name = name;
|
172
|
-
}
|
173
|
-
}
|
174
|
-
|
175
|
-
|
176
|
-
/**
|
177
|
-
* @description 本框架抽象的消息类型
|
178
|
-
*/
|
179
|
-
class Message extends MessageChainGetable {
|
180
|
-
constructor() {
|
181
|
-
super();
|
182
|
-
this.messageChain = [];
|
183
|
-
}
|
184
|
-
|
185
|
-
// 文本
|
186
|
-
addText(text) {
|
187
|
-
this.messageChain.push(new Text({ text }));
|
188
|
-
return this;
|
189
|
-
}
|
190
|
-
addPlain(text) {
|
191
|
-
this.messageChain.push(new Plain({ text }));
|
192
|
-
return this;
|
193
|
-
}
|
194
|
-
|
195
|
-
// At@
|
196
|
-
addAt(target) {
|
197
|
-
this.messageChain.push(new At({ target }));
|
198
|
-
return this;
|
199
|
-
}
|
200
|
-
addAtAll() {
|
201
|
-
this.messageChain.push(new AtAll());
|
202
|
-
return this;
|
203
|
-
}
|
204
|
-
|
205
|
-
// 图片
|
206
|
-
addImageId(imageId) {
|
207
|
-
this.messageChain.push(new Image({ imageId }));
|
208
|
-
return this;
|
209
|
-
}
|
210
|
-
addImageUrl(url) {
|
211
|
-
this.messageChain.push(new Image({ url }));
|
212
|
-
return this;
|
213
|
-
}
|
214
|
-
addImagePath(path) {
|
215
|
-
this.messageChain.push(new Image({ path }));
|
216
|
-
return this;
|
217
|
-
}
|
218
|
-
|
219
|
-
// 闪照
|
220
|
-
addFlashImageId(imageId) {
|
221
|
-
this.messageChain.push(new FlashImage({ imageId }));
|
222
|
-
return this;
|
223
|
-
}
|
224
|
-
addFlashImageUrl(url) {
|
225
|
-
this.messageChain.push(new FlashImage({ url }));
|
226
|
-
return this;
|
227
|
-
}
|
228
|
-
addFlashImagePath(path) {
|
229
|
-
this.messageChain.push(new FlashImage({ path }));
|
230
|
-
return this;
|
231
|
-
}
|
232
|
-
|
233
|
-
// 语音
|
234
|
-
addVoiceId(voiceId) {
|
235
|
-
this.messageChain.push(new Voice({ voiceId }));
|
236
|
-
return this;
|
237
|
-
}
|
238
|
-
addVoiceUrl(url) {
|
239
|
-
this.messageChain.push(new Voice({ url }));
|
240
|
-
return this;
|
241
|
-
}
|
242
|
-
addVoicePath(path) {
|
243
|
-
this.messageChain.push(new Voice({ path }));
|
244
|
-
return this;
|
245
|
-
}
|
246
|
-
|
247
|
-
// xml
|
248
|
-
addXml(xml) {
|
249
|
-
this.messageChain.push(new Xml({ xml }));
|
250
|
-
return this;
|
251
|
-
}
|
252
|
-
|
253
|
-
// json
|
254
|
-
addJson(json) {
|
255
|
-
this.messageChain.push(new Json({ json }));
|
256
|
-
return this;
|
257
|
-
}
|
258
|
-
|
259
|
-
// app
|
260
|
-
addApp(content) {
|
261
|
-
this.messageChain.push(new App({ content }));
|
262
|
-
return this;
|
263
|
-
}
|
264
|
-
|
265
|
-
// face
|
266
|
-
addFace(name) {
|
267
|
-
const idx = faceMap.get(name);
|
268
|
-
if (idx) {
|
269
|
-
this.messageChain.push(new Face(
|
270
|
-
{ faceId: idx, name }
|
271
|
-
));
|
272
|
-
}
|
273
|
-
return this;
|
274
|
-
}
|
275
|
-
|
276
|
-
// get 原接口格式的信息链
|
277
|
-
getMessageChain() {
|
278
|
-
return this.messageChain;
|
279
|
-
}
|
280
|
-
|
281
|
-
static createForwardMessage() {
|
282
|
-
return new ForwardMessage();
|
283
|
-
}
|
284
|
-
}
|
285
|
-
|
286
|
-
class ForwardMessage extends MessageChainGetable {
|
287
|
-
constructor() {
|
288
|
-
super();
|
289
|
-
this.messageChain = [];
|
290
|
-
this.nodeList = [];
|
291
|
-
}
|
292
|
-
|
293
|
-
addForwardNode(nodeOrId) {
|
294
|
-
if (typeof nodeOrId === 'number') {
|
295
|
-
this.nodeList.push({
|
296
|
-
messageId: nodeOrId
|
297
|
-
});
|
298
|
-
} else if (typeof nodeOrId == 'object') {
|
299
|
-
if (nodeOrId.messageChain instanceof MessageChainGetable) {
|
300
|
-
nodeOrId.messageChain = nodeOrId.messageChain.getMessageChain();
|
301
|
-
}
|
302
|
-
this.nodeList.push(nodeOrId);
|
303
|
-
} /* else ignore */
|
304
|
-
return this;
|
305
|
-
}
|
306
|
-
|
307
|
-
// implements MessageChainGetable
|
308
|
-
getMessageChain() {
|
309
|
-
this.messageChain.push(new ForwardNodeList({ nodeList: this.nodeList }));
|
310
|
-
return this.messageChain;
|
311
|
-
}
|
312
|
-
}
|
313
|
-
|
314
|
-
module.exports = { Message };
|