ForumChannel

export class ForumChannel extends ThreadOnlyChannel
export class ForumChannel extends ThreadOnlyChannel
Represents a forum channel.
availableTags:GuildForumTag[]
The set of tags that can be used in this channel.
Inherited from ThreadOnlyChannel
Readonly
client:Client<true>
The client that instantiated this
Inherited from Base
Readonly
createdAt:Date
The time the channel was created at
Inherited from GuildChannel
Readonly
createdTimestamp:number
The timestamp the channel was created at
Inherited from GuildChannel
defaultAutoArchiveDuration:ThreadAutoArchiveDuration | null
The default auto archive duration for newly created threads in this channel.
Inherited from ThreadOnlyChannel
defaultForumLayout:ForumLayoutType
The default layout type used to display posts
defaultReactionEmoji:DefaultReactionEmoji | null
The emoji to show in the add reaction button on a thread in a guild forum channel
Inherited from ThreadOnlyChannel
defaultSortOrder:SortOrderType | null
The default sort order mode used to order posts
Inherited from ThreadOnlyChannel
defaultThreadRateLimitPerUser:number | null
The initial rate limit per user (slowmode) to set on newly created threads in a channel.
Inherited from ThreadOnlyChannel
Readonly
deletable:boolean
Whether the channel is deletable by the client user
Inherited from GuildChannel
The flags that are applied to the channel. This is only null in a PartialGroupDMChannel. In all other cases, it is not null.
Inherited from GuildChannel
guild:Guild
The guild the channel is in
Inherited from GuildChannel
guildId:Snowflake
The id of the guild the channel is in
Inherited from GuildChannel
The channel's id
Inherited from BaseChannel
Readonly
manageable:boolean
Whether the channel is manageable by the client user
Inherited from GuildChannel
Readonly
A collection of cached members of this channel, mapped by their ids. Members that can view this channel, if the channel is text-based. Members in the channel, if the channel is voice-based.
Inherited from GuildChannel
name:string
The name of the guild channel
Inherited from GuildChannel
nsfw:boolean
If this channel is considered NSFW.
Inherited from ThreadOnlyChannel
Readonly
The category parent of this channel
Inherited from GuildChannel
parentId:Snowflake | null
The id of the category parent of this channel
Inherited from GuildChannel
Readonly
partial:false
Whether this Channel is a partial This is always false outside of DM channels.
Inherited from BaseChannel
permissionOverwrites:PermissionOverwriteManager
A manager of permission overwrites that belong to this channel
Inherited from GuildChannel
Readonly
permissionsLocked:boolean | null
If the permissionOverwrites match the parent channel, null if no parent
Inherited from GuildChannel
Readonly
position:number
The position of the channel
Inherited from GuildChannel
rateLimitPerUser:number | null
The rate limit per user (slowmode) for this channel.
Inherited from ThreadOnlyChannel
rawPosition:number
The raw position of the channel from Discord
Inherited from GuildChannel
A manager of the threads belonging to this channel
Inherited from ThreadOnlyChannel
topic:string | null
The topic of this channel.
Inherited from ThreadOnlyChannel
The type of the channel
Readonly
url:string
The URL to the channel
Inherited from BaseChannel
Readonly
viewable:boolean
Whether the channel is viewable by the client user
Inherited from GuildChannel
clone(options?):Promise<this>
Clones this channel.
NameTypeOptionalDescription
optionsGuildChannelCloneOptionsYesThe options for cloning this channel
Inherited from GuildChannel
createInvite(options?):Promise<Invite>
Creates an invite to this guild channel.
Example
// Create an invite to a channel
channel.createInvite()
.then(invite => console.log(`Created an invite with a code of ${invite.code}`))
.catch(console.error);
// Create an invite to a channel
channel.createInvite()
.then(invite => console.log(`Created an invite with a code of ${invite.code}`))
.catch(console.error);
NameTypeOptionalDescription
optionsInviteCreateOptionsYesThe options for creating the invite
Inherited from ThreadOnlyChannel
createWebhook(options?):Promise<Webhook>
Creates a webhook for the channel.
Returns
Returns the created Webhook *
Example
// Create a webhook for the current channel
channel.createWebhook({
name: 'Snek',
avatar: 'https://i.imgur.com/mI8XcpG.jpg',
reason: 'Needed a cool new Webhook'
})
.then(console.log)
.catch(console.error)
// Create a webhook for the current channel
channel.createWebhook({
name: 'Snek',
avatar: 'https://i.imgur.com/mI8XcpG.jpg',
reason: 'Needed a cool new Webhook'
})
.then(console.log)
.catch(console.error)
NameTypeOptionalDescription
optionsChannelWebhookCreateOptionsYesOptions for creating the webhook
Inherited from ThreadOnlyChannel
delete(reason?):Promise<this>
Deletes this channel.
Example
// Delete the channel
channel.delete('making room for new channels')
.then(console.log)
.catch(console.error);
// Delete the channel
channel.delete('making room for new channels')
.then(console.log)
.catch(console.error);
NameTypeOptionalDescription
reasonstringYesReason for deleting this channel
Inherited from GuildChannel
edit(options):Promise<this>
Edits the channel.
Example
// Edit a channel
channel.edit({ name: 'new-channel' })
.then(console.log)
.catch(console.error);
// Edit a channel
channel.edit({ name: 'new-channel' })
.then(console.log)
.catch(console.error);
NameTypeOptionalDescription
optionsGuildChannelEditOptionsNoThe options to provide
Inherited from GuildChannel
equals(channel):boolean
Checks if this channel has the same type, topic, position, name, overwrites, and id as another channel. In most cases, a simple channel.id === channel2.id will do, and is much faster too.
NameTypeOptionalDescription
channelGuildChannelNoChannel to compare with
Inherited from GuildChannel
fetch(force?):Promise<this>
Fetches this channel.
NameTypeOptionalDescription
forcebooleanYesWhether to skip the cache check and request the API
Inherited from BaseChannel
fetchInvites(cache?):Promise<Collection<string, Invite>>
Fetches a collection of invites to this guild channel. Resolves with a collection mapping invites by their codes.
NameTypeOptionalDescription
cachebooleanYesWhether to cache the fetched invites
Inherited from ThreadOnlyChannel
fetchWebhooks():Promise<Collection<Snowflake, Webhook>>
Fetches all webhooks for the channel.
Example
// Fetch webhooks
channel.fetchWebhooks()
.then(hooks => console.log(`This channel has ${hooks.size} hooks`))
.catch(console.error);
// Fetch webhooks
channel.fetchWebhooks()
.then(hooks => console.log(`This channel has ${hooks.size} hooks`))
.catch(console.error);
Inherited from ThreadOnlyChannel
Indicates whether this channel is DM-based (either a or a PartialGroupDMChannel).
Inherited from BaseChannel
isSendable():this is SendableChannels
Indicates whether this channel is sendable.
Inherited from BaseChannel
isTextBased():this is GuildBasedChannel & TextBasedChannel
Indicates whether this channel is text-based.
Inherited from GuildChannel
isThread():this is AnyThreadChannel
Indicates whether this channel is a .
Inherited from BaseChannel
isThreadOnly():this is ThreadOnlyChannel
Indicates whether this channel is .
Inherited from BaseChannel
isVoiceBased():this is VoiceBasedChannel
Indicates whether this channel is .
Inherited from BaseChannel
lockPermissions():Promise<this>
Locks in the permission overwrites from the parent channel.
Inherited from GuildChannel
permissionsFor(memberOrRole, checkAdmin?):Readonly<PermissionsBitField>
Gets the overall set of permissions for a member or role in this channel, taking into account channel overwrites.
Returns
NameTypeOptionalDescription
memberOrRoleGuildMember | RoleNoThe member or role to obtain the overall permissions for
checkAdminbooleanYesWhether having the PermissionFlagsBits.Administrator permission will return all permissions
setAvailableTags(availableTags, reason?):Promise<this>
Sets the available tags for this forum channel
NameTypeOptionalDescription
availableTagsreadonly GuildForumTagData[]NoThe tags to set as available in this channel
reasonstringYesReason for changing the available tags
Inherited from ThreadOnlyChannel
setDefaultAutoArchiveDuration(defaultAutoArchiveDuration, reason?):Promise<this>
Sets the default auto archive duration for all newly created threads in this channel.
NameTypeOptionalDescription
defaultAutoArchiveDurationThreadAutoArchiveDurationNoThe new default auto archive duration
reasonstringYesReason for changing the channel's default auto archive duration
Inherited from ThreadOnlyChannel
setDefaultForumLayout(defaultForumLayout, reason?):Promise<this>
Sets the default forum layout type used to display posts
NameTypeOptionalDescription
defaultForumLayoutForumLayoutTypeNoThe default forum layout type to set on this channel
reasonstringYesReason for changing the default forum layout
setDefaultReactionEmoji(defaultReactionEmoji, reason?):Promise<this>
Sets the default reaction emoji for this channel
NameTypeOptionalDescription
defaultReactionEmojiDefaultReactionEmoji | nullNoThe emoji to set as the default reaction emoji
reasonstringYesReason for changing the default reaction emoji
Inherited from ThreadOnlyChannel
setDefaultSortOrder(defaultSortOrder, reason?):Promise<this>
Sets the default sort order mode used to order posts
NameTypeOptionalDescription
defaultSortOrderSortOrderType | nullNoThe default sort order mode to set on this channel
reasonstringYesReason for changing the default sort order
Inherited from ThreadOnlyChannel
setDefaultThreadRateLimitPerUser(defaultThreadRateLimitPerUser, reason?):Promise<this>
Sets the default rate limit per user (slowmode) for new threads in this channel
NameTypeOptionalDescription
defaultThreadRateLimitPerUsernumberNoThe rate limit to set on newly created threads in this channel
reasonstringYesReason for changing the default rate limit
Inherited from ThreadOnlyChannel
setName(name, reason?):Promise<this>
Sets a new name for the guild channel.
Example
// Set a new channel name
channel.setName('not_general')
.then(newChannel => console.log(`Channel's new name is ${newChannel.name}`))
.catch(console.error);
// Set a new channel name
channel.setName('not_general')
.then(newChannel => console.log(`Channel's new name is ${newChannel.name}`))
.catch(console.error);
NameTypeOptionalDescription
namestringNoThe new name for the guild channel
reasonstringYesReason for changing the guild channel's name
Inherited from GuildChannel
setNSFW(nsfw?, reason?):Promise<this>
Sets whether this channel is flagged as NSFW.
NameTypeOptionalDescription
nsfwbooleanYesWhether the channel should be considered NSFW
reasonstringYesReason for changing the channel's NSFW flag
Inherited from ThreadOnlyChannel
setParent(channel, options?):Promise<this>
Sets the parent of this channel.
Example
// Add a parent to a channel
message.channel.setParent('355908108431917066', { lockPermissions: false })
.then(channel => console.log(`New parent of ${message.channel.name}: ${channel.name}`))
.catch(console.error);
// Add a parent to a channel
message.channel.setParent('355908108431917066', { lockPermissions: false })
.then(channel => console.log(`New parent of ${message.channel.name}: ${channel.name}`))
.catch(console.error);
NameTypeOptionalDescription
channelCategoryChannelResolvable | nullNoThe category channel to set as the parent
optionsSetParentOptionsYesThe options for setting the parent
Inherited from GuildChannel
setPosition(position, options?):Promise<this>
Sets a new position for the guild channel.
Example
// Set a new channel position
channel.setPosition(2)
.then(newChannel => console.log(`Channel's new position is ${newChannel.position}`))
.catch(console.error);
// Set a new channel position
channel.setPosition(2)
.then(newChannel => console.log(`Channel's new position is ${newChannel.position}`))
.catch(console.error);
NameTypeOptionalDescription
positionnumberNoThe new position for the guild channel
optionsSetChannelPositionOptionsYesOptions for setting position
Inherited from GuildChannel
setRateLimitPerUser(rateLimitPerUser, reason?):Promise<this>
Sets the rate limit per user (slowmode) for this channel.
NameTypeOptionalDescription
rateLimitPerUsernumberNoThe new rate limit in seconds
reasonstringYesReason for changing the channel's rate limit
Inherited from ThreadOnlyChannel
setTopic(topic, reason?):Promise<this>
Sets a new topic for the guild channel.
Example
// Set a new channel topic
channel.setTopic('needs more rate limiting')
.then(newChannel => console.log(`Channel's new topic is ${newChannel.topic}`))
.catch(console.error);
// Set a new channel topic
channel.setTopic('needs more rate limiting')
.then(newChannel => console.log(`Channel's new topic is ${newChannel.topic}`))
.catch(console.error);
NameTypeOptionalDescription
topicstring | nullNoThe new topic for the guild channel
reasonstringYesReason for changing the guild channel's topic
Inherited from ThreadOnlyChannel
toJSON(...props):unknown
NameTypeOptionalDescription
...propsRecord<string, boolean | string>[]NoNone
Inherited from Base
toString():ChannelMention
When concatenated with a string, this automatically returns the channel's mention instead of the Channel object.
Example
// Logs: Hello from <#123456789012345678>!
console.log(`Hello from ${channel}!`);
// Logs: Hello from <#123456789012345678>!
console.log(`Hello from ${channel}!`);
Inherited from GuildChannel
valueOf():string