disgroove 2.2.4 → 2.2.5-dev.3beface

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.
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  import { GatewayIntents, type OAuth2Scopes, type ActionTypes, type ImageWidgetStyleOptions, type MFALevel, type ReactionTypes, type ApplicationCommandTypes, type EventTypes, type TriggerTypes, type ChannelTypes, type VideoQualityModes, type SortOrderTypes, type ForumLayoutTypes, type InviteTargetTypes, type VerificationLevel, type DefaultMessageNotificationLevel, type ExplicitContentFilterLevel, type SystemChannelFlags, type ApplicationFlags, type ApplicationIntegrationTypes, type ChannelFlags, type GuildFeatures, type GuildScheduledEventEntityTypes, type GuildScheduledEventPrivacyLevel, type GuildScheduledEventStatus, type MessageFlags, type OnboardingMode, type PrivacyLevel, type GuildMemberFlags, type InteractionContextTypes } from "./constants";
3
4
  import { RequestManager, type File } from "./rest";
4
5
  import EventEmitter from "node:events";
@@ -12,11 +13,11 @@ import type { Channel, FollowedChannel, ThreadMember, Overwrite, DefaultReaction
12
13
  import type { LocaleMap, snowflake, timestamp } from "./types/common";
13
14
  import type { Emoji } from "./types/emoji";
14
15
  import type { Entitlement } from "./types/entitlements";
15
- import type { AutoModerationActionExecutionEventFields, ChannelPinsUpdateEventFields, ThreadListSyncEventFields, ThreadMemberUpdateEventExtraFields, ThreadMembersUpdateEventFields, GuildCreateEventExtraFields, GuildAuditLogEntryCreateExtraFields, GuildBanAddEventFields, GuildBanRemoveEventFields, GuildMemberAddEventExtraFields, GuildMemberRemoveEventFields, GuildMemberUpdateEventFields, GuildMembersChunkEventFields, IntegrationCreateEventExtraFields, IntegrationUpdateEventExtraFields, IntegrationDeleteEventFields, InviteCreateEventFields, InviteDeleteEventFields, MessageCreateEventExtraFields, MessageDeleteEventFields, MessageDeleteBulkEventFields, MessageReactionAddEventFields, MessageReactionRemoveEventFields, MessageReactionRemoveAllEventFields, MessageReactionRemoveEmojiEventFields, PresenceUpdateEventFields, TypingStartEventFields, VoiceServerUpdateEventFields, MessagePollVoteAddFields, MessagePollVoteRemoveFields, GatewayPresenceUpdate, RawPayload, IdentifyConnectionProperties, VoiceChannelEffectSendEventFields } from "./types/gateway-events";
16
+ import type { AutoModerationActionExecutionEventFields, ChannelPinsUpdateEventFields, ThreadListSyncEventFields, ThreadMemberUpdateEventExtraFields, ThreadMembersUpdateEventFields, GuildCreateEventExtraFields, GuildAuditLogEntryCreateExtraFields, GuildBanAddEventFields, GuildBanRemoveEventFields, GuildMemberAddEventExtraFields, GuildMemberRemoveEventFields, GuildMemberUpdateEventFields, GuildMembersChunkEventFields, IntegrationCreateEventExtraFields, IntegrationUpdateEventExtraFields, IntegrationDeleteEventFields, InviteCreateEventFields, InviteDeleteEventFields, MessageCreateEventExtraFields, MessageDeleteEventFields, MessageDeleteBulkEventFields, MessageReactionAddEventFields, MessageReactionRemoveEventFields, MessageReactionRemoveAllEventFields, MessageReactionRemoveEmojiEventFields, PresenceUpdateEventFields, TypingStartEventFields, VoiceServerUpdateEventFields, MessagePollVoteAddFields, MessagePollVoteRemoveFields, GatewayPresenceUpdate, RawPayload, IdentifyConnectionProperties, VoiceChannelEffectSendEventFields, GuildSoundboardSoundDeleteEventFields } from "./types/gateway-events";
16
17
  import type { Guild, GuildMember, WelcomeScreen, GuildWidgetSettings, Ban, Integration, GuildOnboarding, GuildPreview, GuildWidget, UnavailableGuild, OnboardingPrompt, WelcomeScreenChannel } from "./types/guild";
17
18
  import type { GuildScheduledEvent, GuildScheduledEventUser, GuildScheduledEventEntityMetadata, GuildScheduledEventRecurrenceRule } from "./types/guild-scheduled-event";
18
19
  import type { GuildTemplate } from "./types/guild-template";
19
- import type { Interaction, InteractionResponse } from "./types/interaction";
20
+ import type { Interaction, InteractionCallbackResponse, InteractionResponse } from "./types/interaction";
20
21
  import type { Invite } from "./types/invite";
21
22
  import type { ActionRow } from "./types/message-components";
22
23
  import type { PollCreateParams } from "./types/poll";
@@ -29,7 +30,8 @@ import type { VoiceRegion, VoiceState } from "./types/voice";
29
30
  import type { Webhook } from "./types/webhook";
30
31
  import type { ClientOptions as WebSocketOptions } from "ws";
31
32
  import type { Embed, AllowedMentions, Attachment, Message, MessageReference } from "./types/message";
32
- import { Subscription } from "./types/subscription";
33
+ import type { Subscription } from "./types/subscription";
34
+ import type { SoundboardSound } from "./types/soundboard";
33
35
  export interface GatewayOptions {
34
36
  properties?: IdentifyConnectionProperties;
35
37
  compress?: boolean;
@@ -285,6 +287,14 @@ export declare class Client extends EventEmitter {
285
287
  tags: string;
286
288
  file: File;
287
289
  }, reason?: string): Promise<Sticker>;
290
+ /** https://discord.com/developers/docs/resources/soundboard#create-guild-soundboard-sound */
291
+ createGuildSoundboardSound(guildID: snowflake, options: {
292
+ name: string;
293
+ sound: Buffer;
294
+ volume?: number | null;
295
+ emojiID?: snowflake | null;
296
+ emojiName?: snowflake | null;
297
+ }, reason?: string): Promise<SoundboardSound>;
288
298
  /** https://discord.com/developers/docs/resources/guild-template#create-guild-template */
289
299
  createGuildTemplate(guildID: snowflake, options: {
290
300
  name: string;
@@ -305,7 +315,9 @@ export declare class Client extends EventEmitter {
305
315
  poll?: PollCreateParams;
306
316
  }): Promise<Message>;
307
317
  /** https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response */
308
- createInteractionResponse(interactionID: snowflake, interactionToken: string, options: InteractionResponse): void;
318
+ createInteractionResponse(interactionID: snowflake, interactionToken: string, options: InteractionResponse & {
319
+ withResponse?: boolean;
320
+ }): Promise<void | InteractionCallbackResponse>;
309
321
  /** https://discord.com/developers/docs/resources/message#create-message */
310
322
  createMessage(channelID: snowflake, options: {
311
323
  content?: string;
@@ -397,6 +409,8 @@ export declare class Client extends EventEmitter {
397
409
  deleteGuildScheduledEvent(guildID: snowflake, guildScheduledEventID: snowflake): void;
398
410
  /** https://discord.com/developers/docs/resources/sticker#delete-guild-sticker */
399
411
  deleteGuildSticker(guildID: snowflake, stickerID: snowflake, reason?: string): void;
412
+ /** https://discord.com/developers/docs/resources/soundboard#delete-guild-soundboard-sound */
413
+ deleteGuildSoundboardSound(guildID: snowflake, soundID: snowflake, reason?: string): void;
400
414
  /** https://discord.com/developers/docs/resources/guild-template#delete-guild-template */
401
415
  deleteGuildTemplate(guildID: snowflake, code: string): Promise<GuildTemplate>;
402
416
  /** https://discord.com/developers/docs/resources/invite#delete-invite */
@@ -617,6 +631,13 @@ export declare class Client extends EventEmitter {
617
631
  description?: string | null;
618
632
  tags?: string;
619
633
  }, reason?: string): Promise<Sticker>;
634
+ /** https://discord.com/developers/docs/resources/soundboard#edit-guild-soundboard-sound */
635
+ editGuildSoundboardSound(guildID: snowflake, soundID: snowflake, options: {
636
+ name?: string;
637
+ volume?: number | null;
638
+ emojiID?: snowflake | null;
639
+ emojiName?: snowflake | null;
640
+ }, reason?: string): Promise<SoundboardSound>;
620
641
  /** https://discord.com/developers/docs/resources/guild-template#modify-guild-template */
621
642
  editGuildTemplate(guildID: snowflake, code: string, options: {
622
643
  name?: string;
@@ -656,6 +677,7 @@ export declare class Client extends EventEmitter {
656
677
  components?: Array<ActionRow> | null;
657
678
  files?: Array<File> | null;
658
679
  attachments?: Array<Partial<Attachment>> | null;
680
+ poll?: PollCreateParams | null;
659
681
  threadID?: snowflake;
660
682
  }): Promise<Message>;
661
683
  /** https://discord.com/developers/docs/interactions/receiving-and-responding#edit-original-interaction-response */
@@ -666,6 +688,7 @@ export declare class Client extends EventEmitter {
666
688
  components?: Array<ActionRow> | null;
667
689
  files?: Array<File> | null;
668
690
  attachments?: Array<Partial<Attachment>> | null;
691
+ poll?: PollCreateParams | null;
669
692
  threadID?: snowflake;
670
693
  }): Promise<Message>;
671
694
  /** https://discord.com/developers/docs/resources/guild#modify-user-voice-state */
@@ -687,6 +710,7 @@ export declare class Client extends EventEmitter {
687
710
  components?: Array<ActionRow> | null;
688
711
  files?: Array<File> | null;
689
712
  attachments?: Array<Partial<Attachment>> | null;
713
+ poll?: PollCreateParams | null;
690
714
  threadID?: snowflake;
691
715
  }): Promise<Message>;
692
716
  /** https://discord.com/developers/docs/resources/webhook#modify-webhook-with-token */
@@ -783,6 +807,10 @@ export declare class Client extends EventEmitter {
783
807
  getCurrentUserConnections(): Promise<Array<Connection>>;
784
808
  /** https://discord.com/developers/docs/resources/voice#get-current-user-voice-state */
785
809
  getCurrentUserVoiceState(guildID: snowflake): Promise<VoiceState>;
810
+ /** https://discord.com/developers/docs/resources/soundboard#list-default-soundboard-sounds */
811
+ getDefaultSoundboardSounds(): Promise<Array<SoundboardSound>>;
812
+ /** https://discord.com/developers/docs/resources/entitlement#get-entitlement */
813
+ getEntitlement(applicationID: snowflake, entitlementID: snowflake): Promise<Entitlement>;
786
814
  /** https://discord.com/developers/docs/resources/entitlement#list-entitlements */
787
815
  getEntitlements(applicationID: snowflake, options?: {
788
816
  userID?: snowflake;
@@ -792,6 +820,7 @@ export declare class Client extends EventEmitter {
792
820
  limit?: number;
793
821
  guildID?: snowflake;
794
822
  excludeEnded?: boolean;
823
+ excludeDeleted?: boolean;
795
824
  }): Promise<Array<Entitlement>>;
796
825
  /** https://discord.com/developers/docs/topics/gateway#get-gateway */
797
826
  getGateway(): Promise<{
@@ -883,6 +912,11 @@ export declare class Client extends EventEmitter {
883
912
  getGuildSticker(guildID: snowflake, stickerID: snowflake): Promise<Sticker>;
884
913
  /** https://discord.com/developers/docs/resources/sticker#list-guild-stickers */
885
914
  getGuildStickers(guildID: snowflake): Promise<Array<Sticker>>;
915
+ /** https://discord.com/developers/docs/resources/soundboard#get-guild-soundboard-sound */
916
+ getGuildSoundboardSound(guildID: snowflake, soundID: snowflake): Promise<SoundboardSound>;
917
+ getGuildSoundboardSounds(guildID: snowflake): Promise<{
918
+ items: Array<SoundboardSound>;
919
+ }>;
886
920
  /** https://discord.com/developers/docs/resources/guild-template#get-guild-template */
887
921
  getGuildTemplate(guildID: snowflake, code: string): Promise<GuildTemplate>;
888
922
  /** https://discord.com/developers/docs/resources/guild-template#get-guild-templates */
@@ -1031,6 +1065,11 @@ export declare class Client extends EventEmitter {
1031
1065
  query: string;
1032
1066
  limit?: number;
1033
1067
  }): Promise<Array<GuildMember>>;
1068
+ /** https://discord.com/developers/docs/resources/soundboard#send-soundboard-sound */
1069
+ sendSoundboardSound(channelID: snowflake, options: {
1070
+ soundID: snowflake;
1071
+ sourceGuildID?: snowflake;
1072
+ }): void;
1034
1073
  /** https://discord.com/developers/docs/topics/gateway-events#update-presence */
1035
1074
  setPresence(options: Partial<Pick<GatewayPresenceUpdate, "activities" | "status" | "afk">>): void;
1036
1075
  /** https://discord.com/developers/docs/resources/guild-template#sync-guild-template */
@@ -1127,6 +1166,14 @@ export interface ClientEvents {
1127
1166
  guildScheduledEventID: snowflake,
1128
1167
  guildID: snowflake
1129
1168
  ];
1169
+ guildSoundboardSoundCreate: [sound: SoundboardSound];
1170
+ guildSoundboardSoundUpdate: [sound: SoundboardSound];
1171
+ guildSoundboardSoundDelete: [sound: GuildSoundboardSoundDeleteEventFields];
1172
+ guildSoundboardSoundsUpdate: [
1173
+ sounds: Array<SoundboardSound>,
1174
+ guildID: snowflake
1175
+ ];
1176
+ soundboardSounds: [sounds: Array<SoundboardSound>, guildID: snowflake];
1130
1177
  integrationCreate: [
1131
1178
  integration: Integration & IntegrationCreateEventExtraFields
1132
1179
  ];
@@ -418,6 +418,20 @@ class Client extends node_events_1.default {
418
418
  });
419
419
  return transformers_1.Stickers.stickerFromRaw(response);
420
420
  }
421
+ /** https://discord.com/developers/docs/resources/soundboard#create-guild-soundboard-sound */
422
+ async createGuildSoundboardSound(guildID, options, reason) {
423
+ const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.guildSoundboardSounds(guildID), {
424
+ json: {
425
+ name: options.name,
426
+ sound: options.sound,
427
+ volume: options.volume,
428
+ emoji_id: options.emojiID,
429
+ emoji_name: options.emojiName,
430
+ },
431
+ reason,
432
+ });
433
+ return transformers_1.Soundboards.soundboardSoundFromRaw(response);
434
+ }
421
435
  /** https://discord.com/developers/docs/resources/guild-template#create-guild-template */
422
436
  async createGuildTemplate(guildID, options) {
423
437
  const response = await this.rest.request(rest_1.RESTMethods.Post, rest_1.Endpoints.guildTemplates(guildID), {
@@ -469,106 +483,118 @@ class Client extends node_events_1.default {
469
483
  return transformers_1.Messages.messageFromRaw(response);
470
484
  }
471
485
  /** https://discord.com/developers/docs/interactions/receiving-and-responding#create-interaction-response */
472
- createInteractionResponse(interactionID, interactionToken, options) {
486
+ async createInteractionResponse(interactionID, interactionToken, options) {
487
+ let json;
488
+ let files;
473
489
  switch (options.type) {
474
490
  case constants_1.InteractionCallbackType.ChannelMessageWithSource:
475
491
  case constants_1.InteractionCallbackType.UpdateMessage:
476
492
  {
477
- this.rest.request(rest_1.RESTMethods.Post, rest_1.Endpoints.interactionCallback(interactionID, interactionToken), {
478
- json: {
479
- type: options.type,
480
- data: {
481
- content: options.data?.content,
482
- embeds: options.data?.embeds !== undefined
483
- ? options.data.embeds.map((embed) => transformers_1.Messages.embedToRaw(embed))
484
- : undefined,
485
- allowed_mentions: options.data?.allowedMentions !== undefined
486
- ? {
487
- parse: options.data.allowedMentions.parse,
488
- roles: options.data.allowedMentions.roles,
489
- users: options.data.allowedMentions.users,
490
- replied_user: options.data.allowedMentions.repliedUser,
491
- }
492
- : undefined,
493
- flags: options.data?.flags,
494
- components: options.data?.components !== undefined
495
- ? transformers_1.Messages.componentsToRaw(options.data.components)
496
- : undefined,
497
- attachments: options.data?.attachments,
498
- poll: options.data?.poll !== undefined
499
- ? {
500
- question: options.data.poll.question,
501
- answers: options.data.poll.answers.map((answer) => ({
502
- answer_id: answer.answerID,
503
- poll_media: answer.pollMedia,
504
- })),
505
- duration: options.data.poll.duration,
506
- allow_multiselect: options.data.poll.allowMultiselect,
507
- layout_type: options.data.poll.layoutType,
508
- }
509
- : undefined,
510
- },
493
+ json = {
494
+ type: options.type,
495
+ data: {
496
+ content: options.data?.content,
497
+ embeds: options.data?.embeds !== undefined
498
+ ? options.data.embeds.map((embed) => transformers_1.Messages.embedToRaw(embed))
499
+ : undefined,
500
+ allowed_mentions: options.data?.allowedMentions !== undefined
501
+ ? {
502
+ parse: options.data.allowedMentions.parse,
503
+ roles: options.data.allowedMentions.roles,
504
+ users: options.data.allowedMentions.users,
505
+ replied_user: options.data.allowedMentions.repliedUser,
506
+ }
507
+ : undefined,
508
+ flags: options.data?.flags,
509
+ components: options.data?.components !== undefined
510
+ ? transformers_1.Messages.componentsToRaw(options.data.components)
511
+ : undefined,
512
+ attachments: options.data?.attachments,
513
+ poll: options.data?.poll !== undefined
514
+ ? {
515
+ question: options.data.poll.question,
516
+ answers: options.data.poll.answers.map((answer) => ({
517
+ answer_id: answer.answerID,
518
+ poll_media: answer.pollMedia,
519
+ })),
520
+ duration: options.data.poll.duration,
521
+ allow_multiselect: options.data.poll.allowMultiselect,
522
+ layout_type: options.data.poll.layoutType,
523
+ }
524
+ : undefined,
511
525
  },
512
- files: options.data?.files,
513
- });
526
+ };
527
+ files = options.data?.files;
514
528
  }
515
529
  break;
516
530
  case constants_1.InteractionCallbackType.DeferredChannelMessageWithSource:
517
531
  case constants_1.InteractionCallbackType.DeferredUpdateMessage:
518
532
  {
519
- this.rest.request(rest_1.RESTMethods.Post, rest_1.Endpoints.interactionCallback(interactionID, interactionToken), {
520
- json: {
521
- type: options.type,
522
- data: {
523
- flags: options.data?.flags,
524
- },
533
+ json = {
534
+ type: options.type,
535
+ data: {
536
+ flags: options.data?.flags,
525
537
  },
526
- });
538
+ };
527
539
  }
528
540
  break;
529
541
  case constants_1.InteractionCallbackType.ApplicationCommandAutocompleteResult:
530
542
  {
531
- this.rest.request(rest_1.RESTMethods.Post, rest_1.Endpoints.interactionCallback(interactionID, interactionToken), {
532
- json: {
533
- type: options.type,
534
- data: {
535
- choices: options.data?.choices?.map((choice) => ({
536
- name: choice.name,
537
- name_localizations: choice.nameLocalizations,
538
- value: choice.value,
539
- })),
540
- },
543
+ json = {
544
+ type: options.type,
545
+ data: {
546
+ choices: options.data?.choices?.map((choice) => ({
547
+ name: choice.name,
548
+ name_localizations: choice.nameLocalizations,
549
+ value: choice.value,
550
+ })),
541
551
  },
542
- });
552
+ };
543
553
  }
544
554
  break;
545
555
  case constants_1.InteractionCallbackType.Modal:
546
556
  {
547
- this.rest.request(rest_1.RESTMethods.Post, rest_1.Endpoints.interactionCallback(interactionID, interactionToken), {
548
- json: {
549
- type: options.type,
550
- data: {
551
- custom_id: options.data?.customID,
552
- components: options.data?.components !== undefined
553
- ? transformers_1.Messages.componentsToRaw(options.data.components)
554
- : undefined,
555
- title: options.data?.title,
556
- },
557
+ json = {
558
+ type: options.type,
559
+ data: {
560
+ custom_id: options.data?.customID,
561
+ components: options.data?.components !== undefined
562
+ ? transformers_1.Messages.componentsToRaw(options.data.components)
563
+ : undefined,
564
+ title: options.data?.title,
557
565
  },
558
- });
566
+ };
559
567
  }
560
568
  break;
561
569
  case constants_1.InteractionCallbackType.PremiumRequired:
570
+ case constants_1.InteractionCallbackType.LaunchActivity:
562
571
  {
563
- this.rest.request(rest_1.RESTMethods.Post, rest_1.Endpoints.interactionCallback(interactionID, interactionToken), {
564
- json: {
565
- type: options.type,
566
- data: {},
567
- },
568
- });
572
+ json = {
573
+ type: options.type,
574
+ data: {},
575
+ };
569
576
  }
570
577
  break;
571
578
  }
579
+ if (options.withResponse) {
580
+ const response = await this.rest.request(rest_1.RESTMethods.Post, rest_1.Endpoints.interactionCallback(interactionID, interactionToken), {
581
+ json,
582
+ query: {
583
+ with_response: options.withResponse,
584
+ },
585
+ files,
586
+ });
587
+ return transformers_1.Interactions.interactionCallbackResponseFromRaw(response);
588
+ }
589
+ else {
590
+ this.rest.request(rest_1.RESTMethods.Post, rest_1.Endpoints.interactionCallback(interactionID, interactionToken), {
591
+ json,
592
+ query: {
593
+ with_response: options.withResponse,
594
+ },
595
+ files,
596
+ });
597
+ }
572
598
  }
573
599
  /** https://discord.com/developers/docs/resources/message#create-message */
574
600
  async createMessage(channelID, options) {
@@ -774,6 +800,12 @@ class Client extends node_events_1.default {
774
800
  reason,
775
801
  });
776
802
  }
803
+ /** https://discord.com/developers/docs/resources/soundboard#delete-guild-soundboard-sound */
804
+ deleteGuildSoundboardSound(guildID, soundID, reason) {
805
+ this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.guildSoundboardSound(guildID, soundID), {
806
+ reason,
807
+ });
808
+ }
777
809
  /** https://discord.com/developers/docs/resources/guild-template#delete-guild-template */
778
810
  async deleteGuildTemplate(guildID, code) {
779
811
  const response = await this.rest.request(rest_1.RESTMethods.Delete, rest_1.Endpoints.guildTemplate(guildID, code));
@@ -1180,6 +1212,19 @@ class Client extends node_events_1.default {
1180
1212
  });
1181
1213
  return transformers_1.Stickers.stickerFromRaw(response);
1182
1214
  }
1215
+ /** https://discord.com/developers/docs/resources/soundboard#edit-guild-soundboard-sound */
1216
+ async editGuildSoundboardSound(guildID, soundID, options, reason) {
1217
+ const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.guildSoundboardSound(guildID, soundID), {
1218
+ json: {
1219
+ name: options.name,
1220
+ volume: options.volume,
1221
+ emoji_id: options.emojiID,
1222
+ emoji_name: options.emojiName,
1223
+ },
1224
+ reason,
1225
+ });
1226
+ return transformers_1.Soundboards.soundboardSoundFromRaw(response);
1227
+ }
1183
1228
  /** https://discord.com/developers/docs/resources/guild-template#modify-guild-template */
1184
1229
  async editGuildTemplate(guildID, code, options) {
1185
1230
  const response = await this.rest.request(rest_1.RESTMethods.Patch, rest_1.Endpoints.guildTemplate(guildID, code), {
@@ -1309,6 +1354,20 @@ class Client extends node_events_1.default {
1309
1354
  waveform: attachment.waveform,
1310
1355
  flags: attachment.flags,
1311
1356
  })),
1357
+ poll: options.poll !== undefined
1358
+ ? options.poll !== null
1359
+ ? {
1360
+ question: options.poll.question,
1361
+ answers: options.poll.answers.map((answer) => ({
1362
+ answer_id: answer.answerID,
1363
+ poll_media: answer.pollMedia,
1364
+ })),
1365
+ duration: options.poll.duration,
1366
+ allow_multiselect: options.poll.allowMultiselect,
1367
+ layout_type: options.poll.layoutType,
1368
+ }
1369
+ : null
1370
+ : undefined,
1312
1371
  },
1313
1372
  files: options.files,
1314
1373
  query: {
@@ -1356,6 +1415,20 @@ class Client extends node_events_1.default {
1356
1415
  waveform: attachment.waveform,
1357
1416
  flags: attachment.flags,
1358
1417
  })),
1418
+ poll: options.poll !== undefined
1419
+ ? options.poll !== null
1420
+ ? {
1421
+ question: options.poll.question,
1422
+ answers: options.poll.answers.map((answer) => ({
1423
+ answer_id: answer.answerID,
1424
+ poll_media: answer.pollMedia,
1425
+ })),
1426
+ duration: options.poll.duration,
1427
+ allow_multiselect: options.poll.allowMultiselect,
1428
+ layout_type: options.poll.layoutType,
1429
+ }
1430
+ : null
1431
+ : undefined,
1359
1432
  },
1360
1433
  files: options.files,
1361
1434
  query: {
@@ -1424,6 +1497,20 @@ class Client extends node_events_1.default {
1424
1497
  waveform: attachment.waveform,
1425
1498
  flags: attachment.flags,
1426
1499
  })),
1500
+ poll: options.poll !== undefined
1501
+ ? options.poll !== null
1502
+ ? {
1503
+ question: options.poll.question,
1504
+ answers: options.poll.answers.map((answer) => ({
1505
+ answer_id: answer.answerID,
1506
+ poll_media: answer.pollMedia,
1507
+ })),
1508
+ duration: options.poll.duration,
1509
+ allow_multiselect: options.poll.allowMultiselect,
1510
+ layout_type: options.poll.layoutType,
1511
+ }
1512
+ : null
1513
+ : undefined,
1427
1514
  },
1428
1515
  files: options.files,
1429
1516
  query: {
@@ -1665,6 +1752,16 @@ class Client extends node_events_1.default {
1665
1752
  const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.guildVoiceState(guildID));
1666
1753
  return transformers_1.Voice.voiceStateFromRaw(response);
1667
1754
  }
1755
+ /** https://discord.com/developers/docs/resources/soundboard#list-default-soundboard-sounds */
1756
+ async getDefaultSoundboardSounds() {
1757
+ const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.soundboardDefaultSounds());
1758
+ return response.map((sound) => transformers_1.Soundboards.soundboardSoundFromRaw(sound));
1759
+ }
1760
+ /** https://discord.com/developers/docs/resources/entitlement#get-entitlement */
1761
+ async getEntitlement(applicationID, entitlementID) {
1762
+ const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.applicationEntitlement(applicationID, entitlementID));
1763
+ return transformers_1.Entitlements.entitlementFromRaw(response);
1764
+ }
1668
1765
  /** https://discord.com/developers/docs/resources/entitlement#list-entitlements */
1669
1766
  async getEntitlements(applicationID, options) {
1670
1767
  const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.applicationEntitlements(applicationID), {
@@ -1676,6 +1773,7 @@ class Client extends node_events_1.default {
1676
1773
  limit: options?.limit,
1677
1774
  guild_id: options?.guildID,
1678
1775
  exclude_ended: options?.excludeEnded,
1776
+ exclude_deleted: options?.excludeDeleted,
1679
1777
  },
1680
1778
  });
1681
1779
  return response.map((entitlement) => transformers_1.Entitlements.entitlementFromRaw(entitlement));
@@ -1918,6 +2016,17 @@ class Client extends node_events_1.default {
1918
2016
  const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.guildStickers(guildID));
1919
2017
  return response.map((sticker) => transformers_1.Stickers.stickerFromRaw(sticker));
1920
2018
  }
2019
+ /** https://discord.com/developers/docs/resources/soundboard#get-guild-soundboard-sound */
2020
+ async getGuildSoundboardSound(guildID, soundID) {
2021
+ const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.guildSoundboardSound(guildID, soundID));
2022
+ return transformers_1.Soundboards.soundboardSoundFromRaw(response);
2023
+ }
2024
+ async getGuildSoundboardSounds(guildID) {
2025
+ const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.guildSoundboardSounds(guildID));
2026
+ return {
2027
+ items: response.items.map((sound) => transformers_1.Soundboards.soundboardSoundFromRaw(sound)),
2028
+ };
2029
+ }
1921
2030
  /** https://discord.com/developers/docs/resources/guild-template#get-guild-template */
1922
2031
  async getGuildTemplate(guildID, code) {
1923
2032
  const response = await this.rest.request(rest_1.RESTMethods.Get, rest_1.Endpoints.guildTemplate(guildID, code));
@@ -2271,6 +2380,15 @@ class Client extends node_events_1.default {
2271
2380
  });
2272
2381
  return response.map((guildMember) => transformers_1.Guilds.guildMemberFromRaw(guildMember));
2273
2382
  }
2383
+ /** https://discord.com/developers/docs/resources/soundboard#send-soundboard-sound */
2384
+ sendSoundboardSound(channelID, options) {
2385
+ this.rest.request(rest_1.RESTMethods.Post, rest_1.Endpoints.sendSoundboardSound(channelID), {
2386
+ json: {
2387
+ sound_id: options.soundID,
2388
+ source_guild_id: options.sourceGuildID,
2389
+ },
2390
+ });
2391
+ }
2274
2392
  /** https://discord.com/developers/docs/topics/gateway-events#update-presence */
2275
2393
  setPresence(options) {
2276
2394
  this.shards.forEach((shard) => shard.updatePresence(options));