disgroove 1.2.4-dev.e7166c3 → 1.2.4-dev.e7cf657

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/Client.d.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  /// <reference types="node" />
2
- import WebSocket from "ws";
3
2
  import { type DefaultMessageNotificationLevel, type ExplicitContentFilterLevel, GatewayIntents, type OAuth2Scopes, type PrivacyLevel, StatusTypes, type SystemChannelFlags, type VerificationLevel } from "./constants";
4
3
  import { Util } from "./utils";
5
4
  import { REST } from "./rest";
6
5
  import { Application, AutoModerationRule, Channel, Guild, GuildMember, GuildScheduledEvent, Integration, Interaction, Invite, Message, StageInstance, User, VoiceState, PartialApplication } from "./structures";
7
- import type { Activity, JSONAuditLogEntry, AutoModerationActionExecutionEventFields, JSONAutoModerationRule, JSONChannel, ChannelPinsUpdateEventFields, JSONGuildApplicationCommandPermissions, GuildBanAddEventFields, GuildBanRemoveEventFields, GuildDeleteEventFields, GuildEmojisUpdateEventFields, GuildIntegrationsUpdateEventFields, GuildMemberRemoveEventFields, GuildMemberUpdateEventFields, GuildMembersChunkEventFields, GuildRoleCreateEventFields, GuildRoleDeleteEventFields, GuildRoleUpdateEventFields, JSONGuildScheduledEvent, GuildScheduledEventUserAddEventFields, GuildScheduledEventUserRemoveEventFields, GuildStickersUpdateEventFields, IntegrationDeleteEventFields, JSONInvite, InviteCreateEventFields, InviteDeleteEventFields, MessageDeleteBulkEventFields, MessageDeleteEventFields, MessageReactionAddEventFields, MessageReactionRemoveAllEventFields, MessageReactionRemoveEmojiEventFields, MessageReactionRemoveEventFields, PresenceUpdateEventFields, JSONRole, JSONStageInstance, JSONStickerPack, ThreadListSyncEventFields, JSONThreadMember, ThreadMembersUpdateEventFields, TypingStartEventFields, JSONVoiceRegion, VoiceServerUpdateEventFields, WebhooksUpdateEventFields, HelloEventFields, ReadyEventFields } from "./types";
6
+ import type { Activity, JSONAuditLogEntry, AutoModerationActionExecutionEventFields, JSONAutoModerationRule, JSONChannel, ChannelPinsUpdateEventFields, JSONGuildApplicationCommandPermissions, GuildBanAddEventFields, GuildBanRemoveEventFields, GuildDeleteEventFields, GuildEmojisUpdateEventFields, GuildIntegrationsUpdateEventFields, GuildMemberRemoveEventFields, GuildMemberUpdateEventFields, GuildMembersChunkEventFields, GuildRoleCreateEventFields, GuildRoleDeleteEventFields, GuildRoleUpdateEventFields, JSONGuildScheduledEvent, GuildScheduledEventUserAddEventFields, GuildScheduledEventUserRemoveEventFields, GuildStickersUpdateEventFields, IntegrationDeleteEventFields, JSONInvite, InviteCreateEventFields, InviteDeleteEventFields, MessageDeleteBulkEventFields, MessageDeleteEventFields, MessageReactionAddEventFields, MessageReactionRemoveAllEventFields, MessageReactionRemoveEmojiEventFields, MessageReactionRemoveEventFields, PresenceUpdateEventFields, JSONRole, JSONStageInstance, JSONStickerPack, ThreadListSyncEventFields, JSONThreadMember, ThreadMembersUpdateEventFields, TypingStartEventFields, JSONVoiceRegion, VoiceServerUpdateEventFields, WebhooksUpdateEventFields } from "./types";
8
7
  import EventEmitter from "node:events";
8
+ import { ShardsManager } from "./gateway";
9
9
  export interface ClientEvents {
10
- hello: [listener: HelloEventFields];
11
- ready: [listener: ReadyEventFields];
10
+ hello: [];
11
+ ready: [];
12
12
  resumed: [];
13
13
  reconnect: [];
14
14
  invalidSession: [];
@@ -98,17 +98,16 @@ export declare interface Client extends EventEmitter {
98
98
  }
99
99
  export interface ClientOptions {
100
100
  intents?: number | Array<number>;
101
- shards?: number | "auto";
101
+ shardsCount?: number | "auto";
102
102
  auth?: "Bot" | "Bearer";
103
103
  }
104
104
  export declare class Client extends EventEmitter {
105
- private heartbeatInterval;
106
105
  token: string;
107
106
  intents: GatewayIntents | number;
108
- shards: number | "auto";
107
+ shardsCount: number | "auto";
109
108
  auth: "Bot" | "Bearer";
109
+ shards: ShardsManager;
110
110
  rest: REST;
111
- ws: WebSocket;
112
111
  util: Util;
113
112
  user: User;
114
113
  application: PartialApplication;
@@ -204,10 +203,5 @@ export declare class Client extends EventEmitter {
204
203
  user?: User;
205
204
  }>;
206
205
  /** https://discord.com/developers/docs/topics/gateway#connections */
207
- connect(): void;
208
- disconnect(): void;
209
- private onWebSocketOpen;
210
- private onWebSocketMessage;
211
- private onWebSocketError;
212
- private onWebSocketClose;
206
+ connect(): Promise<void>;
213
207
  }
package/dist/Client.js CHANGED
@@ -4,20 +4,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Client = void 0;
7
- const ws_1 = __importDefault(require("ws"));
8
7
  const constants_1 = require("./constants");
9
8
  const utils_1 = require("./utils");
10
9
  const rest_1 = require("./rest");
11
10
  const structures_1 = require("./structures");
12
11
  const node_events_1 = __importDefault(require("node:events"));
12
+ const gateway_1 = require("./gateway");
13
13
  class Client extends node_events_1.default {
14
- heartbeatInterval;
15
14
  token;
16
15
  intents;
17
- shards;
16
+ shardsCount;
18
17
  auth;
18
+ shards;
19
19
  rest;
20
- ws;
21
20
  util;
22
21
  user;
23
22
  application;
@@ -30,10 +29,10 @@ class Client extends node_events_1.default {
30
29
  ? options.intents.reduce((sum, num) => sum + num, 0)
31
30
  : options.intents
32
31
  : constants_1.GatewayIntents.AllNonPrivileged;
33
- this.shards = options?.shards ?? "auto";
32
+ this.shardsCount = options?.shardsCount ?? "auto";
34
33
  this.auth = options?.auth ?? "Bot";
34
+ this.shards = new gateway_1.ShardsManager();
35
35
  this.rest = new rest_1.REST(token, this.auth);
36
- this.ws = new ws_1.default("wss://gateway.discord.gg/?v=10&encoding=json");
37
36
  this.util = new utils_1.Util();
38
37
  }
39
38
  /** https://discord.com/developers/docs/resources/application#get-current-application */
@@ -193,15 +192,8 @@ class Client extends node_events_1.default {
193
192
  }
194
193
  /** https://discord.com/developers/docs/topics/gateway-events#update-presence */
195
194
  updatePresence(options) {
196
- this.ws.send(JSON.stringify({
197
- op: constants_1.GatewayOPCodes.PresenceUpdate,
198
- d: {
199
- since: options.status === constants_1.StatusTypes.Idle ? Date.now() : null,
200
- activities: options.activity !== undefined ? [options.activity] : null,
201
- status: options.status ?? constants_1.StatusTypes.Online,
202
- afk: !!options.afk,
203
- },
204
- }));
195
+ for (const [id, shard] of this.shards)
196
+ shard.updatePresence(options);
205
197
  }
206
198
  /** https://discord.com/developers/docs/topics/oauth2#get-current-bot-application-information */
207
199
  async getOAuth2Application() {
@@ -221,546 +213,14 @@ class Client extends node_events_1.default {
221
213
  }));
222
214
  }
223
215
  /** https://discord.com/developers/docs/topics/gateway#connections */
224
- connect() {
225
- this.ws.on("open", () => this.onWebSocketOpen());
226
- this.ws.on("message", (data) => this.onWebSocketMessage(data));
227
- this.ws.on("error", (err) => this.onWebSocketError(err));
228
- this.ws.on("close", (code, reason) => this.onWebSocketClose(code, reason));
229
- }
230
- disconnect() {
231
- if (this.heartbeatInterval) {
232
- clearInterval(this.heartbeatInterval);
233
- this.heartbeatInterval = null;
234
- }
235
- }
236
- async onWebSocketOpen() {
237
- const shards = this.shards !== "auto"
238
- ? this.shards
239
- : (await this.getGatewayBot()).shards;
240
- for (let i = 0; i < shards; i++) {
241
- this.ws.send(JSON.stringify({
242
- op: constants_1.GatewayOPCodes.Identify,
243
- d: {
244
- token: this.token,
245
- shard: [i, shards],
246
- intents: this.intents,
247
- properties: {
248
- os: process.platform,
249
- browser: "disgroove",
250
- device: "disgroove",
251
- },
252
- },
253
- }));
254
- }
255
- }
256
- onWebSocketMessage(data) {
257
- const packet = JSON.parse(data.toString());
258
- switch (packet.op) {
259
- case constants_1.GatewayOPCodes.Reconnect:
260
- super.emit(constants_1.GatewayEvents.Reconnect);
261
- break;
262
- case constants_1.GatewayOPCodes.InvalidSession:
263
- super.emit(constants_1.GatewayEvents.InvalidSession);
264
- break;
265
- case constants_1.GatewayOPCodes.Hello:
266
- {
267
- this.heartbeatInterval = setInterval(() => {
268
- this.ws.send(JSON.stringify({
269
- op: constants_1.GatewayOPCodes.Heartbeat,
270
- d: null,
271
- }));
272
- }, packet.d.heartbeat_interval);
273
- super.emit(constants_1.GatewayEvents.Hello, {
274
- heartbeatInterval: packet.d.heartbeat_interval,
275
- });
276
- }
277
- break;
278
- }
279
- switch (packet.t) {
280
- case "READY":
281
- {
282
- this.user = new structures_1.User(packet.d.user, this);
283
- this.application = new structures_1.PartialApplication(packet.d.application, this);
284
- super.emit(constants_1.GatewayEvents.Ready, {
285
- v: packet.d.v,
286
- guilds: packet.d.guilds.map((guild) => new structures_1.UnavailableGuild(guild, this)),
287
- sessionId: packet.d.session_id,
288
- resumeGatewayURL: packet.d.resume_gateway_url,
289
- shard: packet.d.shard,
290
- });
291
- }
292
- break;
293
- case "RESUMED":
294
- super.emit(constants_1.GatewayEvents.Resumed);
295
- break;
296
- case "APPLICATION_COMMAND_PERMISSIONS_UPDATE":
297
- super.emit(constants_1.GatewayEvents.ApplicationCommandPermissionsUpdate, {
298
- id: packet.d.id,
299
- applicationId: packet.d.application_id,
300
- guildId: packet.d.guild_id,
301
- permissions: packet.d.permissions.map((permission) => ({
302
- id: permission.id,
303
- type: permission.type,
304
- permission: permission.permission,
305
- })),
306
- });
307
- break;
308
- case "AUTO_MODERATION_RULE_CREATE":
309
- super.emit(constants_1.GatewayEvents.AutoModerationRuleCreate, new structures_1.AutoModerationRule(packet.d, this));
310
- break;
311
- case "AUTO_MODERATION_RULE_UPDATE":
312
- super.emit(constants_1.GatewayEvents.AutoModerationRuleUpdate, new structures_1.AutoModerationRule(packet.d, this));
313
- break;
314
- case "AUTO_MODERATION_RULE_DELETE":
315
- super.emit(constants_1.GatewayEvents.AutoModerationRuleDelete, new structures_1.AutoModerationRule(packet.d, this).toJSON());
316
- break;
317
- case "AUTO_MODERATION_ACTION_EXECUTION":
318
- super.emit(constants_1.GatewayEvents.AutoModerationActionExecution, {
319
- guildId: packet.d.guild_id,
320
- action: {
321
- type: packet.d.action.type,
322
- metadata: packet.d.action.metadata,
323
- },
324
- ruleId: packet.d.rule_id,
325
- ruleTriggerType: packet.d.rule_trigger_type,
326
- userId: packet.d.user_id,
327
- channelId: packet.d.channel_id,
328
- messageId: packet.d.message_id,
329
- alertSystemMessageId: packet.d.alert_system_message_id,
330
- content: packet.d.content,
331
- matchedKeyword: packet.d.matched_keyword,
332
- matchedContent: packet.d.matched_content,
333
- });
334
- break;
335
- case "CHANNEL_CREATE":
336
- super.emit(constants_1.GatewayEvents.ChannelCreate, new structures_1.Channel(packet.d, this));
337
- break;
338
- case "CHANNEL_UPDATE":
339
- super.emit(constants_1.GatewayEvents.ChannelUpdate, new structures_1.Channel(packet.d, this));
340
- break;
341
- case "CHANNEL_DELETE":
342
- super.emit(constants_1.GatewayEvents.ChannelDelete, new structures_1.Channel(packet.d, this).toJSON());
343
- break;
344
- case "CHANNEL_PINS_UPDATE":
345
- super.emit(constants_1.GatewayEvents.ChannelPinsUpdate, {
346
- guildId: packet.d.guild_id,
347
- channelId: packet.d.channel_id,
348
- lastPinTimestamp: packet.d.last_pin_timestamp,
349
- });
350
- break;
351
- case "THREAD_CREATE":
352
- super.emit(constants_1.GatewayEvents.ThreadCreate, new structures_1.Channel(packet.d, this));
353
- break;
354
- case "THREAD_UPDATE":
355
- super.emit(constants_1.GatewayEvents.ThreadUpdate, new structures_1.Channel(packet.d, this));
356
- break;
357
- case "THREAD_DELETE":
358
- super.emit(constants_1.GatewayEvents.ThreadDelete, new structures_1.Channel(packet.d, this).toJSON());
359
- break;
360
- case "THREAD_LIST_SYNC":
361
- super.emit(constants_1.GatewayEvents.ThreadListSync, {
362
- guildId: packet.d.guild_id,
363
- channelIds: packet.d.channel_ids,
364
- threads: packet.d.threads.map((channel) => new structures_1.Channel(channel, this)),
365
- members: packet.d.members.map((member) => ({
366
- id: member.id,
367
- userId: member.user_id,
368
- joinTimestamp: member.join_timestamp,
369
- flags: member.flags,
370
- member: member.member !== undefined
371
- ? new structures_1.GuildMember(member.member, this)
372
- : undefined,
373
- })),
374
- });
375
- break;
376
- case "THREAD_MEMBER_UPDATE":
377
- super.emit(constants_1.GatewayEvents.ThreadMemberUpdate, {
378
- id: packet.d.id,
379
- userId: packet.d.user_id,
380
- joinTimestamp: packet.d.join_timestamp,
381
- flags: packet.d.flags,
382
- member: packet.d.member !== undefined
383
- ? new structures_1.GuildMember(packet.d.member, this)
384
- : undefined,
385
- guildId: packet.d.guild_id,
386
- });
387
- break;
388
- case "THREAD_MEMBERS_UPDATE":
389
- super.emit(constants_1.GatewayEvents.ThreadMembersUpdate, {
390
- id: packet.d.id,
391
- guildId: packet.d.guild_id,
392
- memberCount: packet.d.member_count,
393
- addedMembers: packet.d.added_members?.map((member) => ({
394
- id: member.id,
395
- userId: member.user_id,
396
- joinTimestamp: member.join_timestamp,
397
- flags: member.flags,
398
- member: member.member !== undefined
399
- ? new structures_1.GuildMember(member.member, this)
400
- : undefined,
401
- })),
402
- removedMemberIds: packet.d.removed_member_ids,
403
- });
404
- break;
405
- case "GUILD_CREATE":
406
- super.emit(constants_1.GatewayEvents.GuildCreate, new structures_1.Guild(packet.d, this));
407
- break;
408
- case "GUILD_UPDATE":
409
- super.emit(constants_1.GatewayEvents.GuildUpdate, new structures_1.Guild(packet.d, this));
410
- break;
411
- case "GUILD_DELETE":
412
- super.emit(constants_1.GatewayEvents.GuildDelete, {
413
- id: packet.d.id,
414
- unavailable: packet.d.unavailable,
415
- });
416
- break;
417
- case "GUILD_AUDIT_LOG_ENTRY_CREATE":
418
- super.emit(constants_1.GatewayEvents.GuildAuditLogEntryCreate, {
419
- targetId: packet.d.target_id,
420
- changes: packet.d.changes?.map((change) => ({
421
- newValue: change.new_value,
422
- oldValue: change.old_value,
423
- key: change.key,
424
- })),
425
- userId: packet.d.user_id,
426
- id: packet.d.id,
427
- actionType: packet.d.action_type,
428
- options: packet.d.options !== undefined
429
- ? {
430
- applicationId: packet.d.options.application_id,
431
- autoModerationRuleName: packet.d.options.auto_moderation_rule_name,
432
- autoModerationRuleTriggerType: packet.d.options.auto_moderation_rule_trigger_type,
433
- channelId: packet.d.options.channel_id,
434
- count: packet.d.options.count,
435
- deleteMemberDays: packet.d.options.delete_member_days,
436
- id: packet.d.options.id,
437
- membersRemoved: packet.d.options.members_removed,
438
- messageId: packet.d.options.message_id,
439
- roleName: packet.d.options.role_name,
440
- type: packet.d.options.type,
441
- }
442
- : undefined,
443
- reason: packet.d.reason,
444
- });
445
- break;
446
- case "GUILD_BAN_ADD":
447
- super.emit(constants_1.GatewayEvents.GuildBanAdd, {
448
- guildId: packet.d.guild_id,
449
- user: new structures_1.User(packet.d.user, this),
450
- });
451
- break;
452
- case "GUILD_BAN_REMOVE":
453
- super.emit(constants_1.GatewayEvents.GuildBanRemove, {
454
- guildId: packet.d.guild_id,
455
- user: new structures_1.User(packet.d.user, this),
456
- });
457
- break;
458
- case "GUILD_EMOJIS_UPDATE":
459
- super.emit(constants_1.GatewayEvents.GuildEmojisUpdate, {
460
- guildId: packet.d.guild_id,
461
- emojis: packet.d.emojis.map((emoji) => new structures_1.Emoji(emoji, this).toJSON()),
462
- });
463
- break;
464
- case "GUILD_STICKERS_UPDATE":
465
- super.emit(constants_1.GatewayEvents.GuildStickersUpdate, {
466
- guildId: packet.d.guild_id,
467
- stickers: packet.d.stickers.map((sticker) => ({
468
- id: sticker.id,
469
- packId: sticker.pack_id,
470
- name: sticker.name,
471
- description: sticker.description,
472
- tags: sticker.tags,
473
- asset: sticker.asset,
474
- type: sticker.type,
475
- formatType: sticker.format_type,
476
- available: sticker.available,
477
- guildId: sticker.guild_id,
478
- user: sticker.user !== undefined
479
- ? new structures_1.User(sticker.user, this)
480
- : undefined,
481
- sortValue: sticker.sort_value,
482
- })),
483
- });
484
- break;
485
- case "GUILD_INTEGRATIONS_UPDATE":
486
- super.emit(constants_1.GatewayEvents.GuildIntegrationsUpdate, {
487
- guildId: packet.d.guild_id,
488
- });
489
- break;
490
- case "GUILD_MEMBER_ADD":
491
- super.emit(constants_1.GatewayEvents.GuildMemberAdd, new structures_1.GuildMember(packet.d, this));
492
- break;
493
- case "GUILD_MEMBER_REMOVE":
494
- super.emit(constants_1.GatewayEvents.GuildMemberRemove, {
495
- guildId: packet.d.guild_id,
496
- user: new structures_1.User(packet.d.user, this),
497
- });
498
- break;
499
- case "GUILD_MEMBER_UPDATE":
500
- super.emit(constants_1.GatewayEvents.GuildMemberUpdate, {
501
- guildId: packet.d.guild_id,
502
- roles: packet.d.roles,
503
- user: new structures_1.User(packet.d.user, this),
504
- nick: packet.d.nick,
505
- avatar: packet.d.avatar,
506
- joinedAt: packet.d.joined_at,
507
- premiumSince: packet.d.premium_since,
508
- deaf: packet.d.deaf,
509
- mute: packet.d.mute,
510
- pending: packet.d.pending,
511
- communicationDisabledUntil: packet.d.communication_disabled_until,
512
- });
513
- break;
514
- case "GUILD_MEMBERS_CHUNK":
515
- super.emit(constants_1.GatewayEvents.GuildMembersChunk, {
516
- guildId: packet.d.guild_id,
517
- members: packet.d.members.map((member) => new structures_1.GuildMember(member, this)),
518
- chunkIndex: packet.d.chunk_index,
519
- chunkCount: packet.d.chunk_count,
520
- notFound: packet.d.not_found,
521
- presences: packet.d.presences,
522
- nonce: packet.d.nonce,
523
- });
524
- break;
525
- case "GUILD_ROLE_CREATE":
526
- super.emit(constants_1.GatewayEvents.GuildRoleCreate, {
527
- guildId: packet.d.guild_id,
528
- role: new structures_1.Role(packet.d.role, this),
529
- });
530
- break;
531
- case "GUILD_ROLE_UPDATE":
532
- super.emit(constants_1.GatewayEvents.GuildRoleUpdate, {
533
- guildId: packet.d.guild_id,
534
- role: new structures_1.Role(packet.d.role, this),
535
- });
536
- break;
537
- case "GUILD_ROLE_DELETE":
538
- super.emit(constants_1.GatewayEvents.GuildRoleDelete, {
539
- guildId: packet.d.guild_id,
540
- roleId: packet.d.role_id,
541
- });
542
- break;
543
- case "GUILD_SCHEDULED_EVENT_CREATE":
544
- super.emit(constants_1.GatewayEvents.GuildScheduledEventCreate, new structures_1.GuildScheduledEvent(packet.d, this));
545
- break;
546
- case "GUILD_SCHEDULED_EVENT_UPDATE":
547
- super.emit(constants_1.GatewayEvents.GuildScheduledEventUpdate, new structures_1.GuildScheduledEvent(packet.d, this));
548
- break;
549
- case "GUILD_SCHEDULED_EVENT_DELETE":
550
- super.emit(constants_1.GatewayEvents.GuildScheduledEventDelete, new structures_1.GuildScheduledEvent(packet.d, this).toJSON());
551
- break;
552
- case "GUILD_SCHEDULED_EVENT_USER_ADD":
553
- super.emit(constants_1.GatewayEvents.GuildScheduledEventUserAdd, {
554
- guildScheduledEventId: packet.d.guild_scheduled_event_id,
555
- userId: packet.d.user_id,
556
- guildId: packet.d.guild_id,
557
- });
558
- break;
559
- case "GUILD_SCHEDULED_EVENT_USER_REMOVE":
560
- super.emit(constants_1.GatewayEvents.GuildScheduledEventUserRemove, {
561
- guildScheduledEventId: packet.d.guild_scheduled_event_id,
562
- userId: packet.d.user_id,
563
- guildId: packet.d.guild_id,
564
- });
565
- break;
566
- case "INTEGRATION_CREATE":
567
- super.emit(constants_1.GatewayEvents.IntegrationCreate, new structures_1.Integration(packet.d, this));
568
- break;
569
- case "INTEGRATION_UPDATE":
570
- super.emit(constants_1.GatewayEvents.IntegrationUpdate, new structures_1.Integration(packet.d, this));
571
- break;
572
- case "INTEGRATION_DELETE":
573
- super.emit(constants_1.GatewayEvents.IntegrationDelete, {
574
- id: packet.d.id,
575
- guildId: packet.d.guild_id,
576
- applicationId: packet.d.application_id,
577
- });
578
- break;
579
- case "INTERACTION_CREATE":
580
- super.emit(constants_1.GatewayEvents.InteractionCreate, new structures_1.Interaction(packet.d, this));
581
- break;
582
- case "INVITE_CREATE":
583
- super.emit(constants_1.GatewayEvents.InviteCreate, {
584
- channelId: packet.d.channel_id,
585
- code: packet.d.code,
586
- createdAt: packet.d.created_at,
587
- guildId: packet.d.guild_id,
588
- inviter: packet.d.inviter !== undefined
589
- ? new structures_1.User(packet.d.inviter, this)
590
- : undefined,
591
- maxAge: packet.d.max_age,
592
- maxUses: packet.d.max_uses,
593
- targetType: packet.d.target_type,
594
- targetUser: packet.d.target_user !== undefined
595
- ? new structures_1.User(packet.d.target_user, this)
596
- : undefined,
597
- targetApplication: packet.d.target_application !== undefined
598
- ? new structures_1.Application(packet.d.target_application, this)
599
- : undefined,
600
- temporary: packet.d.temporary,
601
- uses: packet.d.uses,
602
- });
603
- break;
604
- case "INVITE_DELETE":
605
- super.emit(constants_1.GatewayEvents.InviteDelete, {
606
- channelId: packet.d.channel_id,
607
- guildId: packet.d.guild_id,
608
- code: packet.d.code,
609
- });
610
- break;
611
- case "MESSAGE_CREATE":
612
- super.emit(constants_1.GatewayEvents.MessageCreate, new structures_1.Message(packet.d, this));
613
- break;
614
- case "MESSAGE_UPDATE":
615
- super.emit(constants_1.GatewayEvents.MessageUpdate, new structures_1.Message(packet.d, this));
616
- break;
617
- case "MESSAGE_DELETE":
618
- super.emit(constants_1.GatewayEvents.MessageDelete, new structures_1.Message(packet.d, this).toJSON());
619
- break;
620
- case "MESSAGE_DELETE_BULK":
621
- super.emit(constants_1.GatewayEvents.MessageDeleteBulk, {
622
- ids: packet.d.ids,
623
- channelId: packet.d.channel_id,
624
- guildId: packet.d.guild_id,
625
- });
626
- break;
627
- case "MESSAGE_REACTION_ADD":
628
- super.emit(constants_1.GatewayEvents.MessageReactionAdd, {
629
- userId: packet.d.user_id,
630
- channelId: packet.d.channel_id,
631
- messageId: packet.d.message_id,
632
- guildId: packet.d.guild_id,
633
- member: packet.d.member !== undefined
634
- ? new structures_1.GuildMember(packet.d.member, this)
635
- : undefined,
636
- emoji: new structures_1.Emoji(packet.d.emoji, this),
637
- messageAuthorId: packet.d.message_author_id,
638
- });
639
- break;
640
- case "MESSAGE_REACTION_REMOVE":
641
- super.emit(constants_1.GatewayEvents.MessageReactionRemove, {
642
- userId: packet.d.user_id,
643
- channelId: packet.d.channel_id,
644
- messageId: packet.d.message_id,
645
- guildId: packet.d.guild_id,
646
- emoji: new structures_1.Emoji(packet.d.emoji, this),
647
- });
648
- break;
649
- case "MESSAGE_REACTION_REMOVE_ALL":
650
- super.emit(constants_1.GatewayEvents.MessageReactionRemoveAll, {
651
- channelId: packet.d.channel_id,
652
- messageId: packet.d.message_id,
653
- guildId: packet.d.guild_id,
654
- });
655
- break;
656
- case "MESSAGE_REACTION_REMOVE_EMOJI":
657
- super.emit(constants_1.GatewayEvents.MessageReactionRemoveEmoji, {
658
- channelId: packet.d.channel_id,
659
- guildId: packet.d.guild_id,
660
- messageId: packet.d.message_id,
661
- emoji: new structures_1.Emoji(packet.d.emoji, this),
662
- });
663
- break;
664
- case "PRESENCE_UPDATE":
665
- super.emit(constants_1.GatewayEvents.PresenceUpdate, {
666
- user: new structures_1.User(packet.d.user, this),
667
- guildId: packet.d.guild_id,
668
- status: packet.d.status,
669
- activities: packet.d.activities.map((activity) => ({
670
- name: activity.name,
671
- type: activity.type,
672
- url: activity.url,
673
- createdAt: activity.created_at,
674
- timestamps: {
675
- start: activity.timestamps?.start,
676
- end: activity.timestamps?.end,
677
- },
678
- applicationId: activity.application_id,
679
- details: activity.details,
680
- state: activity.state,
681
- party: activity.party,
682
- assets: {
683
- largeImage: activity.assets?.large_image,
684
- largeText: activity.assets?.large_text,
685
- smallImage: activity.assets?.small_image,
686
- smallText: activity.assets?.small_text,
687
- },
688
- secrets: activity.secrets,
689
- instance: activity.instance,
690
- flags: activity.flags,
691
- buttons: activity.buttons,
692
- })),
693
- clientStatus: {
694
- desktop: packet.d.client_status.desktop,
695
- mobile: packet.d.client_status.mobile,
696
- web: packet.d.client_status.web,
697
- },
698
- });
699
- break;
700
- case "STAGE_INSTANCE_CREATE":
701
- super.emit(constants_1.GatewayEvents.StageInstanceCreate, new structures_1.StageInstance(packet.d, this));
702
- break;
703
- case "STAGE_INSTANCE_UPDATE":
704
- super.emit(constants_1.GatewayEvents.StageInstanceUpdate, new structures_1.StageInstance(packet.d, this));
705
- break;
706
- case "STAGE_INSTANCE_DELETE":
707
- super.emit(constants_1.GatewayEvents.StageInstanceDelete, new structures_1.StageInstance(packet.d, this).toJSON());
708
- break;
709
- case "TYPING_START":
710
- super.emit(constants_1.GatewayEvents.TypingStart, {
711
- channelId: packet.d.channel_id,
712
- guildId: packet.d.guild_id,
713
- userId: packet.d.user_id,
714
- timestamp: packet.d.timestamp,
715
- member: packet.d.member !== undefined
716
- ? new structures_1.GuildMember(packet.d.member, this)
717
- : undefined,
718
- });
719
- break;
720
- case "USER_UPDATE":
721
- super.emit(constants_1.GatewayEvents.UserUpdate, new structures_1.User(packet.d, this));
722
- break;
723
- case "VOICE_STATE_UPDATE":
724
- super.emit(constants_1.GatewayEvents.VoiceStateUpdate, {
725
- guildId: packet.d.guild_id,
726
- channelId: packet.d.channel_id,
727
- userId: packet.d.user_id,
728
- member: packet.d.member !== undefined
729
- ? new structures_1.GuildMember(packet.d.member, this)
730
- : undefined,
731
- sessionId: packet.d.session_id,
732
- deaf: packet.d.deaf,
733
- mute: packet.d.mute,
734
- selfDeaf: packet.d.self_deaf,
735
- selfMute: packet.d.self_mute,
736
- selfStream: packet.d.self_stream,
737
- selfVideo: packet.d.self_video,
738
- suppress: packet.d.suppress,
739
- requestToSpeakTimestamp: packet.d.request_to_speak_timestamp,
740
- });
741
- break;
742
- case "VOICE_SERVER_UPDATE":
743
- super.emit(constants_1.GatewayEvents.VoiceServerUpdate, {
744
- token: packet.d.token,
745
- guildId: packet.d.guild_id,
746
- endpoint: packet.d.endpoint,
747
- });
748
- break;
749
- case "WEBHOOKS_UPDATE":
750
- super.emit(constants_1.GatewayEvents.WebhooksUpdate, {
751
- guildId: packet.d.guild_id,
752
- channelId: packet.d.channel_id,
753
- });
754
- break;
755
- }
756
- }
757
- onWebSocketError(err) {
758
- throw err;
759
- }
760
- onWebSocketClose(code, reason) {
761
- if (code === 1000)
762
- return;
763
- throw new utils_1.GatewayError(`[${code}] ${reason}`);
216
+ async connect() {
217
+ this.shardsCount =
218
+ this.shardsCount === "auto"
219
+ ? (await this.getGatewayBot()).shards
220
+ : this.shardsCount;
221
+ for (let i = 0; i < this.shardsCount; i++)
222
+ this.shards.set(i, new gateway_1.Shard(i, this));
223
+ this.shards.connect();
764
224
  }
765
225
  }
766
226
  exports.Client = Client;