oceanic.js 1.7.1-dev.bfbbbda → 1.7.1-dev.ceedfe2

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 (44) hide show
  1. package/dist/lib/Client.js +18 -1
  2. package/dist/lib/Constants.d.ts +27 -8
  3. package/dist/lib/Constants.js +46 -26
  4. package/dist/lib/gateway/ShardManager.js +2 -1
  5. package/dist/lib/index.d.ts +2 -0
  6. package/dist/lib/index.js +7 -3
  7. package/dist/lib/rest/RequestHandler.js +2 -2
  8. package/dist/lib/routes/Channels.d.ts +4 -4
  9. package/dist/lib/routes/Channels.js +4 -4
  10. package/dist/lib/structures/AutocompleteInteraction.d.ts +3 -1
  11. package/dist/lib/structures/AutocompleteInteraction.js +4 -1
  12. package/dist/lib/structures/Channel.js +5 -1
  13. package/dist/lib/structures/ClientApplication.d.ts +1 -1
  14. package/dist/lib/structures/ClientApplication.js +2 -2
  15. package/dist/lib/structures/CommandInteraction.d.ts +3 -1
  16. package/dist/lib/structures/CommandInteraction.js +4 -1
  17. package/dist/lib/structures/ComponentInteraction.d.ts +3 -1
  18. package/dist/lib/structures/ComponentInteraction.js +4 -1
  19. package/dist/lib/structures/ForumChannel.d.ts +5 -94
  20. package/dist/lib/structures/ForumChannel.js +5 -223
  21. package/dist/lib/structures/MediaChannel.d.ts +11 -0
  22. package/dist/lib/structures/MediaChannel.js +19 -0
  23. package/dist/lib/structures/Member.d.ts +3 -3
  24. package/dist/lib/structures/Member.js +5 -5
  25. package/dist/lib/structures/Message.js +3 -2
  26. package/dist/lib/structures/ModalSubmitInteraction.d.ts +3 -1
  27. package/dist/lib/structures/ModalSubmitInteraction.js +4 -1
  28. package/dist/lib/structures/TextableChannel.d.ts +1 -1
  29. package/dist/lib/structures/TextableChannel.js +1 -1
  30. package/dist/lib/structures/TextableVoiceChannel.d.ts +1 -1
  31. package/dist/lib/structures/TextableVoiceChannel.js +2 -2
  32. package/dist/lib/structures/ThreadOnlyChannel.d.ts +98 -0
  33. package/dist/lib/structures/ThreadOnlyChannel.js +231 -0
  34. package/dist/lib/structures/User.d.ts +6 -3
  35. package/dist/lib/structures/User.js +20 -4
  36. package/dist/lib/types/channels.d.ts +22 -15
  37. package/dist/lib/types/events.d.ts +2 -2
  38. package/dist/lib/types/gateway.d.ts +6 -1
  39. package/dist/lib/types/interactions.d.ts +15 -39
  40. package/dist/lib/types/json.d.ts +24 -16
  41. package/dist/lib/types/users.d.ts +4 -3
  42. package/dist/package.json +9 -8
  43. package/esm.mjs +4 -0
  44. package/package.json +9 -8
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /** @module ThreadOnlyChannel */
5
+ const GuildChannel_1 = tslib_1.__importDefault(require("./GuildChannel"));
6
+ const PermissionOverwrite_1 = tslib_1.__importDefault(require("./PermissionOverwrite"));
7
+ const PublicThreadChannel_1 = tslib_1.__importDefault(require("./PublicThreadChannel"));
8
+ const Permission_1 = tslib_1.__importDefault(require("./Permission"));
9
+ const TypedCollection_1 = tslib_1.__importDefault(require("../util/TypedCollection"));
10
+ const Constants_1 = require("../Constants");
11
+ const Errors_1 = require("../util/Errors");
12
+ /** Represents a thread only channel. */
13
+ class ThreadOnlyChannel extends GuildChannel_1.default {
14
+ /** The usable tags for threads. */
15
+ availableTags;
16
+ /** The default auto archive duration for threads. */
17
+ defaultAutoArchiveDuration;
18
+ /** The default forum layout used to display threads. */
19
+ defaultForumLayout;
20
+ /** The default reaction emoji for threads. */
21
+ defaultReactionEmoji;
22
+ /** The default sort order mode used to sort threads. */
23
+ defaultSortOrder;
24
+ /** The default amount of seconds between non-moderators sending messages in threads. */
25
+ defaultThreadRateLimitPerUser;
26
+ /** The flags for this channel, see {@link Constants.ChannelFlags | ChannelFlags}. */
27
+ flags;
28
+ /** The most recently created thread. */
29
+ lastThread;
30
+ /** The ID of most recently created thread. */
31
+ lastThreadID;
32
+ /** If this channel is age gated. */
33
+ nsfw;
34
+ /** The permission overwrites of this channel. */
35
+ permissionOverwrites;
36
+ /** The position of this channel on the sidebar. */
37
+ position;
38
+ /** The amount of seconds between non-moderators creating threads. */
39
+ rateLimitPerUser;
40
+ /** The threads in this channel. */
41
+ threads;
42
+ /** The `guidelines` of this forum channel. */
43
+ topic;
44
+ constructor(data, client) {
45
+ super(data, client);
46
+ this.availableTags = [];
47
+ this.defaultAutoArchiveDuration = data.default_auto_archive_duration;
48
+ this.defaultForumLayout = data.default_forum_layout;
49
+ this.defaultReactionEmoji = null;
50
+ this.defaultSortOrder = null;
51
+ this.defaultThreadRateLimitPerUser = data.default_thread_rate_limit_per_user;
52
+ this.flags = data.flags;
53
+ this.lastThreadID = data.last_message_id;
54
+ this.nsfw = data.nsfw;
55
+ this.permissionOverwrites = new TypedCollection_1.default(PermissionOverwrite_1.default, client);
56
+ this.position = data.position;
57
+ this.rateLimitPerUser = data.rate_limit_per_user;
58
+ this.threads = new TypedCollection_1.default(PublicThreadChannel_1.default, client, this.client.util._getLimit("channelThreads", this.id));
59
+ this.topic = data.topic;
60
+ this.update(data);
61
+ }
62
+ update(data) {
63
+ super.update(data);
64
+ if (data.available_tags !== undefined) {
65
+ this.availableTags = data.available_tags.map(tag => ({
66
+ emoji: tag.emoji_id === null && tag.emoji_name === null ? null : { id: tag.emoji_id, name: tag.emoji_name },
67
+ id: tag.id,
68
+ moderated: tag.moderated,
69
+ name: tag.name
70
+ }));
71
+ }
72
+ if (data.default_auto_archive_duration !== undefined) {
73
+ this.defaultAutoArchiveDuration = data.default_auto_archive_duration;
74
+ }
75
+ if (data.default_forum_layout !== undefined) {
76
+ this.defaultForumLayout = data.default_forum_layout;
77
+ }
78
+ if (data.default_reaction_emoji !== undefined) {
79
+ this.defaultReactionEmoji = data.default_reaction_emoji === null || (data.default_reaction_emoji.emoji_id === null && data.default_reaction_emoji.emoji_name === null) ? null : { id: data.default_reaction_emoji.emoji_id, name: data.default_reaction_emoji.emoji_name };
80
+ }
81
+ if (data.default_sort_order !== undefined) {
82
+ this.defaultSortOrder = data.default_sort_order;
83
+ }
84
+ if (data.default_thread_rate_limit_per_user !== undefined) {
85
+ this.defaultThreadRateLimitPerUser = data.default_thread_rate_limit_per_user;
86
+ }
87
+ if (data.flags !== undefined) {
88
+ this.flags = data.flags;
89
+ }
90
+ if (data.last_message_id !== undefined) {
91
+ this.lastThread = data.last_message_id === null ? null : this.threads.get(data.last_message_id);
92
+ this.lastThreadID = data.last_message_id;
93
+ }
94
+ if (data.nsfw !== undefined) {
95
+ this.nsfw = data.nsfw;
96
+ }
97
+ if (data.permission_overwrites !== undefined) {
98
+ for (const id of this.permissionOverwrites.keys()) {
99
+ if (!data.permission_overwrites.some(overwrite => overwrite.id === id)) {
100
+ this.permissionOverwrites.delete(id);
101
+ }
102
+ }
103
+ for (const overwrite of data.permission_overwrites) {
104
+ this.permissionOverwrites.update(overwrite);
105
+ }
106
+ }
107
+ if (data.position !== undefined) {
108
+ this.position = data.position;
109
+ }
110
+ if (data.rate_limit_per_user !== undefined) {
111
+ this.rateLimitPerUser = data.rate_limit_per_user;
112
+ }
113
+ if (data.topic !== undefined && data.topic !== null) {
114
+ this.topic = data.topic;
115
+ }
116
+ }
117
+ get parent() {
118
+ return super.parent;
119
+ }
120
+ /**
121
+ * Create an invite for this channel. If the guild is not a `COMMUNITY` server, invites can only be made to last 30 days.
122
+ * @param options The options for the invite.
123
+ */
124
+ async createInvite(options) {
125
+ return this.client.rest.channels.createInvite(this.id, options);
126
+ }
127
+ /**
128
+ * Create a webhook in this channel.
129
+ * @param options The options to create the webhook with.
130
+ */
131
+ async createWebhook(options) {
132
+ return this.client.rest.webhooks.create(this.id, options);
133
+ }
134
+ /**
135
+ * Delete a permission overwrite on this channel.
136
+ * @param overwriteID The ID of the permission overwrite to delete.
137
+ * @param reason The reason for deleting the permission overwrite.
138
+ */
139
+ async deletePermission(overwriteID, reason) {
140
+ return this.client.rest.channels.deletePermission(this.id, overwriteID, reason);
141
+ }
142
+ /**
143
+ * Edit a permission overwrite on this channel.
144
+ * @param overwriteID The ID of the permission overwrite to edit.
145
+ * @param options The options for editing the permission overwrite.
146
+ */
147
+ async editPermission(overwriteID, options) {
148
+ return this.client.rest.channels.editPermission(this.id, overwriteID, options);
149
+ }
150
+ /**
151
+ * Get the invites of this channel.
152
+ */
153
+ async getInvites() {
154
+ return this.client.rest.channels.getInvites(this.id);
155
+ }
156
+ /**
157
+ * Get the public archived threads in this channel.
158
+ * @param options The options for getting the public archived threads.
159
+ */
160
+ async getPublicArchivedThreads(options) {
161
+ return this.client.rest.channels.getPublicArchivedThreads(this.id, options);
162
+ }
163
+ /**
164
+ * Get the webhooks in this channel.
165
+ */
166
+ async getWebhooks() {
167
+ return this.client.rest.webhooks.getForChannel(this.id);
168
+ }
169
+ /**
170
+ * Get the permissions of a member. If providing an id, the member must be cached.
171
+ * @param member The member to get the permissions of.
172
+ */
173
+ permissionsOf(member) {
174
+ if (typeof member === "string") {
175
+ member = this.guild.members.get(member);
176
+ }
177
+ if (!member) {
178
+ throw new Errors_1.UncachedError(`Cannot use ${this.constructor.name}#permissionsOf with an ID when the member is not cached.`);
179
+ }
180
+ let permission = this.guild.permissionsOf(member).allow;
181
+ if (permission & Constants_1.Permissions.ADMINISTRATOR) {
182
+ return new Permission_1.default(Constants_1.AllPermissions);
183
+ }
184
+ let overwrite = this.permissionOverwrites.get(this.guildID);
185
+ if (overwrite) {
186
+ permission = (permission & ~overwrite.deny) | overwrite.allow;
187
+ }
188
+ let deny = 0n;
189
+ let allow = 0n;
190
+ for (const id of member.roles) {
191
+ if ((overwrite = this.permissionOverwrites.get(id))) {
192
+ deny |= overwrite.deny;
193
+ allow |= overwrite.allow;
194
+ }
195
+ }
196
+ permission = (permission & ~deny) | allow;
197
+ overwrite = this.permissionOverwrites.get(member.id);
198
+ if (overwrite) {
199
+ permission = (permission & ~overwrite.deny) | overwrite.allow;
200
+ }
201
+ return new Permission_1.default(permission);
202
+ }
203
+ /**
204
+ * Create a thread in this forum channel.
205
+ * @param options The options for starting the thread.
206
+ */
207
+ async startThread(options) {
208
+ return this.client.rest.channels.startThreadInThreadOnlyChannl(this.id, options);
209
+ }
210
+ toJSON() {
211
+ return {
212
+ ...super.toJSON(),
213
+ availableTags: this.availableTags,
214
+ defaultAutoArchiveDuration: this.defaultAutoArchiveDuration,
215
+ defaultForumLayout: this.defaultForumLayout,
216
+ defaultReactionEmoji: this.defaultReactionEmoji,
217
+ defaultSortOrder: this.defaultSortOrder,
218
+ defaultThreadRateLimitPerUser: this.defaultThreadRateLimitPerUser,
219
+ flags: this.flags,
220
+ lastThreadID: this.lastThreadID,
221
+ permissionOverwrites: this.permissionOverwrites.map(overwrite => overwrite.toJSON()),
222
+ position: this.position,
223
+ rateLimitPerUser: this.rateLimitPerUser,
224
+ threads: this.threads.map(thread => thread.id),
225
+ topic: this.topic,
226
+ type: this.type
227
+ };
228
+ }
229
+ }
230
+ exports.default = ThreadOnlyChannel;
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGhyZWFkT25seUNoYW5uZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3RydWN0dXJlcy9UaHJlYWRPbmx5Q2hhbm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnQ0FBZ0M7QUFDaEMsMEVBQTBDO0FBQzFDLHdGQUF3RDtBQUN4RCx3RkFBd0Q7QUFHeEQsc0VBQXNDO0FBZ0J0QyxzRkFBc0Q7QUFDdEQsNENBTXNCO0FBRXRCLDJDQUErQztBQUUvQyx3Q0FBd0M7QUFDeEMsTUFBcUIsaUJBQWtCLFNBQVEsc0JBQVk7SUFDdkQsbUNBQW1DO0lBQ25DLGFBQWEsQ0FBa0I7SUFDL0IscURBQXFEO0lBQ3JELDBCQUEwQixDQUE0QjtJQUN0RCx3REFBd0Q7SUFDeEQsa0JBQWtCLENBQW1CO0lBQ3JDLDhDQUE4QztJQUM5QyxvQkFBb0IsQ0FBb0I7SUFDeEMsd0RBQXdEO0lBQ3hELGdCQUFnQixDQUF3QjtJQUN4Qyx3RkFBd0Y7SUFDeEYsNkJBQTZCLENBQVM7SUFDdEMscUZBQXFGO0lBQ3JGLEtBQUssQ0FBUztJQUNkLHdDQUF3QztJQUN4QyxVQUFVLENBQThCO0lBQ3hDLDhDQUE4QztJQUM5QyxZQUFZLENBQWdCO0lBQzVCLG9DQUFvQztJQUNwQyxJQUFJLENBQVU7SUFDZCxpREFBaUQ7SUFDakQsb0JBQW9CLENBQTZEO0lBQ2pGLG1EQUFtRDtJQUNuRCxRQUFRLENBQVM7SUFDakIscUVBQXFFO0lBQ3JFLGdCQUFnQixDQUFTO0lBQ3pCLG1DQUFtQztJQUNuQyxPQUFPLENBQXVFO0lBQzlFLDhDQUE4QztJQUM5QyxLQUFLLENBQWdCO0lBRXJCLFlBQVksSUFBMEIsRUFBRSxNQUFjO1FBQ2xELEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyw2QkFBNkIsQ0FB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
@@ -17,8 +17,10 @@ export default class User extends Base {
17
17
  banner?: string | null;
18
18
  /** If this user is a bot. */
19
19
  bot: boolean;
20
- /** The 4 digits after the user's username. */
20
+ /** The 4 digits after this user's username, if they have not been migrated. If migrated, this will be a single "0". */
21
21
  discriminator: string;
22
+ /** The user's display name, if set. */
23
+ globalName: string | null;
22
24
  /** The user's public [flags](https://discord.com/developers/docs/resources/user#user-object-user-flags). */
23
25
  publicFlags: number;
24
26
  /** If this user is an official discord system user. */
@@ -27,11 +29,12 @@ export default class User extends Base {
27
29
  username: string;
28
30
  constructor(data: RawUser, client: Client);
29
31
  protected update(data: Partial<RawUser>): void;
30
- /** The default avatar value of this user (discriminator modulo 5). */
32
+ private get isMigrated();
33
+ /** The default avatar value of this user. */
31
34
  get defaultAvatar(): number;
32
35
  /** A string that will mention this user. */
33
36
  get mention(): string;
34
- /** a combination of this user's username and discriminator. */
37
+ /** This user's display name, if migrated, else a combination of the user's username and discriminator. */
35
38
  get tag(): string;
36
39
  /**
37
40
  * The url of this user's avatar decoration. This will always be a png.
@@ -16,8 +16,10 @@ class User extends Base_1.default {
16
16
  banner;
17
17
  /** If this user is a bot. */
18
18
  bot;
19
- /** The 4 digits after the user's username. */
19
+ /** The 4 digits after this user's username, if they have not been migrated. If migrated, this will be a single "0". */
20
20
  discriminator;
21
+ /** The user's display name, if set. */
22
+ globalName;
21
23
  /** The user's public [flags](https://discord.com/developers/docs/resources/user#user-object-user-flags). */
22
24
  publicFlags;
23
25
  /** If this user is an official discord system user. */
@@ -29,6 +31,7 @@ class User extends Base_1.default {
29
31
  this.avatar = null;
30
32
  this.bot = !!data.bot;
31
33
  this.discriminator = data.discriminator;
34
+ this.globalName = data.global_name;
32
35
  this.publicFlags = 0;
33
36
  this.system = !!data.system;
34
37
  this.username = data.username;
@@ -50,6 +53,9 @@ class User extends Base_1.default {
50
53
  if (data.discriminator !== undefined) {
51
54
  this.discriminator = data.discriminator;
52
55
  }
56
+ if (data.global_name !== undefined) {
57
+ this.globalName = data.global_name;
58
+ }
53
59
  if (data.public_flags !== undefined) {
54
60
  this.publicFlags = data.public_flags;
55
61
  }
@@ -57,16 +63,25 @@ class User extends Base_1.default {
57
63
  this.username = data.username;
58
64
  }
59
65
  }
60
- /** The default avatar value of this user (discriminator modulo 5). */
66
+ get isMigrated() {
67
+ return this.globalName !== null && (this.discriminator === undefined || this.discriminator === "0");
68
+ }
69
+ /** The default avatar value of this user. */
61
70
  get defaultAvatar() {
71
+ if (this.isMigrated) {
72
+ return Number(BigInt(this.id) >> 22n) % 6;
73
+ }
62
74
  return Number(this.discriminator) % 5;
63
75
  }
64
76
  /** A string that will mention this user. */
65
77
  get mention() {
66
78
  return `<@${this.id}>`;
67
79
  }
68
- /** a combination of this user's username and discriminator. */
80
+ /** This user's display name, if migrated, else a combination of the user's username and discriminator. */
69
81
  get tag() {
82
+ if (this.isMigrated) {
83
+ return this.globalName;
84
+ }
70
85
  return `${this.username}#${this.discriminator}`;
71
86
  }
72
87
  /**
@@ -106,6 +121,7 @@ class User extends Base_1.default {
106
121
  banner: this.banner,
107
122
  bot: this.bot,
108
123
  discriminator: this.discriminator,
124
+ globalName: this.globalName,
109
125
  publicFlags: this.publicFlags,
110
126
  system: this.system,
111
127
  username: this.username
@@ -113,4 +129,4 @@ class User extends Base_1.default {
113
129
  }
114
130
  }
115
131
  exports.default = User;
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdHJ1Y3R1cmVzL1VzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUJBQW1CO0FBQ25CLDBEQUEwQjtBQUcxQiwrREFBeUM7QUFLekMseUJBQXlCO0FBQ3pCLE1BQXFCLElBQUssU0FBUSxjQUFJO0lBQ2xDLHdHQUF3RztJQUN4RyxXQUFXLENBQWlCO0lBQzVCLDhCQUE4QjtJQUM5QixNQUFNLENBQWdCO0lBQ3RCLG9GQUFvRjtJQUNwRixnQkFBZ0IsQ0FBaUI7SUFDakMsdUdBQXVHO0lBQ3ZHLE1BQU0sQ0FBaUI7SUFDdkIsNkJBQTZCO0lBQzdCLEdBQUcsQ0FBVTtJQUNiLDhDQUE4QztJQUM5QyxhQUFhLENBQVM7SUFDdEIsNEdBQTRHO0lBQzVHLFdBQVcsQ0FBUztJQUNwQix1REFBdUQ7SUFDdkQsTUFBTSxDQUFVO0lBQ2hCLDJCQUEyQjtJQUMzQixRQUFRLENBQVM7SUFDakIsWUFBWSxJQUFhLEVBQUUsTUFBYztRQUNyQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFa0IsTUFBTSxDQUFDLElBQXNCO1FBQzVDLElBQUks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
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdHJ1Y3R1cmVzL1VzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUJBQW1CO0FBQ25CLDBEQUEwQjtBQUcxQiwrREFBeUM7QUFLekMseUJBQXlCO0FBQ3pCLE1BQXFCLElBQUssU0FBUSxjQUFJO0lBQ2xDLHdHQUF3RztJQUN4RyxXQUFXLENBQWlCO0lBQzVCLDhCQUE4QjtJQUM5QixNQUFNLENBQWdCO0lBQ3RCLG9GQUFvRjtJQUNwRixnQkFBZ0IsQ0FBaUI7SUFDakMsdUdBQXVHO0lBQ3ZHLE1BQU0sQ0FBaUI7SUFDdkIsNkJBQTZCO0lBQzdCLEdBQUcsQ0FBVTtJQUNiLHVIQUF1SDtJQUN2SCxhQUFhLENBQVM7SUFDdEIsdUNBQXVDO0lBQ3ZDLFVBQVUsQ0FBZ0I7SUFDMUIsNEdBQTRHO0lBQzVHLFdBQVcsQ0FBUztJQUNwQix1REFBdUQ7SUFDdkQsTUFBTSxDQUFVO0lBQ2hCLDJCQUEyQjtJQUMzQixRQUFRLENBQVM7SUFDakIsWUFBWSxJQUFhLEVBQUUsTUFBYztRQUNyQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDOUIsSUFB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
@@ -35,7 +35,8 @@ import type {
35
35
  VoiceChannelTypes,
36
36
  InteractionChannelTypes,
37
37
  InviteChannelTypes,
38
- ImplementedChannelTypes
38
+ ImplementedChannelTypes,
39
+ ThreadOnlyChannelTypes
39
40
  } from "../Constants";
40
41
  import type Member from "../structures/Member";
41
42
  import type AnnouncementChannel from "../structures/AnnouncementChannel";
@@ -83,7 +84,6 @@ export interface RawChannel {
83
84
  rate_limit_per_user?: number;
84
85
  recipients?: Array<RawUser>;
85
86
  rtc_region?: string | null;
86
- template?: string;
87
87
  thread_metadata?: RawThreadMetadata;
88
88
  topic?: string | null;
89
89
  total_message_sent?: number;
@@ -104,7 +104,9 @@ export type RawThreadChannel = RawAnnouncementThreadChannel | RawPublicThreadCha
104
104
  export interface RawAnnouncementThreadChannel extends Required<Pick<RawChannel, "id" | "guild_id" | "parent_id" | "owner_id" | "last_message_id" | "thread_metadata" | "message_count" | "member_count" | "rate_limit_per_user" | "flags" | "total_message_sent" | "newly_created" | "member">> { name: string; type: ChannelTypes.ANNOUNCEMENT_THREAD; }
105
105
  export interface RawPublicThreadChannel extends Omit<RawAnnouncementThreadChannel, "type">, Required<Pick<RawChannel, "applied_tags">> { type: ChannelTypes.PUBLIC_THREAD; }
106
106
  export interface RawPrivateThreadChannel extends Omit<RawAnnouncementThreadChannel, "type" | "member"> { member: RawChannel["member"]; type: ChannelTypes.PRIVATE_THREAD; }
107
- export interface RawForumChannel extends Omit<RawGuildChannel, "type">, Required<Pick<RawChannel, "position" | "topic" | "flags" | "permission_overwrites" | "rate_limit_per_user" | "nsfw" | "available_tags" | "template" | "default_reaction_emoji" | "last_message_id" | "default_sort_order" | "default_thread_rate_limit_per_user" | "default_auto_archive_duration" | "default_forum_layout">> { type: ChannelTypes.GUILD_FORUM; }
107
+ export interface RawThreadOnlyChannel extends Omit<RawGuildChannel, "type">, Required<Pick<RawChannel, "position" | "topic" | "flags" | "permission_overwrites" | "rate_limit_per_user" | "nsfw" | "available_tags" | "default_reaction_emoji" | "last_message_id" | "default_sort_order" | "default_thread_rate_limit_per_user" | "default_auto_archive_duration" | "default_forum_layout">> { type: ThreadOnlyChannels; }
108
+ export interface RawForumChannel extends Omit<RawThreadOnlyChannel, "type"> { type: ChannelTypes.GUILD_FORUM; }
109
+ export interface RawMediaChannel extends Omit<RawThreadOnlyChannel, "type"> { type: ChannelTypes.GUILD_MEDIA; }
108
110
 
109
111
  export interface PartialChannel extends Pick<RawChannel, "id" | "name" | "type"> {}
110
112
  export interface RawInteractionResolvedChannel extends Omit<Required<Pick<RawChannel, "id" | "type" | "permissions">>, "name">, Pick<RawChannel, "thread_metadata" | "parent_id"> { name: string | null; }
@@ -253,23 +255,26 @@ export interface EditStageChannelOptions extends EditAnyGuildChannelOptions, Pic
253
255
  export interface EditThreadChannelOptions extends EditPublicThreadChannelOptions, EditPrivateThreadChannelOptions {}
254
256
  export interface EditPublicThreadChannelOptions extends Pick<EditGuildChannelOptions, "name" | "archived" | "autoArchiveDuration" | "locked" | "rateLimitPerUser" | "flags" | "appliedTags"> {}
255
257
  export interface EditPrivateThreadChannelOptions extends EditPublicThreadChannelOptions, Pick<EditGuildChannelOptions, "invitable"> {}
256
- export interface EditForumChannelOptions extends EditAnyGuildChannelOptions, Pick<EditGuildChannelOptions, "availableTags" | "defaultReactionEmoji" | "defaultSortOrder" |"defaultThreadRateLimitPerUser" | "flags" | "nsfw" | "rateLimitPerUser" | "topic"> {}
258
+ export interface EditForumChannelOptions extends EditAnyGuildChannelOptions, Pick<EditGuildChannelOptions, "availableTags" | "defaultReactionEmoji" | "defaultSortOrder" |"defaultThreadRateLimitPerUser" | "flags" | "nsfw" | "rateLimitPerUser" | "topic" | "defaultForumLayout"> {}
259
+ export interface EditMediaChannelOptions extends EditAnyGuildChannelOptions, Pick<EditGuildChannelOptions, "availableTags" | "defaultReactionEmoji" | "defaultSortOrder" |"defaultThreadRateLimitPerUser" | "flags" | "nsfw" | "rateLimitPerUser" | "topic"> {}
257
260
 
261
+ /* eslint-disable @typescript-eslint/member-ordering */
258
262
  export interface EditChannelOptionsMap {
259
- [ChannelTypes.ANNOUNCEMENT_THREAD]: EditPublicThreadChannelOptions;
263
+ [ChannelTypes.GUILD_TEXT]: EditTextChannelOptions;
260
264
  [ChannelTypes.DM]: never;
265
+ [ChannelTypes.GUILD_VOICE]: EditVoiceChannelOptions;
261
266
  [ChannelTypes.GROUP_DM]: EditGroupDMOptions;
262
- [ChannelTypes.GUILD_ANNOUNCEMENT]: EditAnnouncementChannelOptions;
263
267
  [ChannelTypes.GUILD_CATEGORY]: EditAnyGuildChannelOptions;
268
+ [ChannelTypes.GUILD_ANNOUNCEMENT]: EditAnnouncementChannelOptions;
269
+ [ChannelTypes.ANNOUNCEMENT_THREAD]: EditPublicThreadChannelOptions;
270
+ [ChannelTypes.PUBLIC_THREAD]: EditPublicThreadChannelOptions;
271
+ [ChannelTypes.PRIVATE_THREAD]: EditPrivateThreadChannelOptions;
272
+ [ChannelTypes.GUILD_STAGE_VOICE]: EditStageChannelOptions;
264
273
  [ChannelTypes.GUILD_DIRECTORY]: never;
265
274
  [ChannelTypes.GUILD_FORUM]: EditForumChannelOptions;
266
- [ChannelTypes.GUILD_STAGE_VOICE]: EditStageChannelOptions;
267
- [ChannelTypes.GUILD_TEXT]: EditTextChannelOptions;
268
- [ChannelTypes.GUILD_VOICE]: EditVoiceChannelOptions;
269
- [ChannelTypes.PRIVATE_THREAD]: EditPrivateThreadChannelOptions;
270
- [ChannelTypes.PUBLIC_THREAD]: EditPublicThreadChannelOptions;
275
+ [ChannelTypes.GUILD_MEDIA]: EditMediaChannelOptions;
271
276
  }
272
-
277
+ /* eslint-enable @typescript-eslint/member-ordering */
273
278
 
274
279
  export interface AddGroupRecipientOptions {
275
280
  /** The access token of the user to add. */
@@ -740,6 +745,7 @@ export type TextableGuildChannelsWithoutThreads = typeof TextableGuildChannelTyp
740
745
  export type VoiceChannels = typeof VoiceChannelTypes[number];
741
746
  export type InviteChannels = typeof InviteChannelTypes[number];
742
747
  export type InteractionChannels = typeof InteractionChannelTypes[number];
748
+ export type ThreadOnlyChannels = typeof ThreadOnlyChannelTypes[number];
743
749
 
744
750
 
745
751
  export type AnyChannel = ChannelTypeMap[ChannelTypes];
@@ -757,6 +763,7 @@ export type AnyTextableGuildChannelWithoutThreads = ChannelTypeMap[TextableGuild
757
763
  export type AnyVoiceChannel = ChannelTypeMap[VoiceChannels];
758
764
  export type AnyInviteChannel = ChannelTypeMap[InviteChannels];
759
765
  export type AnyInteractionChannel = ChannelTypeMap[InteractionChannels];
766
+ export type AnyThreadOnlyChannel = ChannelTypeMap[ThreadOnlyChannels];
760
767
 
761
768
  export interface PartialInviteChannel {
762
769
  icon?: string | null;
@@ -919,12 +926,12 @@ export interface StartThreadWithoutMessageOptions extends StartThreadFromMessage
919
926
  type: ThreadChannels;
920
927
  }
921
928
 
922
- export interface StartThreadInForumOptions extends StartThreadFromMessageOptions {
929
+ export interface StartThreadInThreadOnlyChannelOptions extends StartThreadFromMessageOptions {
923
930
  /** The message to start the thread with. */
924
- message: ForumThreadStarterMessageOptions;
931
+ message: ThreadOnlyChannelThreadStarterMessageOptions;
925
932
  }
926
933
 
927
- export type ForumThreadStarterMessageOptions = Pick<CreateMessageOptions, "content" | "embeds" | "allowedMentions" | "components" | "stickerIDs" | "attachments" | "flags" | "files">;
934
+ export type ThreadOnlyChannelThreadStarterMessageOptions = Pick<CreateMessageOptions, "content" | "embeds" | "allowedMentions" | "components" | "stickerIDs" | "attachments" | "flags" | "files">;
928
935
 
929
936
  export interface GetArchivedThreadsOptions {
930
937
  /** A **timestamp** to get threads before. */
@@ -21,7 +21,7 @@ import type {
21
21
  JSONAnnouncementThreadChannel,
22
22
  JSONAutoModerationRule,
23
23
  JSONCategoryChannel,
24
- JSONForumChannel,
24
+ JSONThreadOnlyChannel,
25
25
  JSONGuild,
26
26
  JSONIntegration,
27
27
  JSONMember,
@@ -89,7 +89,7 @@ export interface ClientEvents {
89
89
  /** @event Emitted when a channel's pins are updated (message pinned, message unpinned). Requires the `GUILDS` intent for guild channels, and `DIRECT_MESSAGES` for direct messages. */
90
90
  channelPinsUpdate: [channel: AnyTextableChannel | Uncached, timestamp: Date | null];
91
91
  /** @event Emitted when a channel is updated. Requires the `GUILDS` intent. */
92
- channelUpdate: [channel: TextChannel, oldChannel: JSONTextChannel | null] | [channel: VoiceChannel, oldChannel: JSONVoiceChannel | null] | [channel: CategoryChannel, oldChannel: JSONCategoryChannel | null] | [channel: AnnouncementChannel, oldChannel: JSONAnnouncementChannel | null] | [channel: StageChannel, oldChannel: JSONStageChannel | null] | [channel: ForumChannel, oldChannel: JSONForumChannel | null];
92
+ channelUpdate: [channel: TextChannel, oldChannel: JSONTextChannel | null] | [channel: VoiceChannel, oldChannel: JSONVoiceChannel | null] | [channel: CategoryChannel, oldChannel: JSONCategoryChannel | null] | [channel: AnnouncementChannel, oldChannel: JSONAnnouncementChannel | null] | [channel: StageChannel, oldChannel: JSONStageChannel | null] | [channel: ForumChannel, oldChannel: JSONThreadOnlyChannel | null];
93
93
  /** @event Emitted when a shard connects. */
94
94
  connect: [id: number];
95
95
  /** @event Emitted with various information for debugging. */
@@ -106,6 +106,11 @@ interface GatewayOptions {
106
106
  * @defaultValue (lastDelay, attempts) => Math.pow(attempts + 1, 0.7) * 20000
107
107
  */
108
108
  reconnectDelay?: ReconnectDelayFunction;
109
+ /**
110
+ * If a check should be made before connecting, which will remove any disallowed intents. This requires making a request to {@link Miscellaneous~Miscellaneous.getApplication | `/applications/@me`}. Any removed intents will be emitted via the `warn` event.
111
+ * @defaultValue false
112
+ */
113
+ removeDisallowedIntents?: boolean;
109
114
  /**
110
115
  * If existing voice connections should be populated. This will disconnect connections from other sessions.
111
116
  * @defaultValue false
@@ -120,7 +125,7 @@ interface GatewayOptions {
120
125
  ws?: WSClientOptions;
121
126
  }
122
127
 
123
- export interface ShardManagerInstanceOptions extends Required<Pick<GatewayOptions, "autoReconnect" | "compress" | "connectionTimeout" | "firstShardID" | "getAllUsers" | "guildCreateTimeout" | "largeThreshold" | "lastShardID" | "maxReconnectAttempts" | "maxResumeAttempts" | "reconnectDelay" | "seedVoiceConnections" | "shardIDs" | "ws">> {
128
+ export interface ShardManagerInstanceOptions extends Required<Omit<GatewayOptions, "concurrency" | "connectionProperties" | "intents" | "maxShards" | "presence">> {
124
129
  concurrency: number;
125
130
  connectionProperties: Required<GatewayOptions["connectionProperties"]>;
126
131
  intents: number;
@@ -17,6 +17,7 @@ import type {
17
17
  ApplicationCommandOptionTypes,
18
18
  ApplicationCommandTypes,
19
19
  ComponentTypes,
20
+ GuildFeature,
20
21
  InteractionResponseTypes,
21
22
  InteractionTypes,
22
23
  MessageComponentTypes,
@@ -84,6 +85,7 @@ export interface RawInteraction {
84
85
  application_id: string;
85
86
  channel_id?: string;
86
87
  data?: RawInteractionData;
88
+ guild?: InteractionGuild;
87
89
  guild_id?: string;
88
90
  guild_locale?: string;
89
91
  id: string;
@@ -253,59 +255,33 @@ export interface AutocompleteChoice {
253
255
 
254
256
 
255
257
  export type GuildAutocompleteInteraction = AutocompleteInteraction<AnyTextableGuildChannel>;
256
- export interface PrivateAutocompleteInteraction extends Omit<AutocompleteInteraction<AnyPrivateChannel | Uncached>, | "appPermissions" | "guild" | "guildID" | "guildLocale" | "member" | "memberPermissions"> {
257
- guild: null;
258
- guildID: null;
259
- guildLocale: undefined;
260
- member: null;
261
- memberPermissions: null;
262
- }
258
+ export interface PrivateAutocompleteInteraction extends AutocompleteInteraction<AnyPrivateChannel | Uncached> {}
263
259
  export type AnyAutocompleteInteraction = GuildAutocompleteInteraction | PrivateAutocompleteInteraction;
264
260
 
265
261
  export type GuildCommandInteraction = CommandInteraction<AnyTextableGuildChannel>;
266
- export interface PrivateCommandInteraction extends Omit<CommandInteraction<AnyPrivateChannel | Uncached>, "appPermissions" | "guild" | "guildID" | "guildLocale" | "member" | "memberPermissions"> {
267
- guild: null;
268
- guildID: null;
269
- guildLocale: undefined;
270
- member: null;
271
- memberPermissions: null;
272
- }
262
+ export interface PrivateCommandInteraction extends CommandInteraction<AnyPrivateChannel | Uncached> {}
273
263
  export type AnyCommandInteraction = GuildCommandInteraction | PrivateCommandInteraction;
274
264
 
275
- export interface GuildComponentButtonInteraction extends Omit<ComponentInteraction<ComponentTypes.BUTTON, AnyTextableGuildChannel>, "data"> { data: MessageComponentButtonInteractionData; }
276
- export interface GuildComponentSelectMenuInteraction extends Omit<ComponentInteraction<SelectMenuTypes, AnyTextableGuildChannel>, "data"> { data: MessageComponentSelectMenuInteractionData; }
265
+ export interface GuildComponentButtonInteraction extends ComponentInteraction<ComponentTypes.BUTTON, AnyTextableGuildChannel> { data: MessageComponentButtonInteractionData; }
266
+ export interface GuildComponentSelectMenuInteraction extends ComponentInteraction<SelectMenuTypes, AnyTextableGuildChannel> { data: MessageComponentSelectMenuInteractionData; }
277
267
  export type GuildComponentInteraction = GuildComponentButtonInteraction | GuildComponentSelectMenuInteraction;
278
268
 
279
- export interface PrivateComponentButtonInteraction extends Omit<ComponentInteraction<ComponentTypes.BUTTON, AnyPrivateChannel | Uncached>, "appPermissions" | "guild" | "guildID" | "guildLocale" | "member" | "memberPermissions" | "data"> {
280
- data: MessageComponentButtonInteractionData;
281
- guild: null;
282
- guildID: null;
283
- guildLocale: undefined;
284
- member: null;
285
- memberPermissions: null;
286
- }
287
- export interface PrivateComponentSelectMenuInteraction extends Omit<ComponentInteraction<SelectMenuTypes, AnyPrivateChannel | Uncached>, "appPermissions" | "guild" | "guildID" | "guildLocale" | "member" | "memberPermissions" | "data"> {
288
- data: MessageComponentSelectMenuInteractionData;
289
- guild: null;
290
- guildID: null;
291
- guildLocale: undefined;
292
- member: null;
293
- memberPermissions: null;
294
- }
269
+ export interface PrivateComponentButtonInteraction extends ComponentInteraction<ComponentTypes.BUTTON, AnyPrivateChannel | Uncached> {}
270
+ export interface PrivateComponentSelectMenuInteraction extends ComponentInteraction<SelectMenuTypes, AnyPrivateChannel | Uncached> {}
295
271
  export type PrivateComponentInteraction = PrivateComponentButtonInteraction | PrivateComponentSelectMenuInteraction;
296
272
  export type AnyComponentButtonInteraction = GuildComponentButtonInteraction | PrivateComponentButtonInteraction;
297
273
  export type AnyComponentSelectMenuInteraction = GuildComponentSelectMenuInteraction | PrivateComponentSelectMenuInteraction;
298
274
  export type AnyComponentInteraction = AnyComponentButtonInteraction | AnyComponentSelectMenuInteraction;
299
275
 
300
276
  export type GuildModalSubmitInteraction = ModalSubmitInteraction<AnyTextableGuildChannel>;
301
- export interface PrivateModalSubmitInteraction extends Omit<ModalSubmitInteraction<AnyPrivateChannel | Uncached>, "appPermissions" | "guild" | "guildID" | "guildLocale" | "member" | "memberPermissions"> {
302
- guild: null;
303
- guildID: null;
304
- guildLocale: undefined;
305
- member: null;
306
- memberPermissions: null;
307
- }
277
+ export interface PrivateModalSubmitInteraction extends ModalSubmitInteraction<AnyPrivateChannel | Uncached> {}
308
278
  export type AnyModalSubmitInteraction = GuildModalSubmitInteraction | PrivateModalSubmitInteraction;
309
279
 
310
280
  export type SubCommandArray = [subcommand: string] | [subcommandGroup: string, subcommand: string];
311
281
  export type AutoCompleteFocusedOption = InteractionOptionsString | InteractionOptionsNumber | InteractionOptionsInteger;
282
+
283
+ export interface InteractionGuild {
284
+ features: Array<GuildFeature>;
285
+ id: string;
286
+ locale: string;
287
+ }