From 7678f1176a645878261361faef0429f9cf7f4810 Mon Sep 17 00:00:00 2001 From: Jiralite <33201955+Jiralite@users.noreply.github.com> Date: Thu, 5 Dec 2024 08:40:46 +0000 Subject: [PATCH] fix(ThreadChannel): Make `ownerId` always present (#10618) fix: thread owner id is always present Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- .../src/structures/ThreadChannel.js | 22 ++++++------------- packages/discord.js/typings/index.d.ts | 2 +- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/packages/discord.js/src/structures/ThreadChannel.js b/packages/discord.js/src/structures/ThreadChannel.js index e19455aa9..cdd09a840 100644 --- a/packages/discord.js/src/structures/ThreadChannel.js +++ b/packages/discord.js/src/structures/ThreadChannel.js @@ -6,7 +6,7 @@ const { RESTJSONErrorCodes, ChannelFlags, ChannelType, PermissionFlagsBits, Rout const { BaseChannel } = require('./BaseChannel'); const getThreadOnlyChannel = lazy(() => require('./ThreadOnlyChannel')); const TextBasedChannel = require('./interfaces/TextBasedChannel'); -const { DiscordjsError, DiscordjsRangeError, ErrorCodes } = require('../errors'); +const { DiscordjsRangeError, ErrorCodes } = require('../errors'); const GuildMessageManager = require('../managers/GuildMessageManager'); const ThreadMemberManager = require('../managers/ThreadMemberManager'); const ChannelFlagsBitField = require('../util/ChannelFlagsBitField'); @@ -32,6 +32,12 @@ class ThreadChannel extends BaseChannel { */ this.guildId = guild?.id ?? data.guild_id; + /** + * The id of the member who created this thread + * @type {Snowflake} + */ + this.ownerId = data.owner_id; + /** * A manager of the messages sent to this thread * @type {GuildMessageManager} @@ -122,16 +128,6 @@ class ThreadChannel extends BaseChannel { this._createdTimestamp ??= this.type === ChannelType.PrivateThread ? super.createdTimestamp : null; - if ('owner_id' in data) { - /** - * The id of the member who created this thread - * @type {?Snowflake} - */ - this.ownerId = data.owner_id; - } else { - this.ownerId ??= null; - } - if ('last_message_id' in data) { /** * The last message id sent in this thread, if one was sent @@ -301,10 +297,6 @@ class ThreadChannel extends BaseChannel { * @returns {Promise} */ async fetchOwner(options) { - if (!this.ownerId) { - throw new DiscordjsError(ErrorCodes.FetchOwnerId, 'thread'); - } - // TODO: Remove that catch in the next major version const member = await this.members._fetchSingle({ ...options, member: this.ownerId }).catch(error => { if (error instanceof DiscordAPIError && error.code === RESTJSONErrorCodes.UnknownMember) { diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index c82f5149c..6fa846936 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -3384,7 +3384,7 @@ export class ThreadChannel extends BaseCha public totalMessageSent: number | null; public members: ThreadMemberManager; public name: string; - public ownerId: Snowflake | null; + public ownerId: Snowflake; public get parent(): If | null; public parentId: Snowflake | null; public rateLimitPerUser: number | null;