disgroove 2.2.7-dev.fca4921 → 3.0.0-dev.513aea4
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.
- package/dist/lib/Client.d.ts +291 -254
- package/dist/lib/Client.js +554 -460
- package/dist/lib/constants.d.ts +29 -21
- package/dist/lib/constants.js +33 -24
- package/dist/lib/gateway/Shard.d.ts +7 -4
- package/dist/lib/gateway/Shard.js +275 -190
- package/dist/lib/index.d.ts +5 -1
- package/dist/lib/index.js +5 -1
- package/dist/lib/rest/Endpoints.d.ts +95 -91
- package/dist/lib/rest/Endpoints.js +111 -102
- package/dist/lib/rest/RequestManager.d.ts +1 -3
- package/dist/lib/transformers/ApplicationCommands.js +4 -4
- package/dist/lib/transformers/Applications.d.ts +2 -0
- package/dist/lib/transformers/Applications.js +110 -4
- package/dist/lib/transformers/AuditLogs.js +10 -10
- package/dist/lib/transformers/AutoModeration.js +6 -6
- package/dist/lib/transformers/Channels.js +16 -16
- package/dist/lib/transformers/Components.d.ts +13 -3
- package/dist/lib/transformers/Components.js +283 -156
- package/dist/lib/transformers/Entitlements.d.ts +2 -2
- package/dist/lib/transformers/Entitlements.js +16 -16
- package/dist/lib/transformers/GuildScheduledEvents.js +8 -8
- package/dist/lib/transformers/GuildTemplates.js +4 -4
- package/dist/lib/transformers/Guilds.js +28 -28
- package/dist/lib/transformers/Interactions.js +300 -55
- package/dist/lib/transformers/Lobbies.d.ts +7 -0
- package/dist/lib/transformers/Lobbies.js +38 -0
- package/dist/lib/transformers/Messages.d.ts +4 -3
- package/dist/lib/transformers/Messages.js +38 -52
- package/dist/lib/transformers/Polls.js +2 -2
- package/dist/lib/transformers/Presences.js +6 -6
- package/dist/lib/transformers/Roles.js +8 -8
- package/dist/lib/transformers/SKUs.js +2 -2
- package/dist/lib/transformers/Soundboards.js +6 -6
- package/dist/lib/transformers/StageInstances.js +6 -6
- package/dist/lib/transformers/Stickers.js +3 -3
- package/dist/lib/transformers/Subscriptions.js +8 -8
- package/dist/lib/transformers/Teams.js +4 -4
- package/dist/lib/transformers/Users.js +6 -6
- package/dist/lib/transformers/Voice.js +8 -8
- package/dist/lib/transformers/Webhooks.js +6 -6
- package/dist/lib/transformers/index.d.ts +2 -1
- package/dist/lib/transformers/index.js +2 -1
- package/dist/lib/types/application-command.d.ts +9 -4
- package/dist/lib/types/application-role-connection-metadata.d.ts +1 -0
- package/dist/lib/types/application.d.ts +12 -7
- package/dist/lib/types/audit-log.d.ts +9 -5
- package/dist/lib/types/auto-moderation.d.ts +7 -3
- package/dist/lib/types/channel.d.ts +17 -23
- package/dist/lib/types/common.d.ts +2 -0
- package/dist/lib/types/components.d.ts +478 -0
- package/dist/lib/types/components.js +2 -0
- package/dist/lib/types/emoji.d.ts +1 -0
- package/dist/lib/types/entitlements.d.ts +5 -4
- package/dist/lib/types/gateway-events.d.ts +203 -130
- package/dist/lib/types/guild-scheduled-event.d.ts +10 -5
- package/dist/lib/types/guild-template.d.ts +3 -2
- package/dist/lib/types/guild.d.ts +40 -22
- package/dist/lib/types/interaction.d.ts +35 -18
- package/dist/lib/types/invite.d.ts +5 -2
- package/dist/lib/types/lobby.d.ts +31 -0
- package/dist/lib/types/lobby.js +2 -0
- package/dist/lib/types/message-components.d.ts +334 -118
- package/dist/lib/types/message.d.ts +32 -20
- package/dist/lib/types/poll.d.ts +7 -1
- package/dist/lib/types/role.d.ts +8 -5
- package/dist/lib/types/sku.d.ts +2 -1
- package/dist/lib/types/soundboard.d.ts +4 -3
- package/dist/lib/types/stage-instance.d.ts +4 -3
- package/dist/lib/types/sticker.d.ts +8 -5
- package/dist/lib/types/subscription.d.ts +6 -5
- package/dist/lib/types/team.d.ts +4 -2
- package/dist/lib/types/user.d.ts +10 -3
- package/dist/lib/types/voice.d.ts +6 -4
- package/dist/lib/types/webhook.d.ts +4 -3
- package/dist/lib/utils/CDN.d.ts +22 -22
- package/dist/lib/utils/CDN.js +22 -22
- package/dist/lib/utils/formatters.d.ts +7 -7
- package/dist/lib/utils/formatters.js +19 -19
- package/dist/package.json +4 -4
- package/package.json +4 -4
|
@@ -37,63 +37,79 @@ class Shard {
|
|
|
37
37
|
heartbeatInterval;
|
|
38
38
|
client;
|
|
39
39
|
ws;
|
|
40
|
-
|
|
40
|
+
sessionId;
|
|
41
41
|
resumeGatewayURL;
|
|
42
|
+
sequence;
|
|
42
43
|
constructor(id, client) {
|
|
43
44
|
this.id = id;
|
|
44
45
|
this.heartbeatInterval = null;
|
|
45
46
|
this.client = client;
|
|
46
|
-
this.ws = new ws_1.default("wss://gateway.discord.gg/?v=10&encoding=json", client.ws);
|
|
47
|
-
this.
|
|
47
|
+
this.ws = new ws_1.default("wss://gateway.discord.gg/?v=10&encoding=json", this.client.ws);
|
|
48
|
+
this.sessionId = null;
|
|
48
49
|
this.resumeGatewayURL = null;
|
|
50
|
+
this.sequence = null;
|
|
49
51
|
}
|
|
50
52
|
/** https://discord.com/developers/docs/topics/gateway#connections */
|
|
51
|
-
connect() {
|
|
52
|
-
this.ws
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
connect(reconnect) {
|
|
54
|
+
if (this.ws) {
|
|
55
|
+
this.ws.on("open", () => this.onWebSocketOpen(reconnect));
|
|
56
|
+
this.ws.on("message", (data) => this.onWebSocketMessage(data));
|
|
57
|
+
this.ws.on("error", (err) => this.onWebSocketError(err));
|
|
58
|
+
this.ws.on("close", (code, reason) => this.onWebSocketClose(code, reason));
|
|
59
|
+
}
|
|
56
60
|
}
|
|
57
|
-
/** https://discord.com/developers/docs/
|
|
61
|
+
/** https://discord.com/developers/docs/events/gateway#initiating-a-disconnect */
|
|
58
62
|
disconnect() {
|
|
59
|
-
if (this.
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
if (this.ws) {
|
|
64
|
+
if (this.heartbeatInterval) {
|
|
65
|
+
clearInterval(this.heartbeatInterval);
|
|
66
|
+
this.heartbeatInterval = null;
|
|
67
|
+
}
|
|
68
|
+
if (this.ws.readyState !== ws_1.default.CLOSED) {
|
|
69
|
+
this.ws.removeAllListeners();
|
|
70
|
+
this.ws.close(1000, "Session Invalidated - Disconnect");
|
|
71
|
+
this.ws = null;
|
|
72
|
+
}
|
|
62
73
|
}
|
|
63
74
|
}
|
|
64
75
|
/** https://discord.com/developers/docs/topics/gateway-events#heartbeat */
|
|
65
76
|
heartbeat(lastSequence) {
|
|
66
|
-
this.ws.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
77
|
+
if (this.ws && this.ws.readyState === ws_1.default.OPEN) {
|
|
78
|
+
this.ws.send(JSON.stringify({
|
|
79
|
+
op: constants_1.GatewayOPCodes.Heartbeat,
|
|
80
|
+
d: lastSequence,
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
70
83
|
}
|
|
71
84
|
/** https://discord.com/developers/docs/topics/gateway-events#identify */
|
|
72
85
|
identify(options) {
|
|
73
|
-
this.ws.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
if (this.ws && this.ws.readyState === ws_1.default.OPEN) {
|
|
87
|
+
this.ws.send(JSON.stringify({
|
|
88
|
+
op: constants_1.GatewayOPCodes.Identify,
|
|
89
|
+
d: {
|
|
90
|
+
token: options.token,
|
|
91
|
+
properties: {
|
|
92
|
+
os: options.properties.os,
|
|
93
|
+
browser: options.properties.browser,
|
|
94
|
+
device: options.properties.device,
|
|
95
|
+
},
|
|
96
|
+
compress: options.compress,
|
|
97
|
+
large_threshold: options.largeThreshold,
|
|
98
|
+
shard: options.shard,
|
|
99
|
+
presence: options.presence,
|
|
100
|
+
intents: options.intents,
|
|
81
101
|
},
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
shard: options.shard,
|
|
85
|
-
presence: options.presence,
|
|
86
|
-
intents: options.intents,
|
|
87
|
-
},
|
|
88
|
-
}));
|
|
102
|
+
}));
|
|
103
|
+
}
|
|
89
104
|
}
|
|
90
105
|
onDispatch(packet) {
|
|
106
|
+
this.sequence = packet.s;
|
|
91
107
|
this.client.emit("dispatch", packet, this.id);
|
|
92
108
|
switch (packet.t) {
|
|
93
109
|
case constants_1.GatewayEvents.Ready:
|
|
94
110
|
{
|
|
95
|
-
this.
|
|
96
|
-
this.resumeGatewayURL = packet.d.resume_gateway_url
|
|
111
|
+
this.sessionId = packet.d.session_id;
|
|
112
|
+
this.resumeGatewayURL = `${packet.d.resume_gateway_url}?v=10&encoding=json`;
|
|
97
113
|
this.client.user = transformers_1.Users.userFromRaw(packet.d.user);
|
|
98
114
|
this.client.application = packet.d.application;
|
|
99
115
|
this.client.emit("ready");
|
|
@@ -102,6 +118,20 @@ class Shard {
|
|
|
102
118
|
case constants_1.GatewayEvents.Resumed:
|
|
103
119
|
this.client.emit("resumed");
|
|
104
120
|
break;
|
|
121
|
+
case constants_1.GatewayEvents.RateLimited:
|
|
122
|
+
switch (packet.d.opcode) {
|
|
123
|
+
case constants_1.GatewayOPCodes.RequestGuildMembers: {
|
|
124
|
+
this.client.emit("rateLimited", {
|
|
125
|
+
opcode: constants_1.GatewayOPCodes.RequestGuildMembers,
|
|
126
|
+
retryAfter: packet.d.retry_after,
|
|
127
|
+
meta: {
|
|
128
|
+
guildId: packet.d.meta.guild_id,
|
|
129
|
+
nonce: packet.d.nonce,
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
break;
|
|
105
135
|
case constants_1.GatewayEvents.ApplicationCommandPermissionsUpdate:
|
|
106
136
|
this.client.emit("applicationCommandPermissionsUpdate", transformers_1.Guilds.guildApplicationCommandPermissionsFromRaw(packet.d));
|
|
107
137
|
break;
|
|
@@ -116,21 +146,21 @@ class Shard {
|
|
|
116
146
|
break;
|
|
117
147
|
case constants_1.GatewayEvents.AutoModerationActionExecution:
|
|
118
148
|
this.client.emit("autoModerationActionExecution", {
|
|
119
|
-
|
|
149
|
+
guildId: packet.d.guild_id,
|
|
120
150
|
action: {
|
|
121
151
|
type: packet.d.action.type,
|
|
122
152
|
metadata: {
|
|
123
|
-
|
|
153
|
+
channelId: packet.d.action.metadata.channel_id,
|
|
124
154
|
durationSeconds: packet.d.action.metadata.duration_seconds,
|
|
125
155
|
customMessage: packet.d.action.metadata.custom_message,
|
|
126
156
|
},
|
|
127
157
|
},
|
|
128
|
-
|
|
158
|
+
ruleId: packet.d.rule_id,
|
|
129
159
|
ruleTriggerType: packet.d.rule_trigger_type,
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
160
|
+
userId: packet.d.user_id,
|
|
161
|
+
channelId: packet.d.channel_id,
|
|
162
|
+
messageId: packet.d.message_id,
|
|
163
|
+
alertSystemMessageId: packet.d.alert_system_message_id,
|
|
134
164
|
content: packet.d.content,
|
|
135
165
|
matchedKeyword: packet.d.matched_keyword,
|
|
136
166
|
matchedContent: packet.d.matched_content,
|
|
@@ -147,8 +177,8 @@ class Shard {
|
|
|
147
177
|
break;
|
|
148
178
|
case constants_1.GatewayEvents.ChannelPinsUpdate:
|
|
149
179
|
this.client.emit("channelPinsUpdate", {
|
|
150
|
-
|
|
151
|
-
|
|
180
|
+
guildId: packet.d.guild_id,
|
|
181
|
+
channelId: packet.d.channel_id,
|
|
152
182
|
lastPinTimestamp: packet.d.last_pin_timestamp,
|
|
153
183
|
});
|
|
154
184
|
break;
|
|
@@ -163,8 +193,8 @@ class Shard {
|
|
|
163
193
|
break;
|
|
164
194
|
case constants_1.GatewayEvents.ThreadListSync:
|
|
165
195
|
this.client.emit("threadListSync", {
|
|
166
|
-
|
|
167
|
-
|
|
196
|
+
guildId: packet.d.guild_id,
|
|
197
|
+
channelIds: packet.d.channel_ids,
|
|
168
198
|
threads: packet.d.threads.map((thread) => transformers_1.Channels.channelFromRaw(thread)),
|
|
169
199
|
members: packet.d.members.map((threadMember) => transformers_1.Channels.threadMemberFromRaw(threadMember)),
|
|
170
200
|
});
|
|
@@ -172,22 +202,22 @@ class Shard {
|
|
|
172
202
|
case constants_1.GatewayEvents.ThreadMemberUpdate:
|
|
173
203
|
this.client.emit("threadMemberUpdate", {
|
|
174
204
|
id: packet.d.id,
|
|
175
|
-
|
|
205
|
+
userId: packet.d.user_id,
|
|
176
206
|
joinTimestamp: packet.d.join_timestamp,
|
|
177
207
|
flags: packet.d.flags,
|
|
178
208
|
member: packet.d.member !== undefined
|
|
179
209
|
? transformers_1.Guilds.guildMemberFromRaw(packet.d.member)
|
|
180
210
|
: undefined,
|
|
181
|
-
|
|
211
|
+
guildId: packet.d.guild_id,
|
|
182
212
|
});
|
|
183
213
|
break;
|
|
184
214
|
case constants_1.GatewayEvents.ThreadMembersUpdate:
|
|
185
215
|
this.client.emit("threadMembersUpdate", {
|
|
186
216
|
id: packet.d.id,
|
|
187
|
-
|
|
217
|
+
guildId: packet.d.guild_id,
|
|
188
218
|
memberCount: packet.d.member_count,
|
|
189
219
|
addedMembers: packet.d.members.map((threadMember) => transformers_1.Channels.threadMemberFromRaw(threadMember)),
|
|
190
|
-
|
|
220
|
+
removedMemberIds: packet.d.removed_member_ids,
|
|
191
221
|
});
|
|
192
222
|
break;
|
|
193
223
|
case constants_1.GatewayEvents.EntitlementCreate:
|
|
@@ -225,18 +255,18 @@ class Shard {
|
|
|
225
255
|
case constants_1.GatewayEvents.GuildAuditLogEntryCreate:
|
|
226
256
|
this.client.emit("guildAuditLogEntryCreate", {
|
|
227
257
|
...transformers_1.AuditLogs.auditLogEntryFromRaw(packet.d),
|
|
228
|
-
|
|
258
|
+
guildId: packet.d.guild_id,
|
|
229
259
|
});
|
|
230
260
|
break;
|
|
231
261
|
case constants_1.GatewayEvents.GuildBanAdd:
|
|
232
262
|
this.client.emit("guildBanAdd", {
|
|
233
|
-
|
|
263
|
+
guildId: packet.d.guild_id,
|
|
234
264
|
user: transformers_1.Users.userFromRaw(packet.d.user),
|
|
235
265
|
});
|
|
236
266
|
break;
|
|
237
267
|
case constants_1.GatewayEvents.GuildBanRemove:
|
|
238
268
|
this.client.emit("guildBanRemove", {
|
|
239
|
-
|
|
269
|
+
guildId: packet.d.guild_id,
|
|
240
270
|
user: transformers_1.Users.userFromRaw(packet.d.user),
|
|
241
271
|
});
|
|
242
272
|
break;
|
|
@@ -252,18 +282,18 @@ class Shard {
|
|
|
252
282
|
case constants_1.GatewayEvents.GuildMemberAdd:
|
|
253
283
|
this.client.emit("guildMemberAdd", {
|
|
254
284
|
...transformers_1.Guilds.guildMemberFromRaw(packet.d),
|
|
255
|
-
|
|
285
|
+
guildId: packet.d.guild_id,
|
|
256
286
|
});
|
|
257
287
|
break;
|
|
258
288
|
case constants_1.GatewayEvents.GuildMemberRemove:
|
|
259
289
|
this.client.emit("guildMemberRemove", {
|
|
260
|
-
|
|
290
|
+
guildId: packet.d.guild_id,
|
|
261
291
|
user: transformers_1.Users.userFromRaw(packet.d.user),
|
|
262
292
|
});
|
|
263
293
|
break;
|
|
264
294
|
case constants_1.GatewayEvents.GuildMemberUpdate:
|
|
265
295
|
this.client.emit("guildMemberUpdate", {
|
|
266
|
-
|
|
296
|
+
guildId: packet.d.guild_id,
|
|
267
297
|
roles: packet.d.roles,
|
|
268
298
|
user: transformers_1.Users.userFromRaw(packet.d.user),
|
|
269
299
|
nick: packet.d.nick,
|
|
@@ -279,14 +309,14 @@ class Shard {
|
|
|
279
309
|
avatarDecorationData: packet.d.avatar_decoration_data !== undefined
|
|
280
310
|
? {
|
|
281
311
|
asset: packet.d.asset,
|
|
282
|
-
|
|
312
|
+
skuId: packet.d.sku_id,
|
|
283
313
|
}
|
|
284
314
|
: undefined,
|
|
285
315
|
});
|
|
286
316
|
break;
|
|
287
317
|
case constants_1.GatewayEvents.GuildMembersChunk:
|
|
288
318
|
this.client.emit("guildMembersChunk", {
|
|
289
|
-
|
|
319
|
+
guildId: packet.d.guild_id,
|
|
290
320
|
members: packet.d.members.map((guildMember) => transformers_1.Guilds.guildMemberFromRaw(guildMember)),
|
|
291
321
|
chunkIndex: packet.d.chunk_index,
|
|
292
322
|
chunkCount: packet.d.chunk_count,
|
|
@@ -327,8 +357,8 @@ class Shard {
|
|
|
327
357
|
break;
|
|
328
358
|
case constants_1.GatewayEvents.GuildSoundboardSoundDelete:
|
|
329
359
|
this.client.emit("guildSoundboardSoundDelete", {
|
|
330
|
-
|
|
331
|
-
|
|
360
|
+
soundId: packet.d.sound_id,
|
|
361
|
+
guildId: packet.d.guild_id,
|
|
332
362
|
});
|
|
333
363
|
break;
|
|
334
364
|
case constants_1.GatewayEvents.GuildSoundboardSoundsUpdate:
|
|
@@ -340,20 +370,20 @@ class Shard {
|
|
|
340
370
|
case constants_1.GatewayEvents.IntegrationCreate:
|
|
341
371
|
this.client.emit("integrationCreate", {
|
|
342
372
|
...transformers_1.Guilds.integrationFromRaw(packet.d),
|
|
343
|
-
|
|
373
|
+
guildId: packet.d.guild_id,
|
|
344
374
|
});
|
|
345
375
|
break;
|
|
346
376
|
case constants_1.GatewayEvents.IntegrationUpdate:
|
|
347
377
|
this.client.emit("integrationUpdate", {
|
|
348
378
|
...transformers_1.Guilds.integrationFromRaw(packet.d),
|
|
349
|
-
|
|
379
|
+
guildId: packet.d.guild_id,
|
|
350
380
|
});
|
|
351
381
|
break;
|
|
352
382
|
case constants_1.GatewayEvents.IntegrationDelete:
|
|
353
383
|
this.client.emit("integrationDelete", {
|
|
354
384
|
id: packet.d.id,
|
|
355
|
-
|
|
356
|
-
|
|
385
|
+
guildId: packet.d.guild_id,
|
|
386
|
+
applicationId: packet.d.application_id,
|
|
357
387
|
});
|
|
358
388
|
break;
|
|
359
389
|
case constants_1.GatewayEvents.InteractionCreate:
|
|
@@ -361,10 +391,10 @@ class Shard {
|
|
|
361
391
|
break;
|
|
362
392
|
case constants_1.GatewayEvents.InviteCreate:
|
|
363
393
|
this.client.emit("inviteCreate", {
|
|
364
|
-
|
|
394
|
+
channelId: packet.d.channel_id,
|
|
365
395
|
code: packet.d.code,
|
|
366
396
|
createdAt: packet.d.created_at,
|
|
367
|
-
|
|
397
|
+
guildId: packet.d.guild_id,
|
|
368
398
|
inviter: packet.d.inviter !== undefined
|
|
369
399
|
? transformers_1.Users.userFromRaw(packet.d.inviter)
|
|
370
400
|
: undefined,
|
|
@@ -379,19 +409,20 @@ class Shard {
|
|
|
379
409
|
: undefined,
|
|
380
410
|
temporary: packet.d.temporary,
|
|
381
411
|
uses: packet.d.uses,
|
|
412
|
+
expiresAt: packet.d.expires_at,
|
|
382
413
|
});
|
|
383
414
|
break;
|
|
384
415
|
case constants_1.GatewayEvents.InviteDelete:
|
|
385
416
|
this.client.emit("inviteDelete", {
|
|
386
|
-
|
|
387
|
-
|
|
417
|
+
channelId: packet.d.channel_id,
|
|
418
|
+
guildId: packet.d.guild_id,
|
|
388
419
|
code: packet.d.code,
|
|
389
420
|
});
|
|
390
421
|
break;
|
|
391
422
|
case constants_1.GatewayEvents.MessageCreate:
|
|
392
423
|
this.client.emit("messageCreate", {
|
|
393
424
|
...transformers_1.Messages.messageFromRaw(packet.d),
|
|
394
|
-
|
|
425
|
+
guildId: packet.d.guild_id,
|
|
395
426
|
member: packet.d.member !== undefined
|
|
396
427
|
? transformers_1.Guilds.guildMemberFromRaw(packet.d.member)
|
|
397
428
|
: undefined,
|
|
@@ -404,28 +435,28 @@ class Shard {
|
|
|
404
435
|
case constants_1.GatewayEvents.MessageDelete:
|
|
405
436
|
this.client.emit("messageDelete", {
|
|
406
437
|
id: packet.d.id,
|
|
407
|
-
|
|
408
|
-
|
|
438
|
+
channelId: packet.d.channel_id,
|
|
439
|
+
guildId: packet.d.guild_id,
|
|
409
440
|
});
|
|
410
441
|
break;
|
|
411
442
|
case constants_1.GatewayEvents.MessageDeleteBulk:
|
|
412
443
|
this.client.emit("messageDeleteBulk", {
|
|
413
444
|
ids: packet.d.ids,
|
|
414
|
-
|
|
415
|
-
|
|
445
|
+
channelId: packet.d.channel_id,
|
|
446
|
+
guildId: packet.d.guild_id,
|
|
416
447
|
});
|
|
417
448
|
break;
|
|
418
449
|
case constants_1.GatewayEvents.MessageReactionAdd:
|
|
419
450
|
this.client.emit("messageReactionAdd", {
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
451
|
+
userId: packet.d.user_id,
|
|
452
|
+
channelId: packet.d.user_id,
|
|
453
|
+
messageId: packet.d.user_id,
|
|
454
|
+
guildId: packet.d.user_id,
|
|
424
455
|
member: packet.d.member !== undefined
|
|
425
456
|
? transformers_1.Guilds.guildMemberFromRaw(packet.d.member)
|
|
426
457
|
: undefined,
|
|
427
458
|
emoji: transformers_1.Emojis.emojiFromRaw(packet.d.emoji),
|
|
428
|
-
|
|
459
|
+
messageAuthorId: packet.d.message_author_id,
|
|
429
460
|
burst: packet.d.burst,
|
|
430
461
|
burstColors: packet.d.burst_colors,
|
|
431
462
|
type: packet.d.type,
|
|
@@ -433,10 +464,10 @@ class Shard {
|
|
|
433
464
|
break;
|
|
434
465
|
case constants_1.GatewayEvents.MessageReactionRemove:
|
|
435
466
|
this.client.emit("messageReactionRemove", {
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
467
|
+
userId: packet.d.user_id,
|
|
468
|
+
channelId: packet.d.user_id,
|
|
469
|
+
messageId: packet.d.user_id,
|
|
470
|
+
guildId: packet.d.user_id,
|
|
440
471
|
emoji: transformers_1.Emojis.emojiFromRaw(packet.d.emoji),
|
|
441
472
|
burst: packet.d.burst,
|
|
442
473
|
type: packet.d.type,
|
|
@@ -444,16 +475,16 @@ class Shard {
|
|
|
444
475
|
break;
|
|
445
476
|
case constants_1.GatewayEvents.MessageReactionRemoveAll:
|
|
446
477
|
this.client.emit("messageReactionRemoveAll", {
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
478
|
+
channelId: packet.d.channel_id,
|
|
479
|
+
messageId: packet.d.message_id,
|
|
480
|
+
guildId: packet.d.guild_id,
|
|
450
481
|
});
|
|
451
482
|
break;
|
|
452
483
|
case constants_1.GatewayEvents.MessageReactionRemoveEmoji:
|
|
453
484
|
this.client.emit("messageReactionRemoveEmoji", {
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
485
|
+
channelId: packet.d.channel_id,
|
|
486
|
+
guildId: packet.d.guild_id,
|
|
487
|
+
messageId: packet.d.message_id,
|
|
457
488
|
emoji: transformers_1.Emojis.emojiFromRaw(packet.d.emoji),
|
|
458
489
|
});
|
|
459
490
|
break;
|
|
@@ -471,9 +502,9 @@ class Shard {
|
|
|
471
502
|
break;
|
|
472
503
|
case constants_1.GatewayEvents.TypingStart:
|
|
473
504
|
this.client.emit("typingStart", {
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
505
|
+
channelId: packet.d.channel_id,
|
|
506
|
+
guildId: packet.d.guild_id,
|
|
507
|
+
userId: packet.d.user_id,
|
|
477
508
|
timestamp: packet.d.timestamp,
|
|
478
509
|
member: packet.d.member !== undefined
|
|
479
510
|
? transformers_1.Guilds.guildMemberFromRaw(packet.d.member)
|
|
@@ -485,15 +516,15 @@ class Shard {
|
|
|
485
516
|
break;
|
|
486
517
|
case constants_1.GatewayEvents.VoiceChannelEffectSend:
|
|
487
518
|
this.client.emit("voiceChannelEffectSend", {
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
519
|
+
channelId: packet.d.channel_id,
|
|
520
|
+
guildId: packet.d.guild_id,
|
|
521
|
+
userId: packet.d.user_id,
|
|
491
522
|
emoji: packet.d.emoji !== null
|
|
492
523
|
? transformers_1.Emojis.emojiFromRaw(packet.d.emoji)
|
|
493
524
|
: null,
|
|
494
525
|
animationType: packet.d.animation_type,
|
|
495
|
-
|
|
496
|
-
|
|
526
|
+
animationId: packet.d.animation_id,
|
|
527
|
+
soundId: packet.d.sound_id,
|
|
497
528
|
soundVolume: packet.d.sound_volume,
|
|
498
529
|
});
|
|
499
530
|
break;
|
|
@@ -504,7 +535,7 @@ class Shard {
|
|
|
504
535
|
{
|
|
505
536
|
this.client.emit("voiceServerUpdate", {
|
|
506
537
|
token: packet.d.token,
|
|
507
|
-
|
|
538
|
+
guildId: packet.d.guild_id,
|
|
508
539
|
endpoint: packet.d.endpoint,
|
|
509
540
|
});
|
|
510
541
|
}
|
|
@@ -523,54 +554,63 @@ class Shard {
|
|
|
523
554
|
break;
|
|
524
555
|
case constants_1.GatewayEvents.MessagePollVoteAdd:
|
|
525
556
|
this.client.emit("messagePollVoteAdd", {
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
557
|
+
userId: packet.d.user_id,
|
|
558
|
+
channelId: packet.d.channel_id,
|
|
559
|
+
messageId: packet.d.message_id,
|
|
560
|
+
guildId: packet.d.guild_id,
|
|
561
|
+
answerId: packet.d.answer_id,
|
|
531
562
|
});
|
|
532
563
|
break;
|
|
533
564
|
case constants_1.GatewayEvents.MessagePollVoteRemove:
|
|
534
565
|
this.client.emit("messagePollVoteRemove", {
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
566
|
+
userId: packet.d.user_id,
|
|
567
|
+
channelId: packet.d.channel_id,
|
|
568
|
+
messageId: packet.d.message_id,
|
|
569
|
+
guildId: packet.d.guild_id,
|
|
570
|
+
answerId: packet.d.answer_id,
|
|
540
571
|
});
|
|
541
572
|
break;
|
|
542
573
|
}
|
|
543
574
|
}
|
|
544
|
-
onWebSocketOpen() {
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
575
|
+
onWebSocketOpen(reconnect) {
|
|
576
|
+
if (reconnect) {
|
|
577
|
+
this.resume({
|
|
578
|
+
token: this.client.token,
|
|
579
|
+
sessionId: this.sessionId,
|
|
580
|
+
seq: this.sequence,
|
|
581
|
+
});
|
|
582
|
+
}
|
|
583
|
+
else {
|
|
584
|
+
this.identify({
|
|
585
|
+
token: this.client.token,
|
|
586
|
+
properties: {
|
|
587
|
+
os: this.client.properties?.os ?? process.platform,
|
|
588
|
+
browser: this.client.properties?.browser ?? pkg.name,
|
|
589
|
+
device: this.client.properties?.device ?? pkg.name,
|
|
590
|
+
},
|
|
591
|
+
compress: this.client.compress,
|
|
592
|
+
largeThreshold: this.client.largeThreshold,
|
|
593
|
+
shard: [this.id, this.client.shardsCount],
|
|
594
|
+
presence: this.client.presence !== undefined
|
|
595
|
+
? {
|
|
596
|
+
since: this.client.presence.status === constants_1.StatusTypes.Idle
|
|
597
|
+
? Date.now()
|
|
598
|
+
: null,
|
|
599
|
+
activities: this.client.presence.activities?.map((activity) => ({
|
|
600
|
+
name: activity.type === constants_1.ActivityType.Custom
|
|
601
|
+
? "Custom Status"
|
|
602
|
+
: activity.name,
|
|
603
|
+
type: activity.type,
|
|
604
|
+
url: activity.url,
|
|
605
|
+
state: activity.state,
|
|
606
|
+
})),
|
|
607
|
+
status: this.client.presence.status ?? constants_1.StatusTypes.Online,
|
|
608
|
+
afk: !!this.client.presence.afk,
|
|
609
|
+
}
|
|
610
|
+
: undefined,
|
|
611
|
+
intents: this.client.intents,
|
|
612
|
+
});
|
|
613
|
+
}
|
|
574
614
|
}
|
|
575
615
|
onWebSocketMessage(data) {
|
|
576
616
|
const packet = JSON.parse(data.toString());
|
|
@@ -579,10 +619,23 @@ class Shard {
|
|
|
579
619
|
this.onDispatch(packet);
|
|
580
620
|
break;
|
|
581
621
|
case constants_1.GatewayOPCodes.Reconnect:
|
|
582
|
-
|
|
622
|
+
{
|
|
623
|
+
this.client.emit("reconnect");
|
|
624
|
+
this.reconnect();
|
|
625
|
+
}
|
|
583
626
|
break;
|
|
584
627
|
case constants_1.GatewayOPCodes.InvalidSession:
|
|
585
|
-
|
|
628
|
+
{
|
|
629
|
+
this.client.emit("invalidSession");
|
|
630
|
+
if (packet.d) {
|
|
631
|
+
this.reconnect();
|
|
632
|
+
}
|
|
633
|
+
else if (this.ws) {
|
|
634
|
+
this.ws.close(1000, "Invalid Session - Identify required");
|
|
635
|
+
this.ws = new ws_1.default("wss://gateway.discord.gg/?v=10&encoding=json", this.client.ws);
|
|
636
|
+
this.connect(false);
|
|
637
|
+
}
|
|
638
|
+
}
|
|
586
639
|
break;
|
|
587
640
|
case constants_1.GatewayOPCodes.Hello:
|
|
588
641
|
{
|
|
@@ -599,74 +652,106 @@ class Shard {
|
|
|
599
652
|
throw err;
|
|
600
653
|
}
|
|
601
654
|
onWebSocketClose(code, reason) {
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
655
|
+
switch (code) {
|
|
656
|
+
case 1000:
|
|
657
|
+
break;
|
|
658
|
+
case constants_1.GatewayCloseEventCodes.UnknownError:
|
|
659
|
+
case constants_1.GatewayCloseEventCodes.UnknownOPCode:
|
|
660
|
+
case constants_1.GatewayCloseEventCodes.DecodeError:
|
|
661
|
+
case constants_1.GatewayCloseEventCodes.NotAuthenticated:
|
|
662
|
+
case constants_1.GatewayCloseEventCodes.AlreadyAuthenticated:
|
|
663
|
+
case constants_1.GatewayCloseEventCodes.InvalidSequence:
|
|
664
|
+
case constants_1.GatewayCloseEventCodes.RateLimited:
|
|
665
|
+
case constants_1.GatewayCloseEventCodes.SessionTimedOut:
|
|
666
|
+
this.reconnect();
|
|
667
|
+
break;
|
|
668
|
+
default:
|
|
669
|
+
this.disconnect();
|
|
670
|
+
throw new utils_1.GatewayError(code, reason.toString());
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
/** https://discord.com/developers/docs/events/gateway#resuming */
|
|
674
|
+
reconnect() {
|
|
675
|
+
if (this.ws && this.resumeGatewayURL && this.sessionId && this.sequence) {
|
|
676
|
+
this.ws.close(1000, "Resume Attempt - Reconnect");
|
|
677
|
+
this.ws = new ws_1.default(this.resumeGatewayURL, this.client.ws);
|
|
678
|
+
this.connect(true);
|
|
679
|
+
}
|
|
605
680
|
}
|
|
606
681
|
/** https://discord.com/developers/docs/topics/gateway-events#request-guild-members */
|
|
607
682
|
requestGuildMembers(options) {
|
|
608
|
-
this.ws.
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
683
|
+
if (this.ws && this.ws.readyState === ws_1.default.OPEN) {
|
|
684
|
+
this.ws.send(JSON.stringify({
|
|
685
|
+
op: constants_1.GatewayOPCodes.RequestGuildMembers,
|
|
686
|
+
d: {
|
|
687
|
+
guild_id: options.guildId,
|
|
688
|
+
query: options.query,
|
|
689
|
+
limit: options.limit,
|
|
690
|
+
presences: options.presences,
|
|
691
|
+
user_ids: options.userIds,
|
|
692
|
+
nonce: options.nonce,
|
|
693
|
+
},
|
|
694
|
+
}));
|
|
695
|
+
}
|
|
619
696
|
}
|
|
620
697
|
/** https://discord.com/developers/docs/topics/gateway-events#request-soundboard-sounds */
|
|
621
698
|
requestSoundboardSounds(options) {
|
|
622
|
-
this.ws.
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
699
|
+
if (this.ws && this.ws.readyState === ws_1.default.OPEN) {
|
|
700
|
+
this.ws.send(JSON.stringify({
|
|
701
|
+
op: constants_1.GatewayOPCodes.RequestSoundboardSounds,
|
|
702
|
+
d: {
|
|
703
|
+
guild_ids: options.guildIds,
|
|
704
|
+
},
|
|
705
|
+
}));
|
|
706
|
+
}
|
|
628
707
|
}
|
|
629
708
|
/** https://discord.com/developers/docs/topics/gateway-events#resume */
|
|
630
709
|
resume(options) {
|
|
631
|
-
this.ws.
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
710
|
+
if (this.ws && this.ws.readyState === ws_1.default.OPEN) {
|
|
711
|
+
this.ws.send(JSON.stringify({
|
|
712
|
+
op: constants_1.GatewayOPCodes.Resume,
|
|
713
|
+
d: {
|
|
714
|
+
token: options.token,
|
|
715
|
+
session_id: options.sessionId,
|
|
716
|
+
seq: options.seq,
|
|
717
|
+
},
|
|
718
|
+
}));
|
|
719
|
+
}
|
|
639
720
|
}
|
|
640
721
|
/** https://discord.com/developers/docs/topics/gateway-events#update-presence */
|
|
641
722
|
updatePresence(options) {
|
|
642
|
-
this.ws.
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
723
|
+
if (this.ws && this.ws.readyState === ws_1.default.OPEN) {
|
|
724
|
+
this.ws.send(JSON.stringify({
|
|
725
|
+
op: constants_1.GatewayOPCodes.PresenceUpdate,
|
|
726
|
+
d: {
|
|
727
|
+
since: options.status === constants_1.StatusTypes.Idle ? Date.now() : null,
|
|
728
|
+
activities: options.activities?.map((activity) => ({
|
|
729
|
+
name: activity.type === constants_1.ActivityType.Custom
|
|
730
|
+
? "Custom Status"
|
|
731
|
+
: activity.name,
|
|
732
|
+
type: activity.type,
|
|
733
|
+
url: activity.url,
|
|
734
|
+
state: activity.state,
|
|
735
|
+
})),
|
|
736
|
+
status: options.status ?? constants_1.StatusTypes.Online,
|
|
737
|
+
afk: !!options.afk,
|
|
738
|
+
},
|
|
739
|
+
}));
|
|
740
|
+
}
|
|
658
741
|
}
|
|
659
742
|
/** https://discord.com/developers/docs/topics/gateway-events#update-voice-state */
|
|
660
743
|
updateVoiceState(options) {
|
|
661
|
-
this.ws.
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
744
|
+
if (this.ws && this.ws.readyState === ws_1.default.OPEN) {
|
|
745
|
+
this.ws.send(JSON.stringify({
|
|
746
|
+
op: constants_1.GatewayOPCodes.VoiceStateUpdate,
|
|
747
|
+
d: {
|
|
748
|
+
guild_id: options.guildId,
|
|
749
|
+
channel_id: options.channelId,
|
|
750
|
+
self_mute: options.selfMute,
|
|
751
|
+
self_deaf: options.selfDeaf,
|
|
752
|
+
},
|
|
753
|
+
}));
|
|
754
|
+
}
|
|
670
755
|
}
|
|
671
756
|
}
|
|
672
757
|
exports.Shard = Shard;
|