diff --git a/packages/discord.js/src/managers/ThreadMemberManager.js b/packages/discord.js/src/managers/ThreadMemberManager.js index ce6988e5c..1178fe761 100644 --- a/packages/discord.js/src/managers/ThreadMemberManager.js +++ b/packages/discord.js/src/managers/ThreadMemberManager.js @@ -107,15 +107,18 @@ class ThreadMemberManager extends CachedManager { return raw.reduce((col, member) => col.set(member.user_id, this._add(member, cache)), new Collection()); } + /** + * @typedef {BaseFetchOptions} ThreadMemberFetchOptions + * @property {UserResolvable} [member] The specific user to fetch from the thread + */ + /** * Fetches member(s) for the thread from Discord, requires access to the `GUILD_MEMBERS` gateway intent. - * @param {UserResolvable|boolean} [member] The member to fetch. If `undefined`, all members - * in the thread are fetched, and will be cached based on `options.cache`. If boolean, this serves - * the purpose of `options.cache`. - * @param {BaseFetchOptions} [options] Additional options for this fetch + * @param {ThreadMemberFetchOptions|boolean} [options] Additional options for this fetch, when a `boolean` is provided + * all members are fetched with `options.cache` set to the boolean value * @returns {Promise>} */ - fetch(member, { cache = true, force = false } = {}) { + fetch({ member, cache = true, force = false } = {}) { const id = this.resolveId(member); return id ? this._fetchOne(id, cache, force) : this._fetchMany(member ?? cache); } diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 877d9ce14..b5ca3feee 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -3213,8 +3213,7 @@ export class ThreadMemberManager extends CachedManager); public thread: ThreadChannel; public add(member: UserResolvable | '@me', reason?: string): Promise; - public fetch(member?: UserResolvable, options?: BaseFetchOptions): Promise; - /** @deprecated Use `fetch(member, options)` instead. */ + public fetch(options?: ThreadMemberFetchOptions): Promise; public fetch(cache?: boolean): Promise>; public remove(id: Snowflake | '@me', reason?: string): Promise; } @@ -3732,6 +3731,10 @@ export interface BaseFetchOptions { force?: boolean; } +export interface ThreadMemberFetchOptions extends BaseFetchOptions { + member?: UserResolvable; +} + export interface BaseMessageComponentOptions { type?: MessageComponentType | MessageComponentTypes; } diff --git a/packages/discord.js/typings/index.test-d.ts b/packages/discord.js/typings/index.test-d.ts index 2dd65d6e4..3e6b6415f 100644 --- a/packages/discord.js/typings/index.test-d.ts +++ b/packages/discord.js/typings/index.test-d.ts @@ -461,8 +461,8 @@ client.on('guildCreate', async g => { if (!channel) return; if (channel.isThread()) { - const fetchedMember = await channel.members.fetch('12345678'); - expectType(fetchedMember); + const fetchedMember = await channel.members.fetch({ member: '12345678' }); + assertType(fetchedMember); const fetchedMemberCol = await channel.members.fetch(true); expectDeprecated(await channel.members.fetch(true)); expectType>(fetchedMemberCol);