@karinjs/adapter-qqbot 1.2.9 → 1.2.10

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.
Files changed (68) hide show
  1. package/config/comment/config.json +3 -0
  2. package/config/config/config.yaml +53 -0
  3. package/lib/cli/pr.d.ts +2 -0
  4. package/lib/cli/pr.js +73 -0
  5. package/lib/core/adapter/adapter.d.ts +91 -0
  6. package/lib/core/adapter/adapter.js +144 -0
  7. package/lib/core/adapter/handler.d.ts +49 -0
  8. package/lib/core/adapter/handler.js +140 -0
  9. package/lib/core/adapter/markdown.d.ts +38 -0
  10. package/lib/core/adapter/markdown.js +220 -0
  11. package/lib/core/adapter/normal.d.ts +30 -0
  12. package/lib/core/adapter/normal.js +263 -0
  13. package/lib/core/api/index.d.ts +167 -0
  14. package/lib/core/api/index.js +180 -0
  15. package/lib/core/api/sign.d.ts +22 -0
  16. package/lib/core/api/sign.js +40 -0
  17. package/lib/core/api/types.d.ts +236 -0
  18. package/lib/core/event/conver.d.ts +10 -0
  19. package/lib/core/event/conver.js +57 -0
  20. package/lib/core/event/index.d.ts +9 -0
  21. package/lib/core/event/index.js +98 -0
  22. package/lib/core/event/message.d.ts +27 -0
  23. package/lib/core/event/message.js +95 -0
  24. package/lib/core/event/notice.d.ts +50 -0
  25. package/lib/core/event/notice.js +133 -0
  26. package/lib/{types/event.d.ts → core/event/types.d.ts} +255 -14
  27. package/lib/core/internal/axios.d.ts +25 -0
  28. package/lib/core/internal/axios.js +46 -0
  29. package/lib/core/internal/sign.d.ts +22 -0
  30. package/lib/core/internal/sign.js +40 -0
  31. package/lib/core/webhook/c2c.d.ts +2 -0
  32. package/lib/core/webhook/c2c.js +14 -0
  33. package/lib/core/webhook/http.d.ts +2 -0
  34. package/lib/core/webhook/http.js +35 -0
  35. package/lib/core/webhook/index.d.ts +17 -0
  36. package/lib/core/webhook/index.js +87 -0
  37. package/lib/core/webhook/ws.d.ts +2 -0
  38. package/lib/core/webhook/ws.js +79 -0
  39. package/lib/index.d.ts +1 -3
  40. package/lib/index.js +5 -7
  41. package/lib/root.d.ts +5 -0
  42. package/lib/root.js +9 -0
  43. package/lib/types/config.d.ts +53 -0
  44. package/lib/utils/common.d.ts +75 -61
  45. package/lib/utils/common.js +190 -202
  46. package/lib/utils/config.d.ts +5 -130
  47. package/lib/utils/config.js +50 -172
  48. package/lib/utils/dir.d.ts +1 -5
  49. package/lib/utils/dir.js +1 -10
  50. package/lib/utils/index.d.ts +4 -3
  51. package/lib/utils/index.js +4 -3
  52. package/package.json +41 -23
  53. package/config/config.yaml +0 -69
  54. package/lib/core/api.d.ts +0 -180
  55. package/lib/core/api.js +0 -454
  56. package/lib/core/index.d.ts +0 -90
  57. package/lib/core/index.js +0 -349
  58. package/lib/core/intents.d.ts +0 -6
  59. package/lib/core/intents.js +0 -57
  60. package/lib/core/markdown.d.ts +0 -23
  61. package/lib/core/markdown.js +0 -265
  62. package/lib/types/index.d.ts +0 -3
  63. package/lib/types/index.js +0 -3
  64. package/lib/types/media.d.ts +0 -100
  65. package/lib/types/message.d.ts +0 -85
  66. /package/lib/{types/event.js → core/api/types.js} +0 -0
  67. /package/lib/{types/media.js → core/event/types.js} +0 -0
  68. /package/lib/types/{message.js → config.js} +0 -0
package/lib/core/api.js DELETED
@@ -1,454 +0,0 @@
1
- import got from 'got';
2
- import WebSocket from 'ws';
3
- import EventEmitter from 'events';
4
- import { Intents } from './intents.js';
5
- import { common, logger } from 'node-karin';
6
- export class QQBotApi extends EventEmitter {
7
- /** 开发者的appId */
8
- appId;
9
- /** Bot头像 */
10
- avatar;
11
- /** Bot的昵称 */
12
- nick;
13
- /** 调用凭证 */
14
- #access_token;
15
- /** wss地址 */
16
- wssUrl;
17
- /** 开发者的Secret 仅在内部使用 防止泄露 */
18
- #Secret;
19
- /** wss连接 */
20
- wss;
21
- /** wss连接唯一值 */
22
- seq = 0;
23
- /** 心跳内容 */
24
- heartbeat;
25
- /** 心跳生命周期 单位:毫秒 */
26
- heartbeat_interval;
27
- /** 请求头 用于鉴权 */
28
- headers = {};
29
- /** 基本请求接口 */
30
- host;
31
- #config;
32
- constructor(config) {
33
- super();
34
- this.#config = config;
35
- this.appId = String(this.#config.appId);
36
- this.avatar = '';
37
- this.nick = '';
38
- this.#Secret = this.#config.secret;
39
- this.host = this.#config.sandBox ? this.#config.sandBoxApi : this.#config.qqBotApi;
40
- this.#access_token = '';
41
- this.wssUrl = '';
42
- this.heartbeat = { op: 1, d: null, session_id: '' };
43
- this.heartbeat_interval = 0;
44
- // todo: 后续处理 重启后重新建立历史会话
45
- }
46
- logger(level, ...args) {
47
- logger.bot(level, this.appId, ...args);
48
- }
49
- /**
50
- * post请求
51
- * @param url 请求地址
52
- * @param options 请求参数
53
- */
54
- async post(url, options) {
55
- try {
56
- return await got.post(url, { json: options, headers: this.headers });
57
- }
58
- catch (error) {
59
- logger.error(`[got] 请求错误: ${JSON.stringify(error.response.body)}`);
60
- }
61
- }
62
- /**
63
- * delete请求
64
- * @param url 请求地址
65
- * @param options 请求参数
66
- */
67
- async delete(url) {
68
- try {
69
- return await got.delete(url, { headers: this.headers });
70
- }
71
- catch (error) {
72
- logger.error(`[got] 请求错误: ${JSON.stringify(error.response.body)}`);
73
- }
74
- }
75
- /**
76
- * 获取调用凭证
77
- * @param clientSecret 开发者的Secret
78
- * @param isRefresh 是否是刷新凭证
79
- */
80
- async getAccessToken(isRefresh = false) {
81
- if (isRefresh)
82
- this.logger('debug', '凭证即将过期,开始刷新凭证');
83
- const url = this.#config.accessTokenApi;
84
- const data = await got.post(url, {
85
- json: { appId: this.appId, clientSecret: this.#Secret },
86
- headers: { 'Content-Type': 'application/json' },
87
- }).json();
88
- const { expires_in, access_token } = data;
89
- this.#access_token = access_token;
90
- this.headers = { Authorization: `QQBot ${this.#access_token}`, 'X-Union-Appid': `BOT_${this.appId}` };
91
- this.logger('debug', `凭证获取成功: ${JSON.stringify(data)}`);
92
- /** 刷新凭证 */
93
- const time = Number(expires_in) * 1000 - 50000;
94
- setTimeout(async () => {
95
- this.getAccessToken(true);
96
- }, time);
97
- return data;
98
- }
99
- /**
100
- * wss鉴权
101
- * @param isAuth 是否鉴权
102
- */
103
- async wssAuth(isAuth) {
104
- if (!isAuth) {
105
- /** 断连后不需要重新ws鉴权 需要恢复登录态 Session */
106
- const data = {
107
- op: 6 /* Opcode.Resume */,
108
- d: {
109
- token: `QQBot ${this.#access_token}`,
110
- session_id: this.heartbeat.session_id,
111
- seq: this.heartbeat.d || 0,
112
- },
113
- };
114
- this.wss.send(JSON.stringify(data));
115
- return;
116
- }
117
- const intents = Intents(['GROUP_AT_MESSAGE_CREATE']);
118
- if (intents === 0)
119
- throw new Error('intents 无效,请检查传入的事件名称是否正确');
120
- const data = {
121
- op: 2 /* Opcode.Identify */,
122
- d: {
123
- token: `QQBot ${this.#access_token}`,
124
- intents,
125
- shard: [0, 1],
126
- properties: {
127
- $os: 'Linux',
128
- $browser: '@karinjs/adapter-qqbot',
129
- $device: 'karin',
130
- },
131
- },
132
- };
133
- this.wss.send(JSON.stringify(data));
134
- }
135
- /**
136
- * 获取wss地址
137
- */
138
- async getWssUrl() {
139
- const url = `${this.host}/gateway`;
140
- const data = await got.get(url, { headers: this.headers }).json();
141
- this.wssUrl = data.url;
142
- }
143
- /**
144
- * 获取当前Bot信息
145
- */
146
- async getBotInfo() {
147
- const url = `${this.host}/users/@me`;
148
- const data = await got.get(url, { headers: this.headers }).json();
149
- return data;
150
- }
151
- /**
152
- * 创建wss连接
153
- */
154
- createWss(isAuth = true) {
155
- this.wss = new WebSocket(this.wssUrl);
156
- /** 建立连接成功之后 需要鉴权 */
157
- this.wss.once('open', () => this.wssAuth(isAuth));
158
- /** 监听事件 */
159
- this.wss.on('message', (data) => this.payload(data));
160
- /** 监听ws关闭 */
161
- this.wss.once('close', () => {
162
- this.logger('error', 'ws连接关闭,正在重连');
163
- /** 回收监听器 */
164
- this.wss.removeAllListeners();
165
- this.createWss(false);
166
- });
167
- }
168
- payload(payload) {
169
- const data = JSON.parse(payload);
170
- this.logger('debug', `收到事件推送: ${JSON.stringify(data, null, 2)}`);
171
- switch (data.op) {
172
- case 0:
173
- this.intents(data);
174
- this.logger('debug', '事件推送', JSON.stringify(data, null, 2));
175
- break;
176
- case 1 /* Opcode.Heartbeat */:
177
- /** 在指定时间进行回包 */
178
- this.wss.send(JSON.stringify({ op: 11, d: null }));
179
- this.logger('debug', '心跳', JSON.stringify(data, null, 2));
180
- break;
181
- case 2 /* Opcode.Identify */:
182
- this.logger('info', '鉴权成功', JSON.stringify(data, null, 2));
183
- break;
184
- case 6 /* Opcode.Resume */:
185
- this.logger('info', '客户端恢复连接', JSON.stringify(data, null, 2));
186
- break;
187
- case 7 /* Opcode.Reconnect */:
188
- this.logger('info', '服务端要求重新连接', JSON.stringify(data, null, 2));
189
- /** 断开已有ws */
190
- this.wss.close();
191
- break;
192
- case 9 /* Opcode.InvalidSession */:
193
- /** 当 identify 或 resume 的时候,如果参数有错,服务端会返回该消息 */
194
- this.logger('error', '参数错误', JSON.stringify(data, null, 2));
195
- break;
196
- case 10 /* Opcode.Hello */:
197
- /** 更新生命周期 对声明周期减少3秒 防止过时 */
198
- this.heartbeat_interval = data.d.heartbeat_interval - 3000;
199
- this.logger('debug', '心跳生命周期更新', JSON.stringify(data, null, 2));
200
- break;
201
- case 11 /* Opcode.HeartbeatACK */:
202
- this.logger('debug', '心跳回包', JSON.stringify(data, null, 2));
203
- break;
204
- case 12 /* Opcode.HTTPCallbackACK */:
205
- /** 仅用于 http 回调模式的回包,代表机器人收到了平台推送的数据 */
206
- this.logger('debug', '回包', JSON.stringify(data, null, 2));
207
- break;
208
- }
209
- }
210
- /**
211
- * 事件处理
212
- */
213
- async intents(data) {
214
- switch (data.t) {
215
- case "READY" /* EventType.READY */: {
216
- /** 发送第一次心跳 */
217
- this.wss.send(JSON.stringify(this.heartbeat));
218
- /** 更新心跳唯一值 */
219
- this.heartbeat.d = data.s;
220
- /** 记录session_id 用于重新连接 */
221
- this.heartbeat.session_id = data.d.session_id;
222
- /** 心跳 */
223
- setInterval(() => this.wss.send(JSON.stringify(this.heartbeat)), this.heartbeat_interval);
224
- const info = await this.getBotInfo();
225
- this.avatar = info.avatar;
226
- this.nick = data.d.user.username;
227
- this.emit('start');
228
- break;
229
- }
230
- case "GROUP_AT_MESSAGE_CREATE" /* EventType.GROUP_AT_MESSAGE_CREATE */: {
231
- this.heartbeat.d = data.s;
232
- this.emit("GROUP_AT_MESSAGE_CREATE" /* EventType.GROUP_AT_MESSAGE_CREATE */, data);
233
- break;
234
- }
235
- case "C2C_MESSAGE_CREATE" /* EventType.C2C_MESSAGE_CREATE */: {
236
- this.heartbeat.d = data.s;
237
- this.emit("C2C_MESSAGE_CREATE" /* EventType.C2C_MESSAGE_CREATE */, data);
238
- break;
239
- }
240
- // case 'GUILD_CREATE':
241
- // case 'GUILD_UPDATE':
242
- // case 'GUILD_DELETE':
243
- // case 'CHANNEL_CREATE':
244
- // case 'CHANNEL_UPDATE':
245
- // case 'CHANNEL_DELETE':
246
- // case 'GUILD_MEMBER_ADD':
247
- // case 'GUILD_MEMBER_UPDATE':
248
- // case 'GUILD_MEMBER_REMOVE':
249
- // case 'MESSAGE_CREATE':
250
- // case 'MESSAGE_DELETE':
251
- // case 'MESSAGE_REACTION_ADD':
252
- // case 'MESSAGE_REACTION_REMOVE':
253
- // case 'DIRECT_MESSAGE_CREATE':
254
- // case 'DIRECT_MESSAGE_DELETE':
255
- // case 'FRIEND_ADD':
256
- // case 'FRIEND_DEL':
257
- // case 'C2C_MSG_REJECT':
258
- // case 'C2C_MSG_RECEIVE':
259
- // case 'GROUP_ADD_ROBOT':
260
- // case 'GROUP_DEL_ROBOT':
261
- // case 'GROUP_MSG_REJECT':
262
- // case 'GROUP_MSG_RECEIVE':
263
- // case 'INTERACTION_CREATE':
264
- // case 'MESSAGE_AUDIT_PASS':
265
- // case 'MESSAGE_AUDIT_REJECT':
266
- // case 'FORUM_THREAD_CREATE':
267
- // case 'FORUM_THREAD_UPDATE':
268
- // case 'FORUM_THREAD_DELETE':
269
- // case 'FORUM_POST_CREATE':
270
- // case 'FORUM_POST_DELETE':
271
- // case 'FORUM_REPLY_CREATE':
272
- // case 'FORUM_REPLY_DELETE':
273
- // case 'FORUM_PUBLISH_AUDIT_RESULT':
274
- // case 'AUDIO_START':
275
- // case 'AUDIO_FINISH':
276
- // case 'AUDIO_ON_MIC':
277
- // case 'AUDIO_OFF_MIC':
278
- // case 'AT_MESSAGE_CREATE':
279
- // case 'PUBLIC_MESSAGE_DELETE':
280
- // case 'RESUMED: {"op":0,"s":53,"t":"RESUMED","d":""} 在客户端恢复连接时收到
281
- default:
282
- console.log(`Unhandled event: ${JSON.stringify(data)}`);
283
- }
284
- }
285
- /**
286
- * 发送消息
287
- * @param openid 用户、群openid
288
- * @param type 请求路径类型
289
- * @param options 请求参数
290
- */
291
- async sendMessage(openid, type, options) {
292
- const url = this.buildUrl(openid, type, "messages" /* V2ApiType.Message */);
293
- const result = await this.post(url, options);
294
- return JSON.parse(result.body);
295
- }
296
- /**
297
- * 撤回消息
298
- * @param openid 用户、群openid
299
- * @param type 请求路径类型
300
- * @param message_id 消息id
301
- */
302
- async recallMessage(openid, type, message_id) {
303
- const url = this.buildUrl(openid, type, "messages" /* V2ApiType.Message */);
304
- const result = await this.delete(`${url}/${message_id}`);
305
- return result.status === 200;
306
- }
307
- /**
308
- * 构建发送文本消息请求参数
309
- */
310
- buildText(content, id, seq) {
311
- const options = {
312
- content,
313
- msg_type: 0 /* MessageType.Text */,
314
- };
315
- /** id存在 */
316
- if (id) {
317
- const { key, value } = this.buildId(id);
318
- options[key] = value;
319
- options["msg_seq" /* SeqType.MsgSeq */] = seq;
320
- }
321
- return options;
322
- }
323
- /**
324
- * 上传富媒体文件
325
- * @param openid 用户、群openid
326
- * @param type 请求类型
327
- * @param file 文件内容 http、base64、file://
328
- * @param file_type 文件类型
329
- */
330
- async uploadMedia(openid, type, file, file_type) {
331
- const options = await this.buildUploadMedia(file, file_type);
332
- const url = this.buildUrl(openid, type, "files" /* V2ApiType.Files */);
333
- return await got.post(url, options).json();
334
- }
335
- /**
336
- * 构建v2接口请求地址
337
- * @param openid 用户、群openid
338
- * @param type 请求类型
339
- * @param apiType v2接口类型
340
- */
341
- buildUrl(openid, type, apiType) {
342
- return `${this.host}/v2/${type}/${openid}/${apiType}`;
343
- }
344
- /**
345
- * 传入一个msg_id或者event_id 返回其对应的key和value
346
- * @param id 消息id或者事件id
347
- */
348
- buildId(id) {
349
- if (id.startsWith(':')) {
350
- return { key: "event_id" /* IdType.EventID */, value: id };
351
- }
352
- else {
353
- return { key: "msg_id" /* IdType.MsgID */, value: id };
354
- }
355
- }
356
- /**
357
- * 构建发送富媒体请求参数
358
- * 富媒体消息只能单独发送 并且必须进行上传
359
- * @param content 附带的文字信息,仅在file_type为1时有效,其余情况请传空字符串
360
- * @param file_info 富媒体接口返回的file_info
361
- * @param id 消息id或者事件id
362
- */
363
- buildMedia(content, file_info, id, seq) {
364
- const options = {
365
- content,
366
- msg_type: 7 /* MessageType.Media */,
367
- media: {
368
- file_info,
369
- },
370
- };
371
- /** id存在 */
372
- if (id) {
373
- const { key, value } = this.buildId(id);
374
- options[key] = value;
375
- options["msg_seq" /* SeqType.MsgSeq */] = seq;
376
- }
377
- return options;
378
- }
379
- /**
380
- * 构建发送Markdown模板请求参数
381
- * @param custom_template_id 模板id
382
- * @param params 模板参数
383
- * @param id 消息id或者事件id
384
- * @param seq 消息序号
385
- */
386
- buildTplMarkdown(custom_template_id, params, keyboard, id, seq) {
387
- const options = {
388
- msg_type: 2 /* MessageType.Markdown */,
389
- content: '',
390
- keyboard,
391
- markdown: {
392
- custom_template_id,
393
- params,
394
- },
395
- };
396
- /** id存在 */
397
- if (id) {
398
- const { key, value } = this.buildId(id);
399
- options[key] = value;
400
- options["msg_seq" /* SeqType.MsgSeq */] = seq;
401
- }
402
- return options;
403
- }
404
- /**
405
- * 构建发送原生Markdown请求参数
406
- * @param content markdown文本
407
- * @param id 消息id或者事件id
408
- * @param seq 消息序号
409
- */
410
- buildRawMarkdown(content, keyboard, id, seq) {
411
- const options = {
412
- msg_type: 2 /* MessageType.Markdown */,
413
- content: '',
414
- markdown: { content },
415
- keyboard,
416
- };
417
- /** id存在 */
418
- if (id) {
419
- const { key, value } = this.buildId(id);
420
- options[key] = value;
421
- options["msg_seq" /* SeqType.MsgSeq */] = seq;
422
- }
423
- return options;
424
- }
425
- /**
426
- * 构建上传富媒体请求参数
427
- * @param file 文件内容 http、base64、file://
428
- * @param file_type 文件类型
429
- */
430
- async buildUploadMedia(file, file_type) {
431
- /** 非http转base64 */
432
- if (!file.startsWith('http')) {
433
- file = await common.base64(file);
434
- return {
435
- json: {
436
- /** 发base64,无前缀 */
437
- file_data: file,
438
- file_type,
439
- srv_send_msg: false,
440
- },
441
- headers: this.headers,
442
- };
443
- }
444
- return {
445
- json: {
446
- /** http */
447
- url: file,
448
- file_type,
449
- srv_send_msg: false,
450
- },
451
- headers: this.headers,
452
- };
453
- }
454
- }
@@ -1,90 +0,0 @@
1
- import { QQBotApi } from './api.js';
2
- import { PathType, C2CMessageCreateEvent, GroupAtMessageCreateEvent } from '../types/index.js';
3
- import { GlobalCfgType, AccountCfgType } from '../utils/index.js';
4
- import { Contact, LoggerLevel, ReplyReturn, KarinMessage, KarinAdapter, KarinElement } from 'node-karin';
5
- /**
6
- * - QQBot适配器
7
- */
8
- export declare class AdapterQQBot implements KarinAdapter {
9
- #private;
10
- super: QQBotApi;
11
- socket: WebSocket;
12
- account: KarinAdapter['account'];
13
- adapter: KarinAdapter['adapter'];
14
- version: KarinAdapter['version'];
15
- markdown: GlobalCfgType;
16
- constructor(config: AccountCfgType);
17
- init(): Promise<void>;
18
- _sendNsg(e: KarinMessage, elements: Array<KarinElement>, type: PathType, openid: string, message_id?: string): Promise<ReplyReturn>;
19
- get self_id(): string;
20
- logger(level: LoggerLevel, ...args: any[]): void;
21
- GetVersion(): Promise<{
22
- name: string;
23
- app_name: string;
24
- version: string;
25
- }>;
26
- /**
27
- * QQBot转karin
28
- * @return karin格式消息
29
- * */
30
- AdapterConvertKarin(event: C2CMessageCreateEvent | GroupAtMessageCreateEvent): Array<KarinElement>;
31
- /**
32
- * karin转qqbot
33
- * @param data karin格式消息
34
- * */
35
- KarinConvertAdapter(data: Array<KarinElement>, type: PathType, openid: string, message_id?: string): Promise<ReplyReturn>;
36
- SendMessage(contact: Contact, elements: Array<KarinElement>): Promise<ReplyReturn>;
37
- getAvatarUrl(user_id: string, size?: number): string;
38
- getGroupAvatarUrl(): string;
39
- GetCurrentAccount(): Promise<{
40
- account_uid: string;
41
- account_uin: string;
42
- account_name: string;
43
- }>;
44
- RecallMessage(contact: Contact, message_id: string): Promise<boolean>;
45
- GetEssenceMessageList(): Promise<any>;
46
- DownloadForwardMessage(): Promise<any>;
47
- SetEssenceMessage(): Promise<any>;
48
- DeleteEssenceMessage(): Promise<any>;
49
- SetFriendApplyResult(): Promise<any>;
50
- SetGroupApplyResult(): Promise<any>;
51
- SetInvitedJoinGroupResult(): Promise<any>;
52
- ReactMessageWithEmoji(): Promise<any>;
53
- UploadPrivateFile(): Promise<any>;
54
- UploadGroupFile(): Promise<any>;
55
- UploadForwardMessage(): Promise<any>;
56
- sendForwardMessage(): Promise<any>;
57
- SendMessageByResId(): Promise<any>;
58
- GetMessage(): Promise<any>;
59
- GetHistoryMessage(): Promise<any>;
60
- VoteUser(): Promise<any>;
61
- KickMember(): Promise<any>;
62
- BanMember(): Promise<any>;
63
- SetGroupWholeBan(): Promise<any>;
64
- SetGroupAdmin(): Promise<any>;
65
- ModifyMemberCard(): Promise<any>;
66
- ModifyGroupName(): Promise<any>;
67
- LeaveGroup(): Promise<any>;
68
- SetGroupUniqueTitle(): Promise<any>;
69
- GetStrangerProfileCard(): Promise<any>;
70
- GetFriendList(): Promise<any>;
71
- GetGroupInfo(): Promise<any>;
72
- GetGroupList(): Promise<any>;
73
- GetGroupMemberInfo(): Promise<any>;
74
- GetGroupMemberList(): Promise<any>;
75
- GetGroupHonor(): Promise<any>;
76
- DownloadFile(): Promise<any>;
77
- CreateFolder(): Promise<any>;
78
- RenameFolder(): Promise<any>;
79
- DeleteFolde(): Promise<any>;
80
- DeleteFolder(): Promise<any>;
81
- UploadFile(): Promise<any>;
82
- DeleteFile(): Promise<any>;
83
- GetFileSystemInfo(): Promise<any>;
84
- GetFileList(): Promise<any>;
85
- ModifyGroupRemark(): Promise<any>;
86
- GetRemainCountAtAll(): Promise<any>;
87
- GetProhibitedUserList(): Promise<any>;
88
- PokeMember(): Promise<any>;
89
- SetMessageReaded(): Promise<any>;
90
- }