diff --git a/packages/discord.js/src/managers/GuildChannelManager.js b/packages/discord.js/src/managers/GuildChannelManager.js index 1bf01fadd222..7ca9287d8af8 100644 --- a/packages/discord.js/src/managers/GuildChannelManager.js +++ b/packages/discord.js/src/managers/GuildChannelManager.js @@ -468,8 +468,17 @@ class GuildChannelManager extends CachedManager { * .catch(console.error); */ async fetchActiveThreads(cache = true) { - const raw = await this.client.rest.get(Routes.guildActiveThreads(this.guild.id)); - return GuildTextThreadManager._mapThreads(raw, this.client, { guild: this.guild, cache }); + const data = await this.rawFetchGuildActiveThreads(); + return GuildTextThreadManager._mapThreads(data, this.client, { guild: this.guild, cache }); + } + + /** + * `GET /guilds/{guild.id}/threads/active` + * @private + * @returns {Promise} + */ + rawFetchGuildActiveThreads() { + return this.client.rest.get(Routes.guildActiveThreads(this.guild.id)); } /** diff --git a/packages/discord.js/src/managers/ThreadManager.js b/packages/discord.js/src/managers/ThreadManager.js index bb0f0957db4e..900d811996a1 100644 --- a/packages/discord.js/src/managers/ThreadManager.js +++ b/packages/discord.js/src/managers/ThreadManager.js @@ -171,13 +171,13 @@ class ThreadManager extends CachedManager { } /** - * Obtains all active thread channels in the guild. - * This internally calls {@link GuildChannelManager#fetchActiveThreads}. + * Obtains all active threads in the channel. * @param {boolean} [cache=true] Whether to cache the fetched data * @returns {Promise} */ - fetchActive(cache = true) { - return this.channel.guild.channels.fetchActiveThreads(cache); + async fetchActive(cache = true) { + const data = await this.channel.guild.channels.rawFetchGuildActiveThreads(); + return this.constructor._mapThreads(data, this.client, { parent: this.channel, cache }); } static _mapThreads(rawThreads, client, { parent, guild, cache }) { diff --git a/packages/discord.js/src/util/APITypes.js b/packages/discord.js/src/util/APITypes.js index 518b79b299d9..d0a48660b01f 100644 --- a/packages/discord.js/src/util/APITypes.js +++ b/packages/discord.js/src/util/APITypes.js @@ -400,6 +400,11 @@ * @see {@link https://discord-api-types.dev/api/discord-api-types-payloads/common#PermissionFlagsBits} */ +/** + * @external RESTGetAPIGuildThreadsResult + * @see {@link https://discord-api-types.dev/api/discord-api-types-v10#RESTGetAPIGuildThreadsResult} + */ + /** * @external RESTJSONErrorCodes * @see {@link https://discord-api-types.dev/api/discord-api-types-rest/common/enum/RESTJSONErrorCodes} diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 6ddddbdcae1c..c96a54f37db8 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -156,6 +156,7 @@ import { APIApplicationRoleConnectionMetadata, ImageFormat, GuildMemberFlags, + RESTGetAPIGuildThreadsResult, } from 'discord-api-types/v10'; import { ChildProcess } from 'node:child_process'; import { EventEmitter } from 'node:events'; @@ -3860,6 +3861,7 @@ export class GuildChannelManager extends CachedManager; public setPositions(channelPositions: readonly ChannelPosition[]): Promise; public fetchActiveThreads(cache?: boolean): Promise; + private rawFetchGuildActiveThreads(): Promise; public delete(channel: GuildChannelResolvable, reason?: string): Promise; }