onebots 0.4.22 → 0.4.25

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 (84) hide show
  1. package/README.md +129 -72
  2. package/lib/adapter.d.ts +55 -0
  3. package/lib/adapter.js +60 -0
  4. package/lib/adapters/icqq/index.d.ts +36 -0
  5. package/lib/adapters/icqq/index.js +300 -0
  6. package/lib/adapters/icqq/utils.d.ts +6 -0
  7. package/lib/adapters/icqq/utils.js +26 -0
  8. package/lib/adapters/qq/bot.d.ts +24 -0
  9. package/lib/adapters/qq/bot.js +20 -0
  10. package/lib/adapters/qq/constans.d.ts +69 -0
  11. package/lib/adapters/qq/constans.js +128 -0
  12. package/lib/adapters/qq/elements.d.ts +125 -0
  13. package/lib/adapters/qq/elements.js +8 -0
  14. package/lib/adapters/qq/entries/channel.d.ts +17 -0
  15. package/lib/adapters/qq/entries/channel.js +2 -0
  16. package/lib/adapters/qq/entries/friend.d.ts +8 -0
  17. package/lib/adapters/qq/entries/friend.js +2 -0
  18. package/lib/adapters/qq/entries/group.d.ts +6 -0
  19. package/lib/adapters/qq/entries/group.js +2 -0
  20. package/lib/adapters/qq/entries/groupMember.d.ts +7 -0
  21. package/lib/adapters/qq/entries/groupMember.js +2 -0
  22. package/lib/adapters/qq/entries/guild.d.ts +21 -0
  23. package/lib/adapters/qq/entries/guild.js +2 -0
  24. package/lib/adapters/qq/entries/guildMember.d.ts +9 -0
  25. package/lib/adapters/qq/entries/guildMember.js +2 -0
  26. package/lib/adapters/qq/entries/user.d.ts +9 -0
  27. package/lib/adapters/qq/entries/user.js +2 -0
  28. package/lib/adapters/qq/event.d.ts +28 -0
  29. package/lib/adapters/qq/event.js +24 -0
  30. package/lib/adapters/qq/index.d.ts +35 -0
  31. package/lib/adapters/qq/index.js +170 -0
  32. package/lib/adapters/qq/message.d.ts +83 -0
  33. package/lib/adapters/qq/message.js +272 -0
  34. package/lib/adapters/qq/qqBot.d.ts +122 -0
  35. package/lib/adapters/qq/qqBot.js +438 -0
  36. package/lib/adapters/qq/sessionManager.d.ts +33 -0
  37. package/lib/adapters/qq/sessionManager.js +257 -0
  38. package/lib/adapters/qq/types.d.ts +45 -0
  39. package/lib/adapters/qq/types.js +2 -0
  40. package/lib/adapters/qq/utils.d.ts +12 -0
  41. package/lib/adapters/qq/utils.js +86 -0
  42. package/lib/bin.js +17 -2
  43. package/lib/config.sample.yaml +11 -5
  44. package/lib/db.js +6 -6
  45. package/lib/index.d.ts +5 -5
  46. package/lib/onebot.d.ts +30 -22
  47. package/lib/onebot.js +42 -165
  48. package/lib/server/app.d.ts +22 -12
  49. package/lib/server/app.js +97 -71
  50. package/lib/service/V11/action/common.d.ts +11 -12
  51. package/lib/service/V11/action/common.js +19 -65
  52. package/lib/service/V11/action/friend.d.ts +6 -14
  53. package/lib/service/V11/action/friend.js +6 -16
  54. package/lib/service/V11/action/group.d.ts +20 -23
  55. package/lib/service/V11/action/group.js +20 -30
  56. package/lib/service/V11/action/index.d.ts +1 -1
  57. package/lib/service/V11/db_entities.d.ts +1 -1
  58. package/lib/service/V11/db_entities.js +1 -1
  59. package/lib/service/V11/db_sqlite.d.ts +1 -1
  60. package/lib/service/V11/db_sqlite.js +5 -7
  61. package/lib/service/V11/index.d.ts +46 -14
  62. package/lib/service/V11/index.js +163 -134
  63. package/lib/service/V12/action/common.d.ts +3 -67
  64. package/lib/service/V12/action/common.js +9 -63
  65. package/lib/service/V12/action/friend.d.ts +4 -10
  66. package/lib/service/V12/action/friend.js +4 -12
  67. package/lib/service/V12/action/group.d.ts +19 -21
  68. package/lib/service/V12/action/group.js +19 -27
  69. package/lib/service/V12/action/guild.d.ts +40 -13
  70. package/lib/service/V12/action/guild.js +99 -11
  71. package/lib/service/V12/action/index.d.ts +1 -1
  72. package/lib/service/V12/index.d.ts +37 -13
  73. package/lib/service/V12/index.js +63 -94
  74. package/lib/service.d.ts +7 -2
  75. package/lib/service.js +5 -1
  76. package/lib/types.d.ts +2 -2
  77. package/lib/types.js +3 -3
  78. package/lib/utils.d.ts +7 -4
  79. package/lib/utils.js +18 -1
  80. package/package.json +74 -70
  81. package/lib/service/V11/utils.d.ts +0 -9
  82. package/lib/service/V11/utils.js +0 -31
  83. package/lib/service/V12/utils.d.ts +0 -8
  84. package/lib/service/V12/utils.js +0 -47
@@ -0,0 +1,438 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.QQBot = void 0;
30
+ const axios_1 = __importDefault(require("axios"));
31
+ const log4js = __importStar(require("log4js"));
32
+ const events_1 = require("events");
33
+ const sessionManager_1 = require("./sessionManager");
34
+ const message_1 = require("./message");
35
+ const event_1 = require("./event");
36
+ const onebot_1 = require("../../onebot");
37
+ var UnsupportedMethodError = onebot_1.OneBot.UnsupportedMethodError;
38
+ class QQBot extends events_1.EventEmitter {
39
+ constructor(config) {
40
+ var _a;
41
+ super();
42
+ this.config = config;
43
+ this.sessionManager = new sessionManager_1.SessionManager(this);
44
+ this.request = axios_1.default.create({
45
+ baseURL: this.config.sandbox ? 'https://sandbox.api.sgroup.qq.com' : `https://api.sgroup.qq.com`,
46
+ timeout: 5000,
47
+ headers: {
48
+ 'User-Agent': `BotNodeSDK/0.0.1`
49
+ }
50
+ });
51
+ this.request.interceptors.request.use((config) => {
52
+ config.headers['Authorization'] = `QQBot ${this.sessionManager.access_token}`;
53
+ config.headers['X-Union-Appid'] = this.config.appid;
54
+ if (config['rest']) {
55
+ const restObj = config['rest'];
56
+ delete config['rest'];
57
+ for (const key in restObj) {
58
+ config.url = config.url.replace(':' + key, restObj[key]);
59
+ }
60
+ }
61
+ return config;
62
+ });
63
+ this.logger = log4js.getLogger(`[QQBot:${this.config.appid}]`);
64
+ this.logger.level = (_a = this.config).logLevel || (_a.logLevel = 'info');
65
+ }
66
+ removeAt(payload) {
67
+ const reg = new RegExp(`<@!${this.self_id}>`);
68
+ const isAtMe = reg.test(payload.content) && payload.mentions.some(mention => mention.id === this.self_id);
69
+ if (!isAtMe)
70
+ return;
71
+ payload.content = payload.content.replace(reg, '').trimStart();
72
+ }
73
+ processPayload(event_id, event, payload) {
74
+ let [post_type, ...sub_type] = event.split('.');
75
+ const result = {
76
+ event_id,
77
+ post_type,
78
+ [`${post_type}_type`]: sub_type.join('.'),
79
+ ...payload
80
+ };
81
+ if (['message.group', 'message.private', 'message.guild', 'message.direct'].includes(event)) {
82
+ this.removeAt(payload);
83
+ const [message, brief] = message_1.Message.parse.call(this, payload);
84
+ result.message = message;
85
+ Object.assign(result, {
86
+ user_id: payload.author?.id,
87
+ message_id: payload.event_id || payload.id,
88
+ raw_message: brief,
89
+ sender: {
90
+ user_id: payload.author?.id,
91
+ user_openid: payload.author?.user_openid || payload.author?.member_openid
92
+ },
93
+ timestamp: new Date(payload.timestamp).getTime() / 1000,
94
+ });
95
+ let messageEvent;
96
+ switch (event) {
97
+ case 'message.private':
98
+ messageEvent = new message_1.PrivateMessageEvent(this, result);
99
+ this.logger.info(`recv from User(${result.user_id}): ${result.raw_message}`);
100
+ break;
101
+ case 'message.group':
102
+ messageEvent = new message_1.GroupMessageEvent(this, result);
103
+ this.logger.info(`recv from Group(${result.group_id}): ${result.raw_message}`);
104
+ break;
105
+ case 'message.guild':
106
+ messageEvent = new message_1.GuildMessageEvent(this, result);
107
+ this.logger.info(`recv from Guild(${result.guild_id})Channel(${result.channel_id}): ${result.raw_message}`);
108
+ break;
109
+ case 'message.direct':
110
+ messageEvent = new message_1.DirectMessageEvent(this, result);
111
+ this.logger.info(`recv from Direct(${result.guild_id}): ${result.raw_message}`);
112
+ break;
113
+ }
114
+ return messageEvent;
115
+ }
116
+ return result;
117
+ }
118
+ async getSelfInfo() {
119
+ const { data: result } = await this.request.get('/users/@me');
120
+ return result;
121
+ }
122
+ async getChannelPermissionOfRole(channel_id, role_id) {
123
+ const { data: result } = await this.request.get(`/channels/${channel_id}/roles/${role_id}/permissions`);
124
+ return result;
125
+ }
126
+ async setChannelAnnounce(guild_id, channel_id, message_id) {
127
+ const { data: result } = await this.request.post(`/guilds/${guild_id}/announces`, {
128
+ message_id,
129
+ channel_id
130
+ });
131
+ return result;
132
+ }
133
+ async updateChannelPermissionOfRole(channel_id, role_id, permission) {
134
+ const result = await this.request.put(`/channels/${channel_id}/roles/${role_id}/permissions`, permission);
135
+ return result.status === 204;
136
+ }
137
+ async getChannelMemberPermission(channel_id, member_id) {
138
+ const { data: result } = await this.request.get(`/channels/${channel_id}/members/${member_id}/permissions`);
139
+ return result;
140
+ }
141
+ async updateChannelMemberPermission(channel_id, member_id, permission) {
142
+ const result = await this.request.put(`/channels/${channel_id}/members/${member_id}/permissions`, permission);
143
+ return result.status === 204;
144
+ }
145
+ async getChannelPins(channel_id) {
146
+ const { data: { message_ids = [] } = {} } = await this.request.get(`/channels/${channel_id}/pins`);
147
+ return message_ids;
148
+ }
149
+ async pinChannelMessage(channel_id, message_id) {
150
+ const { data: result } = await this.request.post(`/channels/${channel_id}/pins/${message_id}`);
151
+ return result;
152
+ }
153
+ async unPinChannelMessage(channel_id, message_id) {
154
+ const { data: result } = await this.request.delete(`/channels/${channel_id}/pins/${message_id}`);
155
+ return result;
156
+ }
157
+ async createChannel(guild_id, channelInfo) {
158
+ const { data: result } = await this.request.post(`/guilds/${guild_id}/channels`, channelInfo);
159
+ return result;
160
+ }
161
+ async updateChannel({ channel_id, ...updateInfo }) {
162
+ const { data: result } = await this.request.patch(`/channels/${channel_id}`, updateInfo);
163
+ return result;
164
+ }
165
+ async deleteChannel(channel_id) {
166
+ const result = await this.request.delete(`/channels/${channel_id}`);
167
+ return result.status === 200;
168
+ }
169
+ async getGuildRoles(guild_id) {
170
+ const { data: { roles = [] } = {} } = await this.request.get(`/guilds/${guild_id}/roles`);
171
+ return roles;
172
+ }
173
+ async creatGuildRole(guild_id, role) {
174
+ const { data: result } = await this.request.post(`/guilds/${guild_id}/roles`, role);
175
+ return result.role;
176
+ }
177
+ async updateGuildRole(guild_id, { id, ...role }) {
178
+ const { data: result } = await this.request.patch(`/guilds/${guild_id}/roles/${id}`, role);
179
+ return result.role;
180
+ }
181
+ async deleteGuildRole(role_id) {
182
+ const result = await this.request.delete(`/guilds/{guild_id}/roles/${role_id}`);
183
+ return result.status === 204;
184
+ }
185
+ async getGuildAccessApis(guild_id) {
186
+ const { data: result } = await this.request.get(`/guilds/${guild_id}/api_permission`);
187
+ return result.apis || [];
188
+ }
189
+ async applyGuildAccess(guild_id, channel_id, apiInfo, desc) {
190
+ const { data: result } = await this.request.post(`/guilds/${guild_id}/api_permission/demand`, {
191
+ channel_id,
192
+ api_identify: apiInfo,
193
+ desc,
194
+ });
195
+ return result;
196
+ }
197
+ async unMuteGuild(guild_id) {
198
+ return this.muteGuild(guild_id, 0, 0);
199
+ }
200
+ async muteGuild(guild_id, seconds, end_time) {
201
+ const result = await this.request.put(`/guilds/${guild_id}/mute`, {
202
+ mute_seconds: `${seconds}`,
203
+ mute_end_timestamp: `${end_time}`
204
+ });
205
+ return result.status === 204;
206
+ }
207
+ async unMuteGuildMembers(guild_id, member_ids) {
208
+ return this.muteGuildMembers(guild_id, member_ids, 0, 0);
209
+ }
210
+ async muteGuildMembers(guild_id, member_ids, seconds, end_time) {
211
+ const result = await this.request.put(`/guilds/${guild_id}/mute`, {
212
+ mute_seconds: `${seconds}`,
213
+ mute_end_timestamp: `${end_time}`,
214
+ user_ids: member_ids
215
+ });
216
+ return result.status === 200;
217
+ }
218
+ async addGuildMemberRoles(guild_id, channel_id, member_id, role_id) {
219
+ const result = await this.request.put(`/guilds/${guild_id}/members/${member_id}/roles/${role_id}`, { id: channel_id });
220
+ return result.status === 204;
221
+ }
222
+ async removeGuildMemberRoles(guild_id, channel_id, member_id, role_id) {
223
+ const result = await this.request.delete(`/guilds/${guild_id}/members/${member_id}/roles/${role_id}`, { data: { id: channel_id } });
224
+ return result.status === 204;
225
+ }
226
+ async kickGuildMember(guild_id, member_id, clean = 0, blacklist) {
227
+ const result = await this.request.delete(`/guilds/${guild_id}/members/${member_id}`, { data: {
228
+ add_blacklist: blacklist,
229
+ delete_message_days: clean
230
+ } });
231
+ return result.status === 204;
232
+ }
233
+ async unMuteGuildMember(guild_id, member_id) {
234
+ return this.muteGuildMember(guild_id, member_id, 0, 0);
235
+ }
236
+ async muteGuildMember(guild_id, member_id, seconds, end_time) {
237
+ const result = await this.request.put(`/guilds/${guild_id}/members/${member_id}/mute`, {
238
+ mute_seconds: `${seconds}`,
239
+ mute_end_timestamp: `${end_time}`
240
+ });
241
+ return result.status === 204;
242
+ }
243
+ async getGuildList() {
244
+ const _getGuildList = async (after = undefined) => {
245
+ const res = await this.request.get('/users/@me/guilds', {
246
+ params: {
247
+ after
248
+ }
249
+ }).catch(() => ({ data: [] })); // 私域不支持获取频道列表,做个兼容
250
+ if (!res.data?.length)
251
+ return [];
252
+ const result = (res.data || []).map(g => {
253
+ const { joined_at, ...guild } = g;
254
+ return {
255
+ join_time: new Date(joined_at).getTime() / 1000,
256
+ ...guild
257
+ };
258
+ });
259
+ const last = result[result.length - 1];
260
+ return [...result, ...await _getGuildList(last.id)];
261
+ };
262
+ return await _getGuildList();
263
+ }
264
+ async getGuildMemberList(guild_id) {
265
+ const _getGuildMemberList = async (after = undefined) => {
266
+ const res = await this.request.get(`/guilds/${guild_id}/members`, {
267
+ params: {
268
+ after,
269
+ limit: 100
270
+ }
271
+ }).catch(() => ({ data: [] })); // 公域没有权限,做个兼容
272
+ if (!res.data?.length)
273
+ return [];
274
+ const result = (res.data || []).map(m => {
275
+ const { id: member_id, role, join_time, ...member } = m;
276
+ return {
277
+ member_id,
278
+ role,
279
+ join_time: new Date(join_time).getTime() / 1000,
280
+ ...member
281
+ };
282
+ });
283
+ const last = result[result.length - 1];
284
+ return [...result, ...await _getGuildMemberList(last.user?.id)];
285
+ };
286
+ return await _getGuildMemberList();
287
+ }
288
+ async getGuildMemberInfo(guild_id, member_id) {
289
+ const { data: result } = await this.request.get(`/guilds/${guild_id}/members/${member_id}`);
290
+ return result;
291
+ }
292
+ async getChannelInfo(channel_id) {
293
+ const { data: result } = await this.request.get(`/channels/${channel_id}`);
294
+ return result;
295
+ }
296
+ async getGroupMemberList(group_id) {
297
+ throw UnsupportedMethodError;
298
+ }
299
+ async getGroupMemberInfo(group_id, member_id) {
300
+ throw UnsupportedMethodError;
301
+ }
302
+ async getFriendList() {
303
+ throw UnsupportedMethodError;
304
+ }
305
+ async getFriendInfo(friend_id) {
306
+ throw UnsupportedMethodError;
307
+ }
308
+ async getChannelList(guild_id) {
309
+ const { data: result = [] } = await this.request.get(`/guilds/${guild_id}/channels`);
310
+ return result;
311
+ }
312
+ async sendPrivateMessage(user_id, message, source) {
313
+ const { hasMessages, messages, brief, hasFiles, files } = await message_1.Message.format.call(this, message, source);
314
+ let message_id = '';
315
+ if (hasMessages) {
316
+ let { data: { id } } = await this.request.post(`/v2/users/${user_id}/messages`, messages);
317
+ message_id = id;
318
+ }
319
+ if (hasFiles) {
320
+ let { data: { id } } = await this.request.post(`/v2/users/${user_id}/files`, files);
321
+ if (message_id)
322
+ message_id = `${message_id}|`;
323
+ message_id = message_id + id;
324
+ }
325
+ this.logger.info(`send to User(${user_id}): ${brief}`);
326
+ return {
327
+ message_id,
328
+ timestamp: new Date().getTime() / 1000
329
+ };
330
+ }
331
+ async createDirectSession(guild_id, user_id) {
332
+ const { data: result } = await this.request.post(`/users/@me/dms`, {
333
+ recipient_id: user_id,
334
+ source_guild_id: guild_id
335
+ });
336
+ return result;
337
+ }
338
+ async sendDirectMessage(guild_id, message, source) {
339
+ const { hasMessages, messages, brief, hasFiles, files } = await message_1.Message.format.call(this, message, source);
340
+ let message_id = '';
341
+ if (hasMessages) {
342
+ let { data: { id } } = await this.request.post(`/dms/${guild_id}/messages`, messages);
343
+ message_id = id;
344
+ }
345
+ if (hasFiles) {
346
+ let { data: { id } } = await this.request.post(`/dms/${guild_id}/files`, files);
347
+ if (message_id)
348
+ message_id = `${message_id}|`;
349
+ message_id = message_id + id;
350
+ }
351
+ this.logger.info(`send to Direct(${guild_id}): ${brief}`);
352
+ return {
353
+ message_id,
354
+ timestamp: new Date().getTime() / 1000
355
+ };
356
+ }
357
+ async sendGuildMessage(channel_id, message, source) {
358
+ const { hasMessages, messages, brief, hasFiles, files } = await message_1.Message.format.call(this, message, source);
359
+ let message_id = '';
360
+ if (hasMessages) {
361
+ let { data: { id } } = await this.request.post(`/channels/${channel_id}/messages`, messages);
362
+ message_id = id;
363
+ }
364
+ if (hasFiles) {
365
+ console.log(files);
366
+ let { data: { id } } = await this.request.post(`/channels/${channel_id}/files`, files);
367
+ if (message_id)
368
+ message_id = `${message_id}|`;
369
+ message_id = message_id + id;
370
+ }
371
+ this.logger.info(`send to Channel(${channel_id}): ${brief}`);
372
+ return {
373
+ message_id,
374
+ timestamp: new Date().getTime() / 1000
375
+ };
376
+ }
377
+ async sendGroupMessage(group_id, message, source) {
378
+ const { hasMessages, messages, brief, hasFiles, files } = await message_1.Message.format.call(this, message, source);
379
+ let message_id = '';
380
+ if (hasMessages) {
381
+ const { data: result } = await this.request.post(`/v2/groups/${group_id}/messages`, messages);
382
+ console.log(result);
383
+ message_id = result.seq;
384
+ }
385
+ if (hasFiles) {
386
+ let { data: { id } } = await this.request.post(`/v2/groups/${group_id}/files`, files);
387
+ if (message_id)
388
+ message_id = `${message_id}|`;
389
+ message_id = message_id + id;
390
+ }
391
+ this.logger.info(`send to Group(${group_id}): ${brief}`);
392
+ return {
393
+ message_id,
394
+ timestamp: new Date().getTime() / 1000
395
+ };
396
+ }
397
+ dispatchEvent(event, wsRes) {
398
+ this.logger.debug(event, wsRes);
399
+ const payload = wsRes.d;
400
+ const event_id = wsRes.id || '';
401
+ if (!payload || !event)
402
+ return;
403
+ const transformEvent = event_1.QQEvent[event] || 'system';
404
+ this.em(transformEvent, this.processPayload(event_id, transformEvent, payload));
405
+ }
406
+ em(event, payload) {
407
+ const eventNames = event.split('.');
408
+ const [post_type, detail_type, ...sub_type] = eventNames;
409
+ Object.assign(payload, {
410
+ post_type,
411
+ [`${post_type}_type`]: detail_type,
412
+ sub_type: sub_type.join('.'),
413
+ ...payload
414
+ });
415
+ let prefix = '';
416
+ while (eventNames.length) {
417
+ let fullEventName = `${prefix}.${eventNames.shift()}`;
418
+ if (fullEventName.startsWith('.'))
419
+ fullEventName = fullEventName.slice(1);
420
+ this.emit(fullEventName, payload);
421
+ prefix = fullEventName;
422
+ }
423
+ }
424
+ }
425
+ exports.QQBot = QQBot;
426
+ (function (QQBot) {
427
+ function getFullTargetId(message) {
428
+ switch (message.sub_type) {
429
+ case "private":
430
+ return message.user_id;
431
+ case "group":
432
+ return `${message.group_id}:${message.user_id}`;
433
+ case "guild":
434
+ return `${message.guild_id}:${message.channel_id}:${message.user_id}`;
435
+ }
436
+ }
437
+ QQBot.getFullTargetId = getFullTargetId;
438
+ })(QQBot || (exports.QQBot = QQBot = {}));
@@ -0,0 +1,33 @@
1
+ /// <reference types="node" />
2
+ import { QQBot } from "./qqBot";
3
+ import { EventEmitter } from "events";
4
+ import { OpCode } from "./constans";
5
+ export declare const MAX_RETRY = 10;
6
+ export declare class SessionManager extends EventEmitter {
7
+ private bot;
8
+ access_token: string;
9
+ wsUrl: string;
10
+ retry: number;
11
+ alive?: boolean;
12
+ heartbeatInterval: number;
13
+ isReconnect: boolean;
14
+ sessionRecord: {
15
+ sessionID: string;
16
+ seq: number;
17
+ };
18
+ heartbeatParam: {
19
+ op: OpCode;
20
+ d: any;
21
+ };
22
+ get token(): string;
23
+ constructor(bot: QQBot);
24
+ getAccessToken(): Promise<QQBot.Token>;
25
+ getWsUrl(): Promise<void>;
26
+ getValidIntends(): number;
27
+ start(): Promise<void>;
28
+ connect(): void;
29
+ reconnectWs(): void;
30
+ sendWs(msg: unknown): void;
31
+ authWs(): void;
32
+ startListen(): void;
33
+ }