mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
feat(ThreadChannel): add fetchOwner() method (#6207)
* feat(ThreadChannel): add owner and fetchOwner() * fix(ThreadChannel): remove owner and return ThreadMember with fetchOwner * fix(ThreadChannel): apply suggestions from code review Co-authored-by: SpaceEEC <spaceeec@yahoo.com> * fix(ThreadChannel): correctly point to the manager * docs(FetchOwnerOptions): update desc to mention threads * fix(ThreadChannel): fetchOwner can return null * docs(ThreadChannel): owner is nullable Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> Co-authored-by: SpaceEEC <spaceeec@yahoo.com> Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
This commit is contained in:
@@ -458,7 +458,7 @@ class Guild extends AnonymousGuild {
|
||||
}
|
||||
|
||||
/**
|
||||
* Options used to fetch the owner of guild.
|
||||
* Options used to fetch the owner of a guild or a thread.
|
||||
* @typedef {Object} FetchOwnerOptions
|
||||
* @property {boolean} [cache=true] Whether or not to cache the fetched member
|
||||
* @property {boolean} [force=false] Whether to skip the cache check and request the API
|
||||
|
||||
@@ -234,6 +234,22 @@ class ThreadChannel extends Channel {
|
||||
return this.parent?.permissionsFor(memberOrRole) ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetches the owner of this thread
|
||||
* @param {FetchOwnerOptions} [options] The options for fetching the member
|
||||
* @returns {Promise<?ThreadMember>}
|
||||
*/
|
||||
async fetchOwner({ cache = true, force = false } = {}) {
|
||||
if (!force) {
|
||||
const existing = this.members.cache.get(this.ownerId);
|
||||
if (existing) return existing;
|
||||
}
|
||||
|
||||
// We cannot fetch a single thread member, as of this commit's date, Discord API responds with 405
|
||||
const members = await this.members.fetch(cache);
|
||||
return members.get(this.ownerId) ?? null;
|
||||
}
|
||||
|
||||
/**
|
||||
* The options used to edit a thread channel
|
||||
* @typedef {Object} ThreadEditData
|
||||
|
||||
1
typings/index.d.ts
vendored
1
typings/index.d.ts
vendored
@@ -1703,6 +1703,7 @@ export class ThreadChannel extends TextBasedChannel(Channel) {
|
||||
public leave(): Promise<ThreadChannel>;
|
||||
public permissionsFor(memberOrRole: GuildMember | Role): Readonly<Permissions>;
|
||||
public permissionsFor(memberOrRole: GuildMemberResolvable | RoleResolvable): Readonly<Permissions> | null;
|
||||
public fetchOwner(options?: FetchOwnerOptions): Promise<ThreadMember | null>;
|
||||
public setArchived(archived?: boolean, reason?: string): Promise<ThreadChannel>;
|
||||
public setAutoArchiveDuration(
|
||||
autoArchiveDuration: ThreadAutoArchiveDuration,
|
||||
|
||||
Reference in New Issue
Block a user