From f8ed71bfca6e47e3d44ad063e23804354bd23604 Mon Sep 17 00:00:00 2001 From: Parbez Date: Mon, 6 Jun 2022 17:54:03 +0530 Subject: [PATCH] fix: readd `isThread` type guard (#8019) --- packages/discord.js/src/structures/Channel.js | 9 +++++++++ packages/discord.js/typings/index.d.ts | 1 + packages/discord.js/typings/index.test-d.ts | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/discord.js/src/structures/Channel.js b/packages/discord.js/src/structures/Channel.js index d4061088c903..fb889a7588c4 100644 --- a/packages/discord.js/src/structures/Channel.js +++ b/packages/discord.js/src/structures/Channel.js @@ -3,6 +3,7 @@ const { DiscordSnowflake } = require('@sapphire/snowflake'); const { ChannelType, Routes } = require('discord-api-types/v10'); const Base = require('./Base'); +const { ThreadChannelTypes } = require('../util/Constants'); let CategoryChannel; let DMChannel; let NewsChannel; @@ -109,6 +110,14 @@ class Channel extends Base { return this.client.channels.fetch(this.id, { force }); } + /** + * Indicates whether this channel is a {@link ThreadChannel}. + * @returns {boolean} + */ + isThread() { + return ThreadChannelTypes.includes(this.type); + } + /** * Indicates whether this channel is {@link TextBasedChannels text-based}. * @returns {boolean} diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 93b2ea3ce6cf..d74208d8c764 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -750,6 +750,7 @@ export abstract class Channel extends Base { public get url(): string; public delete(): Promise; public fetch(force?: boolean): Promise; + public isThread(): this is ThreadChannel; public isTextBased(): this is TextBasedChannel; public isDMBased(): this is PartialGroupDMChannel | DMChannel | PartialDMChannel; public isVoiceBased(): this is VoiceBasedChannel; diff --git a/packages/discord.js/typings/index.test-d.ts b/packages/discord.js/typings/index.test-d.ts index 6913113b776d..438eee9f57d2 100644 --- a/packages/discord.js/typings/index.test-d.ts +++ b/packages/discord.js/typings/index.test-d.ts @@ -557,7 +557,7 @@ client.on('guildCreate', async g => { channel.send({ components: [row, row2] }); } - if (channel.type === ChannelType.GuildPublicThread) { + if (channel.isThread()) { const fetchedMember = await channel.members.fetch({ member: '12345678' }); expectType(fetchedMember); const fetchedMemberCol = await channel.members.fetch(true);