disgroove 3.0.0-dev.fd521a8 → 3.0.1-dev.24a02ed

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 (38) hide show
  1. package/LICENSE +9 -9
  2. package/README.md +48 -48
  3. package/dist/lib/Client.d.ts +68 -58
  4. package/dist/lib/Client.js +59 -23
  5. package/dist/lib/constants.d.ts +17 -4
  6. package/dist/lib/constants.js +18 -4
  7. package/dist/lib/gateway/Dispatcher.d.ts +104 -0
  8. package/dist/lib/gateway/Dispatcher.js +472 -0
  9. package/dist/lib/gateway/Shard.d.ts +10 -22
  10. package/dist/lib/gateway/Shard.js +123 -656
  11. package/dist/lib/gateway/Transmitter.d.ts +22 -0
  12. package/dist/lib/gateway/Transmitter.js +93 -0
  13. package/dist/lib/rest/Endpoints.d.ts +3 -0
  14. package/dist/lib/rest/Endpoints.js +10 -3
  15. package/dist/lib/rest/RequestManager.js +21 -7
  16. package/dist/lib/rest/index.js +17 -7
  17. package/dist/lib/transformers/Components.d.ts +3 -1
  18. package/dist/lib/transformers/Components.js +26 -0
  19. package/dist/lib/transformers/Guilds.d.ts +2 -0
  20. package/dist/lib/transformers/Guilds.js +134 -0
  21. package/dist/lib/transformers/Interactions.js +30 -0
  22. package/dist/lib/transformers/Invites.js +2 -2
  23. package/dist/lib/transformers/Presences.d.ts +3 -3
  24. package/dist/lib/types/components.d.ts +36 -4
  25. package/dist/lib/types/gateway-events.d.ts +203 -75
  26. package/dist/lib/types/interaction.d.ts +3 -3
  27. package/dist/lib/types/invite.d.ts +5 -2
  28. package/dist/lib/utils/errors.d.ts +3 -1
  29. package/dist/lib/utils/errors.js +4 -0
  30. package/dist/lib/utils/formatters.js +9 -10
  31. package/dist/lib/utils/index.d.ts +1 -0
  32. package/dist/lib/utils/index.js +18 -7
  33. package/dist/lib/utils/permissions.d.ts +2 -0
  34. package/dist/lib/utils/permissions.js +7 -0
  35. package/dist/package.json +5 -5
  36. package/package.json +6 -6
  37. package/dist/lib/types/message-components.d.ts +0 -450
  38. package/dist/lib/types/message-components.js +0 -2
@@ -0,0 +1,22 @@
1
+ import WebSocket from "ws";
2
+ import { GatewayOPCodes } from "../constants";
3
+ import type { GatewayPresenceUpdate, GatewayVoiceStateUpdate, Identify, RequestGuildMembers, RequestSoundboardSounds, Resume } from "../types/gateway-events";
4
+ export declare class Transmitter {
5
+ private ws;
6
+ constructor(ws: WebSocket | null);
7
+ send(op: GatewayOPCodes, data: unknown): void;
8
+ /** https://discord.com/developers/docs/topics/gateway-events#heartbeat */
9
+ heartbeat(lastSequence: number | null): void;
10
+ /** https://discord.com/developers/docs/topics/gateway-events#identify */
11
+ identify(options: Identify): void;
12
+ /** https://discord.com/developers/docs/topics/gateway-events#request-guild-members */
13
+ requestGuildMembers(options: RequestGuildMembers): void;
14
+ /** https://discord.com/developers/docs/topics/gateway-events#request-soundboard-sounds */
15
+ requestSoundboardSounds(options: RequestSoundboardSounds): void;
16
+ /** https://discord.com/developers/docs/topics/gateway-events#resume */
17
+ resume(options: Resume): void;
18
+ /** https://discord.com/developers/docs/topics/gateway-events#update-presence */
19
+ updatePresence(options: Partial<Pick<GatewayPresenceUpdate, "activities" | "status" | "afk">>): void;
20
+ /** https://discord.com/developers/docs/topics/gateway-events#update-voice-state */
21
+ updateVoiceState(options: GatewayVoiceStateUpdate): void;
22
+ }
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Transmitter = void 0;
7
+ const ws_1 = __importDefault(require("ws"));
8
+ const constants_1 = require("../constants");
9
+ class Transmitter {
10
+ ws;
11
+ constructor(ws) {
12
+ this.ws = ws;
13
+ }
14
+ send(op, data) {
15
+ if (this.ws && this.ws.readyState === ws_1.default.OPEN) {
16
+ this.ws.send(JSON.stringify({
17
+ op,
18
+ d: data,
19
+ }));
20
+ }
21
+ }
22
+ /** https://discord.com/developers/docs/topics/gateway-events#heartbeat */
23
+ heartbeat(lastSequence) {
24
+ this.send(constants_1.GatewayOPCodes.Heartbeat, lastSequence);
25
+ }
26
+ /** https://discord.com/developers/docs/topics/gateway-events#identify */
27
+ identify(options) {
28
+ this.send(constants_1.GatewayOPCodes.Identify, {
29
+ token: options.token,
30
+ properties: {
31
+ os: options.properties.os,
32
+ browser: options.properties.browser,
33
+ device: options.properties.device,
34
+ },
35
+ compress: options.compress,
36
+ large_threshold: options.largeThreshold,
37
+ shard: options.shard,
38
+ presence: options.presence,
39
+ intents: options.intents,
40
+ });
41
+ }
42
+ /** https://discord.com/developers/docs/topics/gateway-events#request-guild-members */
43
+ requestGuildMembers(options) {
44
+ this.send(constants_1.GatewayOPCodes.RequestGuildMembers, {
45
+ guild_id: options.guildId,
46
+ query: options.query,
47
+ limit: options.limit,
48
+ presences: options.presences,
49
+ user_ids: options.userIds,
50
+ nonce: options.nonce,
51
+ });
52
+ }
53
+ /** https://discord.com/developers/docs/topics/gateway-events#request-soundboard-sounds */
54
+ requestSoundboardSounds(options) {
55
+ this.send(constants_1.GatewayOPCodes.RequestSoundboardSounds, {
56
+ guild_ids: options.guildIds,
57
+ });
58
+ }
59
+ /** https://discord.com/developers/docs/topics/gateway-events#resume */
60
+ resume(options) {
61
+ this.send(constants_1.GatewayOPCodes.Resume, {
62
+ token: options.token,
63
+ session_id: options.sessionId,
64
+ seq: options.seq,
65
+ });
66
+ }
67
+ /** https://discord.com/developers/docs/topics/gateway-events#update-presence */
68
+ updatePresence(options) {
69
+ this.send(constants_1.GatewayOPCodes.PresenceUpdate, {
70
+ since: options.status === constants_1.StatusTypes.Idle ? Date.now() : null,
71
+ activities: options.activities?.map((activity) => ({
72
+ name: activity.type === constants_1.ActivityType.Custom
73
+ ? "Custom Status"
74
+ : activity.name,
75
+ type: activity.type,
76
+ url: activity.url,
77
+ state: activity.state,
78
+ })),
79
+ status: options.status ?? constants_1.StatusTypes.Online,
80
+ afk: !!options.afk,
81
+ });
82
+ }
83
+ /** https://discord.com/developers/docs/topics/gateway-events#update-voice-state */
84
+ updateVoiceState(options) {
85
+ this.send(constants_1.GatewayOPCodes.VoiceStateUpdate, {
86
+ guild_id: options.guildId,
87
+ channel_id: options.channelId,
88
+ self_mute: options.selfMute,
89
+ self_deaf: options.selfDeaf,
90
+ });
91
+ }
92
+ }
93
+ exports.Transmitter = Transmitter;
@@ -26,6 +26,7 @@ export declare const guildOnboarding: (guildId: snowflake) => `guilds/${string}/
26
26
  export declare const guildPreview: (guildId: snowflake) => `guilds/${string}/preview`;
27
27
  export declare const guildPrune: (guildId: snowflake) => `guilds/${string}/prune`;
28
28
  export declare const guildRole: (guildId: snowflake, roleId: snowflake) => `guilds/${string}/roles/${string}`;
29
+ export declare const guildRoleMemberCounts: (guildId: snowflake) => `guilds/${string}/roles/member-counts`;
29
30
  export declare const guildRoles: (guildId: snowflake) => `guilds/${string}/roles`;
30
31
  export declare const guildScheduledEvent: (guildId: snowflake, guildScheduledEventId: snowflake) => `guilds/${string}/scheduled-events/${string}`;
31
32
  export declare const guildScheduledEvents: (guildId: snowflake) => `guilds/${string}/scheduled-events`;
@@ -112,3 +113,5 @@ export declare const lobbies: () => "lobbies";
112
113
  export declare const lobby: (lobbyId: snowflake) => `lobbies/${string}`;
113
114
  export declare const lobbyMember: (lobbyId: snowflake, userId?: snowflake | "@me") => `lobbies/${string}/members/${string}`;
114
115
  export declare const lobbyChannelLinking: (lobbyId: snowflake) => `lobbies/${string}/channel-linking`;
116
+ export declare const inviteTargetUsers: (inviteCode: string) => `invites/${string}/target-users`;
117
+ export declare const inviteTargetUsersJobStatus: (inviteCode: string) => `invites/${string}/target-users/job-status`;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.channelInvites = exports.channelFollowers = exports.channelBulkDelete = exports.channel = exports.template = exports.guildWidgetSettings = exports.guildWidgetJSON = exports.guildWidgetImage = exports.guildWelcomeScreen = exports.guildWebhooks = exports.guildVoiceState = exports.guildVoiceRegions = exports.guildVanityURL = exports.guildTemplates = exports.guildTemplate = exports.guildStickers = exports.guildSticker = exports.guildSoundboardSounds = exports.guildSoundboardSound = exports.guildScheduledEventUsers = exports.guildScheduledEvents = exports.guildScheduledEvent = exports.guildRoles = exports.guildRole = exports.guildPrune = exports.guildPreview = exports.guildOnboarding = exports.guildMemberVerification = exports.guildMembersSearch = exports.guildMembers = exports.guildMemberRole = exports.guildMember = exports.guildMFA = exports.guildInvites = exports.guildIntegrations = exports.guildIntegration = exports.guildIncidentsActions = exports.guildEmojis = exports.guildEmoji = exports.guildMemberNickname = exports.guildChannels = exports.guildBulkBan = exports.guildBans = exports.guildBan = exports.guildAutoModerationRules = exports.guildAutoModerationRule = exports.guildAuditLog = exports.guildActiveThreads = exports.guilds = exports.guild = void 0;
4
- exports.oauth2Application = exports.oauth2Authorize = exports.gatewayBot = exports.gateway = exports.soundboardDefaultSounds = exports.sendSoundboardSound = exports.skuSubscriptions = exports.skuSubscription = exports.stickerPacks = exports.stickerPack = exports.webhookPlatform = exports.webhookMessage = exports.webhook = exports.guildApplicationCommandsPermissions = exports.applicationSKUs = exports.applicationRoleConnectionMetadata = exports.applicationGuildCommands = exports.applicationGuildCommand = exports.applicationEntitlements = exports.applicationEntitlementConsume = exports.applicationEntitlement = exports.applicationEmojis = exports.applicationEmoji = exports.applicationUser = exports.applicationCommandPermissions = exports.applicationCommands = exports.applicationCommand = exports.applicationActivityInstance = exports.userGuilds = exports.userGuild = exports.userConnections = exports.userChannels = exports.userApplicationRoleConnection = exports.user = exports.pollExpire = exports.pollAnswerVoters = exports.threadMembers = exports.threads = exports.channelWebhooks = exports.channelTyping = exports.channelThreads = exports.channelRecipient = exports.channelPins = exports.channelPin = exports.channelPermission = exports.channelMessages = exports.channelMessageReaction = exports.channelMessageCrosspost = exports.channelMessageAllReactions = exports.channelMessage = void 0;
5
- exports.lobbyChannelLinking = exports.lobbyMember = exports.lobby = exports.lobbies = exports.voiceRegions = exports.sticker = exports.stageInstances = exports.stageInstance = exports.invite = exports.interactionCallback = exports.oauth2TokenRevocation = exports.oauth2TokenExchange = exports.oauth2Authorization = void 0;
3
+ exports.channelFollowers = exports.channelBulkDelete = exports.channel = exports.template = exports.guildWidgetSettings = exports.guildWidgetJSON = exports.guildWidgetImage = exports.guildWelcomeScreen = exports.guildWebhooks = exports.guildVoiceState = exports.guildVoiceRegions = exports.guildVanityURL = exports.guildTemplates = exports.guildTemplate = exports.guildStickers = exports.guildSticker = exports.guildSoundboardSounds = exports.guildSoundboardSound = exports.guildScheduledEventUsers = exports.guildScheduledEvents = exports.guildScheduledEvent = exports.guildRoles = exports.guildRoleMemberCounts = exports.guildRole = exports.guildPrune = exports.guildPreview = exports.guildOnboarding = exports.guildMemberVerification = exports.guildMembersSearch = exports.guildMembers = exports.guildMemberRole = exports.guildMember = exports.guildMFA = exports.guildInvites = exports.guildIntegrations = exports.guildIntegration = exports.guildIncidentsActions = exports.guildEmojis = exports.guildEmoji = exports.guildMemberNickname = exports.guildChannels = exports.guildBulkBan = exports.guildBans = exports.guildBan = exports.guildAutoModerationRules = exports.guildAutoModerationRule = exports.guildAuditLog = exports.guildActiveThreads = exports.guilds = exports.guild = void 0;
4
+ exports.oauth2Authorize = exports.gatewayBot = exports.gateway = exports.soundboardDefaultSounds = exports.sendSoundboardSound = exports.skuSubscriptions = exports.skuSubscription = exports.stickerPacks = exports.stickerPack = exports.webhookPlatform = exports.webhookMessage = exports.webhook = exports.guildApplicationCommandsPermissions = exports.applicationSKUs = exports.applicationRoleConnectionMetadata = exports.applicationGuildCommands = exports.applicationGuildCommand = exports.applicationEntitlements = exports.applicationEntitlementConsume = exports.applicationEntitlement = exports.applicationEmojis = exports.applicationEmoji = exports.applicationUser = exports.applicationCommandPermissions = exports.applicationCommands = exports.applicationCommand = exports.applicationActivityInstance = exports.userGuilds = exports.userGuild = exports.userConnections = exports.userChannels = exports.userApplicationRoleConnection = exports.user = exports.pollExpire = exports.pollAnswerVoters = exports.threadMembers = exports.threads = exports.channelWebhooks = exports.channelTyping = exports.channelThreads = exports.channelRecipient = exports.channelPins = exports.channelPin = exports.channelPermission = exports.channelMessages = exports.channelMessageReaction = exports.channelMessageCrosspost = exports.channelMessageAllReactions = exports.channelMessage = exports.channelInvites = void 0;
5
+ exports.inviteTargetUsersJobStatus = exports.inviteTargetUsers = exports.lobbyChannelLinking = exports.lobbyMember = exports.lobby = exports.lobbies = exports.voiceRegions = exports.sticker = exports.stageInstances = exports.stageInstance = exports.invite = exports.interactionCallback = exports.oauth2TokenRevocation = exports.oauth2TokenExchange = exports.oauth2Authorization = exports.oauth2Application = void 0;
6
6
  // Guilds
7
7
  const guild = (guildId) => `guilds/${guildId}`;
8
8
  exports.guild = guild;
@@ -58,6 +58,8 @@ const guildPrune = (guildId) => `guilds/${guildId}/prune`;
58
58
  exports.guildPrune = guildPrune;
59
59
  const guildRole = (guildId, roleId) => `guilds/${guildId}/roles/${roleId}`;
60
60
  exports.guildRole = guildRole;
61
+ const guildRoleMemberCounts = (guildId) => `guilds/${guildId}/roles/member-counts`;
62
+ exports.guildRoleMemberCounts = guildRoleMemberCounts;
61
63
  const guildRoles = (guildId) => `guilds/${guildId}/roles`;
62
64
  exports.guildRoles = guildRoles;
63
65
  const guildScheduledEvent = (guildId, guildScheduledEventId) => `guilds/${guildId}/scheduled-events/${guildScheduledEventId}`;
@@ -251,3 +253,8 @@ const lobbyMember = (lobbyId, userId = "@me") => `lobbies/${lobbyId}/members/${u
251
253
  exports.lobbyMember = lobbyMember;
252
254
  const lobbyChannelLinking = (lobbyId) => `lobbies/${lobbyId}/channel-linking`;
253
255
  exports.lobbyChannelLinking = lobbyChannelLinking;
256
+ // Invites
257
+ const inviteTargetUsers = (inviteCode) => `invites/${inviteCode}/target-users`;
258
+ exports.inviteTargetUsers = inviteTargetUsers;
259
+ const inviteTargetUsersJobStatus = (inviteCode) => `invites/${inviteCode}/target-users/job-status`;
260
+ exports.inviteTargetUsersJobStatus = inviteTargetUsersJobStatus;
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
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
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.RequestManager = exports.RESTMethods = void 0;
27
37
  const constants_1 = require("../constants");
@@ -113,6 +123,10 @@ class RequestManager {
113
123
  resolve(null);
114
124
  }
115
125
  else {
126
+ let blob = await response.blob();
127
+ if (blob) {
128
+ resolve(blob);
129
+ }
116
130
  resolve((await response.json()));
117
131
  }
118
132
  }
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
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
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
36
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
37
  };
@@ -1,4 +1,4 @@
1
- import { ActionRow, Button, Container, RawActionRow, RawButton, RawContainer, RawFile, File, RawUnfurledMediaItem, UnfurledMediaItem, RawTextDisplay, TextDisplay, RawSeparator, Separator, RawSection, Section, Thumbnail, RawThumbnail, TextInput, RawTextInput, MediaGallery, RawMediaGallery, RawStringSelect, StringSelect, RawUserSelect, UserSelect, RawRoleSelect, RoleSelect, RawMentionableSelect, MentionableSelect, RawChannelSelect, ChannelSelect, RawLabel, Label } from "../types/components";
1
+ import { ActionRow, Button, Container, RawActionRow, RawButton, RawContainer, RawFile, File, RawUnfurledMediaItem, UnfurledMediaItem, RawTextDisplay, TextDisplay, RawSeparator, Separator, RawSection, Section, Thumbnail, RawThumbnail, TextInput, RawTextInput, MediaGallery, RawMediaGallery, RawStringSelect, StringSelect, RawUserSelect, UserSelect, RawRoleSelect, RoleSelect, RawMentionableSelect, MentionableSelect, RawChannelSelect, ChannelSelect, RawLabel, Label, RawFileUpload, FileUpload } from "../types/components";
2
2
  export declare class Components {
3
3
  static actionRowFromRaw(actionRow: RawActionRow): ActionRow;
4
4
  static actionRowToRaw(actionRow: ActionRow): RawActionRow;
@@ -10,6 +10,8 @@ export declare class Components {
10
10
  static containerToRaw(container: Container): RawContainer;
11
11
  static fileFromRaw(file: RawFile): File;
12
12
  static fileToRaw(file: File): RawFile;
13
+ static fileUploadFromRaw(fileUpload: RawFileUpload): FileUpload;
14
+ static fileUploadToRaw(fileUpload: FileUpload): RawFileUpload;
13
15
  static labelFromRaw(label: RawLabel): Label;
14
16
  static labelToRaw(label: Label): RawLabel;
15
17
  static mediaGalleryFromRaw(mediaGallery: RawMediaGallery): MediaGallery;
@@ -183,6 +183,26 @@ class Components {
183
183
  size: file.size,
184
184
  };
185
185
  }
186
+ static fileUploadFromRaw(fileUpload) {
187
+ return {
188
+ type: fileUpload.type,
189
+ id: fileUpload.id,
190
+ customId: fileUpload.custom_id,
191
+ minValues: fileUpload.min_values,
192
+ maxValues: fileUpload.max_values,
193
+ required: fileUpload.required,
194
+ };
195
+ }
196
+ static fileUploadToRaw(fileUpload) {
197
+ return {
198
+ type: fileUpload.type,
199
+ id: fileUpload.id,
200
+ custom_id: fileUpload.customId,
201
+ min_values: fileUpload.minValues,
202
+ max_values: fileUpload.maxValues,
203
+ required: fileUpload.required,
204
+ };
205
+ }
186
206
  static labelFromRaw(label) {
187
207
  let component;
188
208
  switch (label.component.type) {
@@ -204,6 +224,9 @@ class Components {
204
224
  case constants_1.ComponentTypes.ChannelSelect:
205
225
  component = Components.channelSelectFromRaw(label.component);
206
226
  break;
227
+ case constants_1.ComponentTypes.FileUpload:
228
+ component = Components.fileUploadFromRaw(label.component);
229
+ break;
207
230
  }
208
231
  return {
209
232
  type: label.type,
@@ -234,6 +257,9 @@ class Components {
234
257
  case constants_1.ComponentTypes.ChannelSelect:
235
258
  component = Components.channelSelectToRaw(label.component);
236
259
  break;
260
+ case constants_1.ComponentTypes.FileUpload:
261
+ component = Components.fileUploadToRaw(label.component);
262
+ break;
237
263
  }
238
264
  return {
239
265
  type: label.type,
@@ -9,4 +9,6 @@ export declare class Guilds {
9
9
  static guildToRaw(guild: Guild): RawGuild;
10
10
  static integrationFromRaw(integration: RawIntegration): Integration;
11
11
  static integrationToRaw(integration: Integration): RawIntegration;
12
+ static partialGuildFromRaw(guild: Partial<RawGuild>): Partial<Guild>;
13
+ static partialGuildToRaw(guild: Partial<Guild>): Partial<RawGuild>;
12
14
  }
@@ -276,5 +276,139 @@ class Guilds {
276
276
  scopes: integration.scopes,
277
277
  };
278
278
  }
279
+ static partialGuildFromRaw(guild) {
280
+ return {
281
+ id: guild.id,
282
+ name: guild.name,
283
+ icon: guild.icon,
284
+ iconHash: guild.icon,
285
+ splash: guild.splash,
286
+ discoverySplash: guild.discovery_splash,
287
+ owner: guild.owner,
288
+ ownerId: guild.owner_id,
289
+ permissions: guild.permissions,
290
+ region: guild.region,
291
+ afkChannelId: guild.afk_channel_id,
292
+ afkTimeout: guild.afk_timeout,
293
+ widgetEnabled: guild.widget_enabled,
294
+ widgetChannelId: guild.widget_channel_id,
295
+ verificationLevel: guild.verification_level,
296
+ defaultMessageNotifications: guild.default_message_notifications,
297
+ explicitContentFilter: guild.explicit_content_filter,
298
+ roles: guild.roles?.map((role) => Roles_1.Roles.roleFromRaw(role)),
299
+ emojis: guild.emojis?.map((emoji) => Emojis_1.Emojis.emojiFromRaw(emoji)),
300
+ features: guild.features,
301
+ mfaLevel: guild.mfa_level,
302
+ applicationId: guild.application_id,
303
+ systemChannelId: guild.system_channel_id,
304
+ systemChannelFlags: guild.system_channel_flags,
305
+ rulesChannelId: guild.rules_channel_id,
306
+ maxPresences: guild.max_presences,
307
+ maxMembers: guild.max_members,
308
+ vanityURLCode: guild.vanity_url_code,
309
+ description: guild.description,
310
+ banner: guild.banner,
311
+ premiumTier: guild.premium_tier,
312
+ premiumSubscriptionCount: guild.premium_subscription_count,
313
+ preferredLocale: guild.preferred_locale,
314
+ publicUpdatesChannelId: guild.public_updates_channel_id,
315
+ maxVideoChannelUsers: guild.max_video_channel_users,
316
+ maxStageVideoChannelUsers: guild.max_stage_video_channel_users,
317
+ approximateMemberCount: guild.approximate_member_count,
318
+ approximatePresenceCount: guild.approximate_presence_count,
319
+ welcomeScreen: guild.welcome_screen !== undefined
320
+ ? {
321
+ description: guild.welcome_screen.description,
322
+ welcomeChannels: guild.welcome_screen.welcome_channels.map((welcomeScreenChannel) => ({
323
+ channelId: welcomeScreenChannel.channel_id,
324
+ description: welcomeScreenChannel.description,
325
+ emojiId: welcomeScreenChannel.emoji_id,
326
+ emojiName: welcomeScreenChannel.emoji_name,
327
+ })),
328
+ }
329
+ : undefined,
330
+ nsfwLevel: guild.nsfw_level,
331
+ stickers: guild.stickers?.map((sticker) => Stickers_1.Stickers.stickerFromRaw(sticker)),
332
+ premiumProgressBarEnabled: guild.premium_progress_bar_enabled,
333
+ safetyAlertsChannelId: guild.safety_alerts_channel_id,
334
+ incidentsData: guild.incidents_data !== undefined
335
+ ? guild.incidents_data !== null
336
+ ? {
337
+ invitesDisabledUntil: guild.incidents_data.invites_disabled_until,
338
+ dmsDisabledUntil: guild.incidents_data.dms_disabled_until,
339
+ dmSpamDetectedAt: guild.incidents_data.dm_spam_detected_at,
340
+ raidDetectedAt: guild.incidents_data.raid_detected_at,
341
+ }
342
+ : null
343
+ : undefined,
344
+ };
345
+ }
346
+ static partialGuildToRaw(guild) {
347
+ return {
348
+ id: guild.id,
349
+ name: guild.name,
350
+ icon: guild.icon,
351
+ icon_hash: guild.icon,
352
+ splash: guild.splash,
353
+ discovery_splash: guild.discoverySplash,
354
+ owner: guild.owner,
355
+ owner_id: guild.ownerId,
356
+ permissions: guild.permissions,
357
+ region: guild.region,
358
+ afk_channel_id: guild.afkChannelId,
359
+ afk_timeout: guild.afkTimeout,
360
+ widget_enabled: guild.widgetEnabled,
361
+ widget_channel_id: guild.widgetChannelId,
362
+ verification_level: guild.verificationLevel,
363
+ default_message_notifications: guild.defaultMessageNotifications,
364
+ explicit_content_filter: guild.explicitContentFilter,
365
+ roles: guild.roles?.map((role) => Roles_1.Roles.roleToRaw(role)),
366
+ emojis: guild.emojis?.map((emoji) => Emojis_1.Emojis.emojiToRaw(emoji)),
367
+ features: guild.features,
368
+ mfa_level: guild.mfaLevel,
369
+ application_id: guild.applicationId,
370
+ system_channel_id: guild.systemChannelId,
371
+ system_channel_flags: guild.systemChannelFlags,
372
+ rules_channel_id: guild.rulesChannelId,
373
+ max_presences: guild.maxPresences,
374
+ max_members: guild.maxMembers,
375
+ vanity_url_code: guild.vanityURLCode,
376
+ description: guild.description,
377
+ banner: guild.banner,
378
+ premium_tier: guild.premiumTier,
379
+ premium_subscription_count: guild.premiumSubscriptionCount,
380
+ preferred_locale: guild.preferredLocale,
381
+ public_updates_channel_id: guild.publicUpdatesChannelId,
382
+ max_video_channel_users: guild.maxVideoChannelUsers,
383
+ max_stage_video_channel_users: guild.maxStageVideoChannelUsers,
384
+ approximate_member_count: guild.approximateMemberCount,
385
+ approximate_presence_count: guild.approximatePresenceCount,
386
+ welcome_screen: guild.welcomeScreen !== undefined
387
+ ? {
388
+ description: guild.welcomeScreen.description,
389
+ welcome_channels: guild.welcomeScreen.welcomeChannels.map((welcomeScreenChannel) => ({
390
+ channel_id: welcomeScreenChannel.channelId,
391
+ description: welcomeScreenChannel.description,
392
+ emoji_id: welcomeScreenChannel.emojiId,
393
+ emoji_name: welcomeScreenChannel.emojiName,
394
+ })),
395
+ }
396
+ : undefined,
397
+ nsfw_level: guild.nsfwLevel,
398
+ stickers: guild.stickers?.map((sticker) => Stickers_1.Stickers.stickerToRaw(sticker)),
399
+ premium_progress_bar_enabled: guild.premiumProgressBarEnabled,
400
+ safety_alerts_channel_id: guild.safetyAlertsChannelId,
401
+ incidents_data: guild.incidentsData !== undefined
402
+ ? guild.incidentsData !== null
403
+ ? {
404
+ invites_disabled_until: guild.incidentsData.invitesDisabledUntil,
405
+ dms_disabled_until: guild.incidentsData.dmsDisabledUntil,
406
+ dm_spam_detected_at: guild.incidentsData.dmSpamDetectedAt,
407
+ raid_detected_at: guild.incidentsData.raidDetectedAt,
408
+ }
409
+ : null
410
+ : undefined,
411
+ };
412
+ }
279
413
  }
280
414
  exports.Guilds = Guilds;
@@ -128,6 +128,13 @@ class Interactions {
128
128
  resolved: this.resolvedDataFromRaw(c.resolved),
129
129
  values: c.values,
130
130
  };
131
+ case constants_1.ComponentTypes.FileUpload:
132
+ return {
133
+ type: c.type,
134
+ id: c.id,
135
+ customId: c.custom_id,
136
+ values: c.values,
137
+ };
131
138
  }
132
139
  }),
133
140
  };
@@ -196,6 +203,14 @@ class Interactions {
196
203
  values: component.component.values,
197
204
  };
198
205
  break;
206
+ case constants_1.ComponentTypes.FileUpload:
207
+ c = {
208
+ type: component.component.type,
209
+ id: component.component.id,
210
+ customId: component.component.custom_id,
211
+ values: component.component.values,
212
+ };
213
+ break;
199
214
  }
200
215
  return {
201
216
  type: component.type,
@@ -351,6 +366,13 @@ class Interactions {
351
366
  resolved: this.resolvedDataToRaw(c.resolved),
352
367
  values: c.values,
353
368
  };
369
+ case constants_1.ComponentTypes.FileUpload:
370
+ return {
371
+ type: c.type,
372
+ id: c.id,
373
+ custom_id: c.customId,
374
+ values: c.values,
375
+ };
354
376
  }
355
377
  }),
356
378
  };
@@ -419,6 +441,14 @@ class Interactions {
419
441
  values: component.component.values,
420
442
  };
421
443
  break;
444
+ case constants_1.ComponentTypes.FileUpload:
445
+ c = {
446
+ type: component.component.type,
447
+ id: component.component.id,
448
+ custom_id: component.component.customId,
449
+ values: component.component.values,
450
+ };
451
+ break;
422
452
  }
423
453
  return {
424
454
  type: component.type,
@@ -12,7 +12,7 @@ class Invites {
12
12
  type: invite.type,
13
13
  code: invite.code,
14
14
  guild: invite.guild !== undefined
15
- ? Guilds_1.Guilds.guildFromRaw(invite.guild)
15
+ ? Guilds_1.Guilds.partialGuildFromRaw(invite.guild)
16
16
  : undefined,
17
17
  channel: Channels_1.Channels.channelFromRaw(invite.channel),
18
18
  inviter: invite.inviter !== undefined
@@ -47,7 +47,7 @@ class Invites {
47
47
  type: invite.type,
48
48
  code: invite.code,
49
49
  guild: invite.guild !== undefined
50
- ? Guilds_1.Guilds.guildToRaw(invite.guild)
50
+ ? Guilds_1.Guilds.partialGuildToRaw(invite.guild)
51
51
  : undefined,
52
52
  channel: Channels_1.Channels.channelToRaw(invite.channel),
53
53
  inviter: invite.inviter !== undefined
@@ -1,5 +1,5 @@
1
- import type { RawPresenceUpdateEventFields, PresenceUpdateEventFields } from "../types/gateway-events";
1
+ import type { RawPresenceUpdateEvent, PresenceUpdateEvent } from "../types/gateway-events";
2
2
  export declare class Presences {
3
- static presenceFromRaw(presence: RawPresenceUpdateEventFields): PresenceUpdateEventFields;
4
- static presenceToRaw(presence: PresenceUpdateEventFields): RawPresenceUpdateEventFields;
3
+ static presenceFromRaw(presence: RawPresenceUpdateEvent): PresenceUpdateEvent;
4
+ static presenceToRaw(presence: PresenceUpdateEvent): RawPresenceUpdateEvent;
5
5
  }
@@ -222,13 +222,29 @@ export interface RawLabel {
222
222
  id?: number;
223
223
  label: string;
224
224
  description?: string;
225
- component: RawTextInput | RawStringSelect | RawUserSelect | RawRoleSelect | RawMentionableSelect | RawChannelSelect;
225
+ component: RawTextInput | RawStringSelect | RawUserSelect | RawRoleSelect | RawMentionableSelect | RawChannelSelect | RawFileUpload;
226
226
  }
227
227
  /** https://discord.com/developers/docs/components/reference#label-label-interaction-response-structure */
228
228
  export interface RawLabelInteractionResponse {
229
229
  type: ComponentTypes.Label;
230
230
  id: number;
231
- component: RawTextInputInteractionResponse | RawStringSelectInteractionResponse | RawUserSelectInteractionResponse | RawRoleSelectInteractionResponse | RawMentionableSelectInteractionResponse | RawChannelSelectInteractionResponse;
231
+ component: RawTextInputInteractionResponse | RawStringSelectInteractionResponse | RawUserSelectInteractionResponse | RawRoleSelectInteractionResponse | RawMentionableSelectInteractionResponse | RawChannelSelectInteractionResponse | RawFileUploadInteractionResponse;
232
+ }
233
+ /** https://discord.com/developers/docs/components/reference#file-upload-file-upload-structure */
234
+ export interface RawFileUpload {
235
+ type: ComponentTypes.FileUpload;
236
+ id?: number;
237
+ custom_id: string;
238
+ min_values?: number;
239
+ max_values?: number;
240
+ required?: boolean;
241
+ }
242
+ /** https://discord.com/developers/docs/components/reference#file-upload-file-upload-interaction-response-structure */
243
+ export interface RawFileUploadInteractionResponse {
244
+ type: ComponentTypes.FileUpload;
245
+ id: number;
246
+ custom_id: string;
247
+ values: Array<snowflake>;
232
248
  }
233
249
  /** https://discord.com/developers/docs/components/reference#unfurled-media-item-unfurled-media-item-structure */
234
250
  export interface RawUnfurledMediaItem {
@@ -459,13 +475,29 @@ export interface Label {
459
475
  id?: number;
460
476
  label: string;
461
477
  description?: string;
462
- component: TextInput | StringSelect | UserSelect | RoleSelect | MentionableSelect | ChannelSelect;
478
+ component: TextInput | StringSelect | UserSelect | RoleSelect | MentionableSelect | ChannelSelect | FileUpload;
463
479
  }
464
480
  /** https://discord.com/developers/docs/components/reference#label-label-interaction-response-structure */
465
481
  export interface LabelInteractionResponse {
466
482
  type: ComponentTypes.Label;
467
483
  id: number;
468
- component: TextInputInteractionResponse | StringSelectInteractionResponse | UserSelectInteractionResponse | RoleSelectInteractionResponse | MentionableSelectInteractionResponse | ChannelSelectInteractionResponse;
484
+ component: TextInputInteractionResponse | StringSelectInteractionResponse | UserSelectInteractionResponse | RoleSelectInteractionResponse | MentionableSelectInteractionResponse | ChannelSelectInteractionResponse | FileUploadInteractionResponse;
485
+ }
486
+ /** https://discord.com/developers/docs/components/reference#file-upload-file-upload-structure */
487
+ export interface FileUpload {
488
+ type: ComponentTypes.FileUpload;
489
+ id?: number;
490
+ customId: string;
491
+ minValues?: number;
492
+ maxValues?: number;
493
+ required?: boolean;
494
+ }
495
+ /** https://discord.com/developers/docs/components/reference#file-upload-file-upload-interaction-response-structure */
496
+ export interface FileUploadInteractionResponse {
497
+ type: ComponentTypes.FileUpload;
498
+ id: number;
499
+ customId: string;
500
+ values: Array<snowflake>;
469
501
  }
470
502
  /** https://discord.com/developers/docs/components/reference#unfurled-media-item-unfurled-media-item-structure */
471
503
  export interface UnfurledMediaItem {