feat: ForumChannel
Backport https://github.com/discordjs/discord.js/pull/8786
This commit is contained in:
parent
db696d3e16
commit
f8246be0aa
@ -55,8 +55,6 @@ class GuildForumThreadManager extends ThreadManager {
|
|||||||
rateLimitPerUser,
|
rateLimitPerUser,
|
||||||
appliedTags,
|
appliedTags,
|
||||||
} = {}) {
|
} = {}) {
|
||||||
let path = this.client.api.channels(this.channel.id);
|
|
||||||
|
|
||||||
if (!message) {
|
if (!message) {
|
||||||
throw new TypeError('GUILD_FORUM_MESSAGE_REQUIRED');
|
throw new TypeError('GUILD_FORUM_MESSAGE_REQUIRED');
|
||||||
}
|
}
|
||||||
@ -73,7 +71,7 @@ class GuildForumThreadManager extends ThreadManager {
|
|||||||
|
|
||||||
if (autoArchiveDuration === 'MAX') autoArchiveDuration = resolveAutoArchiveMaxLimit(this.channel.guild);
|
if (autoArchiveDuration === 'MAX') autoArchiveDuration = resolveAutoArchiveMaxLimit(this.channel.guild);
|
||||||
|
|
||||||
const data = await path.threads.post({
|
const data = await this.client.api.channels(this.channel.id).threads.post({
|
||||||
data: {
|
data: {
|
||||||
name,
|
name,
|
||||||
auto_archive_duration: autoArchiveDuration,
|
auto_archive_duration: autoArchiveDuration,
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
const { Channel } = require('./Channel');
|
const { Channel } = require('./Channel');
|
||||||
const TextBasedChannel = require('./interfaces/TextBasedChannel');
|
const TextBasedChannel = require('./interfaces/TextBasedChannel');
|
||||||
const { RangeError } = require('../errors');
|
const { RangeError } = require('../errors');
|
||||||
const InteractionManager = require('../managers/InteractionManager');
|
|
||||||
const MessageManager = require('../managers/MessageManager');
|
const MessageManager = require('../managers/MessageManager');
|
||||||
const ThreadMemberManager = require('../managers/ThreadMemberManager');
|
const ThreadMemberManager = require('../managers/ThreadMemberManager');
|
||||||
|
const ChannelFlags = require('../util/ChannelFlags');
|
||||||
const Permissions = require('../util/Permissions');
|
const Permissions = require('../util/Permissions');
|
||||||
const { resolveAutoArchiveMaxLimit } = require('../util/Util');
|
const { resolveAutoArchiveMaxLimit } = require('../util/Util');
|
||||||
|
|
||||||
@ -36,12 +36,6 @@ class ThreadChannel extends Channel {
|
|||||||
*/
|
*/
|
||||||
this.messages = new MessageManager(this);
|
this.messages = new MessageManager(this);
|
||||||
|
|
||||||
/**
|
|
||||||
* A manager of the interactions sent to this channel
|
|
||||||
* @type {InteractionManager}
|
|
||||||
*/
|
|
||||||
this.interactions = new InteractionManager(this);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A manager of the members that are part of this thread
|
* A manager of the members that are part of this thread
|
||||||
* @type {ThreadMemberManager}
|
* @type {ThreadMemberManager}
|
||||||
@ -329,6 +323,7 @@ class ThreadChannel extends Channel {
|
|||||||
* @property {number} [rateLimitPerUser] The rate limit per user (slowmode) for the thread in seconds
|
* @property {number} [rateLimitPerUser] The rate limit per user (slowmode) for the thread in seconds
|
||||||
* @property {boolean} [locked] Whether the thread is locked
|
* @property {boolean} [locked] Whether the thread is locked
|
||||||
* @property {boolean} [invitable] Whether non-moderators can add other non-moderators to a thread
|
* @property {boolean} [invitable] Whether non-moderators can add other non-moderators to a thread
|
||||||
|
* @property {ChannelFlagsResolvable} [flags] The flags to set on the channel
|
||||||
* <info>Can only be edited on `GUILD_PRIVATE_THREAD`</info>
|
* <info>Can only be edited on `GUILD_PRIVATE_THREAD`</info>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -356,6 +351,7 @@ class ThreadChannel extends Channel {
|
|||||||
locked: data.locked,
|
locked: data.locked,
|
||||||
invitable: this.type === 'GUILD_PRIVATE_THREAD' ? data.invitable : undefined,
|
invitable: this.type === 'GUILD_PRIVATE_THREAD' ? data.invitable : undefined,
|
||||||
applied_tags: data.appliedTags,
|
applied_tags: data.appliedTags,
|
||||||
|
flags: 'flags' in data ? ChannelFlags.resolve(data.flags) : undefined,
|
||||||
},
|
},
|
||||||
reason,
|
reason,
|
||||||
});
|
});
|
||||||
@ -363,16 +359,6 @@ class ThreadChannel extends Channel {
|
|||||||
return this.client.actions.ChannelUpdate.handle(newData).updated;
|
return this.client.actions.ChannelUpdate.handle(newData).updated;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the applied tags for this channel (only applicable to forum threads)
|
|
||||||
* @param {Snowflake[]} appliedTags The tags to set for this channel
|
|
||||||
* @param {string} [reason] Reason for changing the thread's applied tags
|
|
||||||
* @returns {Promise<GuildForumThreadChannel>}
|
|
||||||
*/
|
|
||||||
setAppliedTags(appliedTags, reason) {
|
|
||||||
return this.edit({ appliedTags, reason });
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets whether the thread is archived.
|
* Sets whether the thread is archived.
|
||||||
* @param {boolean} [archived=true] Whether the thread is archived
|
* @param {boolean} [archived=true] Whether the thread is archived
|
||||||
@ -459,6 +445,34 @@ class ThreadChannel extends Channel {
|
|||||||
return this.edit({ rateLimitPerUser }, reason);
|
return this.edit({ rateLimitPerUser }, reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pins this thread from the forum channel.
|
||||||
|
* @param {string} [reason] Reason for pinning
|
||||||
|
* @returns {Promise<ThreadChannel>}
|
||||||
|
*/
|
||||||
|
pin(reason) {
|
||||||
|
return this.edit({ flags: this.flags.add(ChannelFlags.FLAGS.PINNED), reason });
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unpins this thread from the forum channel.
|
||||||
|
* @param {string} [reason] Reason for unpinning
|
||||||
|
* @returns {Promise<ThreadChannel>}
|
||||||
|
*/
|
||||||
|
unpin(reason) {
|
||||||
|
return this.edit({ flags: this.flags.remove(ChannelFlags.FLAGS.PINNED), reason });
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the applied tags for this channel (only applicable to forum threads)
|
||||||
|
* @param {Snowflake[]} appliedTags The tags to set for this channel
|
||||||
|
* @param {string} [reason] Reason for changing the thread's applied tags
|
||||||
|
* @returns {Promise<GuildForumThreadChannel>}
|
||||||
|
*/
|
||||||
|
setAppliedTags(appliedTags, reason) {
|
||||||
|
return this.edit({ appliedTags, reason });
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether the client user is a member of the thread.
|
* Whether the client user is a member of the thread.
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
|
Loading…
Reference in New Issue
Block a user