From 7fa79ff21ac21db58a627bdbaad7f70e001d2965 Mon Sep 17 00:00:00 2001 From: almeidx Date: Sun, 18 Sep 2022 22:50:38 +0100 Subject: [PATCH] feat(GuildChannelManager): allow editing `flags` --- packages/discord.js/src/managers/GuildChannelManager.js | 3 +++ packages/discord.js/src/util/ChannelFlagsBitField.js | 9 +++++++++ packages/discord.js/typings/index.d.ts | 3 +++ 3 files changed, 15 insertions(+) diff --git a/packages/discord.js/src/managers/GuildChannelManager.js b/packages/discord.js/src/managers/GuildChannelManager.js index 7549dfc99296..bcf348518044 100644 --- a/packages/discord.js/src/managers/GuildChannelManager.js +++ b/packages/discord.js/src/managers/GuildChannelManager.js @@ -10,6 +10,7 @@ const GuildChannel = require('../structures/GuildChannel'); const PermissionOverwrites = require('../structures/PermissionOverwrites'); const ThreadChannel = require('../structures/ThreadChannel'); const Webhook = require('../structures/Webhook'); +const ChannelFlagsBitField = require('../util/ChannelFlagsBitField'); const { transformGuildForumTag, transformGuildDefaultReaction } = require('../util/Channels'); const { ThreadChannelTypes } = require('../util/Constants'); const DataResolver = require('../util/DataResolver'); @@ -226,6 +227,7 @@ class GuildChannelManager extends CachedManager { * @property {GuildForumTagData[]} [availableTags] The tags to set as available in a forum channel * @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 {ChannelFlagsResolvable} [flags] The flags to set on the channel * @property {string} [reason] Reason for editing this channel */ @@ -285,6 +287,7 @@ class GuildChannelManager extends CachedManager { available_tags: data.availableTags?.map(availableTag => transformGuildForumTag(availableTag)), default_reaction_emoji: data.defaultReactionEmoji && transformGuildDefaultReaction(data.defaultReactionEmoji), default_thread_rate_limit_per_user: data.defaultThreadRateLimitPerUser, + tags: 'flags' in data ? ChannelFlagsBitField.resolve(data.flags) : undefined, }, reason: data.reason, }); diff --git a/packages/discord.js/src/util/ChannelFlagsBitField.js b/packages/discord.js/src/util/ChannelFlagsBitField.js index c6b6d07d3f7e..ad987e157ec7 100644 --- a/packages/discord.js/src/util/ChannelFlagsBitField.js +++ b/packages/discord.js/src/util/ChannelFlagsBitField.js @@ -29,4 +29,13 @@ class ChannelFlagsBitField extends BitField { * @name ChannelFlagsBitField#bitfield */ +/** + * Data that can be resolved to give a channel flag bitfield. This can be: + * * A string (see {@link ChannelFlagsBitField.Flags}) + * * A channel flag + * * An instance of ChannelFlagsBitField + * * An Array of ChannelFlagsResolvable + * @typedef {string|number|ChannelFlagsBitField|ChannelFlagsResolvable[]} ChannelFlagsResolvable + */ + module.exports = ChannelFlagsBitField; diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 5cd71eca2aad..c8f620841b66 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -729,6 +729,8 @@ export type CategoryChannelResolvable = Snowflake | CategoryChannel; export type ChannelFlagsString = keyof typeof ChannelFlags; +export type ChannelFlagsResolvable = BitFieldResolvable; + export class ChannelFlagsBitField extends BitField { public static Flags: typeof ChannelFlags; public static resolve(bit?: BitFieldResolvable): number; @@ -4900,6 +4902,7 @@ export interface GuildChannelEditOptions { availableTags?: GuildForumTagData[]; defaultReactionEmoji?: DefaultReactionEmoji | null; defaultThreadRateLimitPerUser?: number; + tags?: ChannelFlagsResolvable; reason?: string; }