From 759c0b0d46ce67f4208cdf22214d2272860f27b9 Mon Sep 17 00:00:00 2001 From: Jaw0r3k Date: Wed, 20 Sep 2023 18:41:34 +0200 Subject: [PATCH] feat: support `default_thread_rate_limit_per_user` in channel creation (#9339) * feat: support default_thread_rate_limit_per_user in channel creation * feat: add rawDataTypes * fix: remove other rawTypes * chore: missing comma * types: undo all raw data changes --------- Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> --- src/managers/GuildChannelManager.js | 2 ++ src/structures/BaseGuildTextChannel.js | 10 ++++++++++ src/structures/CategoryChannel.js | 2 ++ typings/index.d.ts | 2 ++ 4 files changed, 16 insertions(+) diff --git a/src/managers/GuildChannelManager.js b/src/managers/GuildChannelManager.js index 85db8178f..84da081b6 100644 --- a/src/managers/GuildChannelManager.js +++ b/src/managers/GuildChannelManager.js @@ -150,6 +150,7 @@ class GuildChannelManager extends CachedManager { defaultReactionEmoji, defaultSortOrder, defaultForumLayout, + defaultThreadRateLimitPerUser, reason, } = {}, ) { @@ -191,6 +192,7 @@ class GuildChannelManager extends CachedManager { default_reaction_emoji: defaultReactionEmoji && transformGuildDefaultReaction(defaultReactionEmoji), default_sort_order: sortMode, default_forum_layout: layoutMode, + default_thread_rate_limit_per_user: defaultThreadRateLimitPerUser, }, reason, }); diff --git a/src/structures/BaseGuildTextChannel.js b/src/structures/BaseGuildTextChannel.js index ee2e8f8ab..f610fcb64 100644 --- a/src/structures/BaseGuildTextChannel.js +++ b/src/structures/BaseGuildTextChannel.js @@ -74,6 +74,16 @@ class BaseGuildTextChannel extends GuildChannel { this.defaultAutoArchiveDuration = data.default_auto_archive_duration; } + if ('default_thread_rate_limit_per_user' in data) { + /** + * The initial rate limit per user (slowmode) to set on newly created threads in a channel. + * @type {?number} + */ + this.defaultThreadRateLimitPerUser = data.default_thread_rate_limit_per_user; + } else { + this.defaultThreadRateLimitPerUser ??= null; + } + if ('messages' in data) { for (const message of data.messages) this.messages._add(message); } diff --git a/src/structures/CategoryChannel.js b/src/structures/CategoryChannel.js index 6a1574b3e..3e24e53c7 100644 --- a/src/structures/CategoryChannel.js +++ b/src/structures/CategoryChannel.js @@ -62,6 +62,8 @@ class CategoryChannel extends GuildChannel { * @property {?DefaultReactionEmoji} [defaultReactionEmoji] The emoji to set as the default reaction emoji * @property {number} [defaultThreadRateLimitPerUser] The rate limit per user (slowmode) to set on forum posts * @property {?SortOrderType} [defaultSortOrder] The default sort order mode to set on the new channel + * @property {number} [defaultThreadRateLimitPerUser] The initial rate limit per user (slowmode) + * to set on newly created threads in a channel. * @property {string} [reason] Reason for creating the new channel */ diff --git a/typings/index.d.ts b/typings/index.d.ts index 5dc7baf22..f64edbb0a 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -463,6 +463,7 @@ export class BaseGuildEmoji extends Emoji { export class BaseGuildTextChannel extends TextBasedChannelMixin(GuildChannel) { protected constructor(guild: Guild, data?: RawGuildChannelData, client?: Client, immediatePatch?: boolean); public defaultAutoArchiveDuration?: ThreadAutoArchiveDuration; + public defaultThreadRateLimitPerUser: number | null; public rateLimitPerUser: number | null; public nsfw: boolean; public threads: GuildTextThreadManager; @@ -4488,6 +4489,7 @@ export interface CategoryCreateChannelOptions { defaultReactionEmoji?: DefaultReactionEmoji; defaultSortOrder?: SortOrderType; defaultForumLayout?: ForumLayoutType; + defaultThreadRateLimitPerUser?: number; reason?: string; }