mirai-js 2.8.5 → 2.8.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. package/dist/browser/mirai-js.js +1 -1
  2. package/dist/node/borwserEntry.js +1 -1
  3. package/package.json +1 -1
  4. package/src/borwserEntry.js +1 -1
  5. package/1.mp3 +0 -0
  6. package/demo.ts +0 -29
  7. package/dist/node/lib/index.ts +0 -0
  8. package/index.ts +0 -38
  9. package/src/lib/index.ts +0 -0
  10. package/srcold/BaseType.d.ts +0 -419
  11. package/srcold/Bot.d.ts +0 -567
  12. package/srcold/Bot.js +0 -1208
  13. package/srcold/FileManager.js +0 -270
  14. package/srcold/Message.d.ts +0 -66
  15. package/srcold/Message.js +0 -314
  16. package/srcold/Middleware.d.ts +0 -170
  17. package/srcold/Middleware.js +0 -657
  18. package/srcold/Waiter.d.ts +0 -13
  19. package/srcold/Waiter.js +0 -24
  20. package/srcold/core/anno/deleteAnno.js +0 -43
  21. package/srcold/core/anno/getAnno.js +0 -44
  22. package/srcold/core/anno/publishAnno.js +0 -44
  23. package/srcold/core/auth.js +0 -40
  24. package/srcold/core/fs/deleteGroupFile.js +0 -45
  25. package/srcold/core/fs/getGroupFileInfo.js +0 -46
  26. package/srcold/core/fs/getGroupFileList.js +0 -47
  27. package/srcold/core/fs/makeGroupDir.js +0 -45
  28. package/srcold/core/fs/moveGroupFile.js +0 -47
  29. package/srcold/core/fs/renameGroupFile.js +0 -44
  30. package/srcold/core/fs/uploadGroupFIle.js +0 -58
  31. package/srcold/core/getFriendList.js +0 -37
  32. package/srcold/core/getGroupConfig.js +0 -37
  33. package/srcold/core/getGroupList.js +0 -37
  34. package/srcold/core/getMemberInfo.js +0 -41
  35. package/srcold/core/getMemberList.js +0 -49
  36. package/srcold/core/getSessionConfig.js +0 -39
  37. package/srcold/core/getUserProfile.js +0 -40
  38. package/srcold/core/messageFromId.js +0 -40
  39. package/srcold/core/mute.js +0 -41
  40. package/srcold/core/muteAll.js +0 -39
  41. package/srcold/core/quitGroup.js +0 -40
  42. package/srcold/core/recall.js +0 -39
  43. package/srcold/core/releaseSession.js +0 -41
  44. package/srcold/core/removeFriend.js +0 -40
  45. package/srcold/core/removeMember.js +0 -42
  46. package/srcold/core/responseBotInvitedJoinGroupRequest.js +0 -46
  47. package/srcold/core/responseFirendRequest.js +0 -45
  48. package/srcold/core/responseMemberJoinRequest.js +0 -47
  49. package/srcold/core/sendCommand.js +0 -41
  50. package/srcold/core/sendFriendMessage.js +0 -43
  51. package/srcold/core/sendGroupMessage.js +0 -43
  52. package/srcold/core/sendImageMessage.js +0 -4
  53. package/srcold/core/sendNudge.js +0 -43
  54. package/srcold/core/sendTempMessage.js +0 -55
  55. package/srcold/core/setEssence.js +0 -44
  56. package/srcold/core/setGroupConfig.js +0 -58
  57. package/srcold/core/setMemberAdmin.js +0 -44
  58. package/srcold/core/setMemberInfo.js +0 -48
  59. package/srcold/core/setSessionConfig.js +0 -41
  60. package/srcold/core/startListeningBrowser.js +0 -62
  61. package/srcold/core/startListeningNode.js +0 -74
  62. package/srcold/core/stopListeningBrowser.js +0 -34
  63. package/srcold/core/stopListeningNode.js +0 -34
  64. package/srcold/core/unmute.js +0 -40
  65. package/srcold/core/unmuteAll.js +0 -39
  66. package/srcold/core/uploadImage.js +0 -55
  67. package/srcold/core/uploadVoice.js +0 -54
  68. package/srcold/core/verify.js +0 -41
  69. package/srcold/index.d.ts +0 -10
  70. package/srcold/index.js +0 -21
  71. package/srcold/interface.js +0 -20
  72. package/srcold/polyfill/URL.js +0 -5
  73. package/srcold/polyfill/wsListener.js +0 -6
  74. package/srcold/typeHelpers.d.ts +0 -2
  75. package/srcold/util/errCode.js +0 -23
  76. package/srcold/util/errorHandler.js +0 -24
  77. package/srcold/util/getInvalidParamsString.js +0 -12
  78. package/srcold/util/isBrowserEnv.js +0 -3
  79. package/srcold/util/random.js +0 -6
@@ -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 };
@@ -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 };