mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-16 11:33:30 +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
|
* @typedef {Object} FetchOwnerOptions
|
||||||
* @property {boolean} [cache=true] Whether or not to cache the fetched member
|
* @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
|
* @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;
|
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
|
* The options used to edit a thread channel
|
||||||
* @typedef {Object} ThreadEditData
|
* @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 leave(): Promise<ThreadChannel>;
|
||||||
public permissionsFor(memberOrRole: GuildMember | Role): Readonly<Permissions>;
|
public permissionsFor(memberOrRole: GuildMember | Role): Readonly<Permissions>;
|
||||||
public permissionsFor(memberOrRole: GuildMemberResolvable | RoleResolvable): Readonly<Permissions> | null;
|
public permissionsFor(memberOrRole: GuildMemberResolvable | RoleResolvable): Readonly<Permissions> | null;
|
||||||
|
public fetchOwner(options?: FetchOwnerOptions): Promise<ThreadMember | null>;
|
||||||
public setArchived(archived?: boolean, reason?: string): Promise<ThreadChannel>;
|
public setArchived(archived?: boolean, reason?: string): Promise<ThreadChannel>;
|
||||||
public setAutoArchiveDuration(
|
public setAutoArchiveDuration(
|
||||||
autoArchiveDuration: ThreadAutoArchiveDuration,
|
autoArchiveDuration: ThreadAutoArchiveDuration,
|
||||||
|
|||||||
Reference in New Issue
Block a user