Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(GuildChannelManager): allow editing flags #8637

Merged
merged 2 commits into from Sep 21, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions packages/discord.js/src/managers/GuildChannelManager.js
Expand Up @@ -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');
Expand Down Expand Up @@ -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
*/

Expand Down Expand Up @@ -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,
});
Expand Down
9 changes: 9 additions & 0 deletions packages/discord.js/src/util/ChannelFlagsBitField.js
Expand Up @@ -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;
3 changes: 3 additions & 0 deletions packages/discord.js/typings/index.d.ts
Expand Up @@ -729,6 +729,8 @@ export type CategoryChannelResolvable = Snowflake | CategoryChannel;

export type ChannelFlagsString = keyof typeof ChannelFlags;

export type ChannelFlagsResolvable = BitFieldResolvable<ChannelFlagsString, number>;

export class ChannelFlagsBitField extends BitField<ChannelFlagsString> {
public static Flags: typeof ChannelFlags;
public static resolve(bit?: BitFieldResolvable<ChannelFlagsString, ChannelFlags>): number;
Expand Down Expand Up @@ -4900,6 +4902,7 @@ export interface GuildChannelEditOptions {
availableTags?: GuildForumTagData[];
defaultReactionEmoji?: DefaultReactionEmoji | null;
defaultThreadRateLimitPerUser?: number;
tags?: ChannelFlagsResolvable;
reason?: string;
}

Expand Down