feat(Channel): Add isThreadOnly()

#9847 backport
This commit is contained in:
Elysia
2024-09-17 17:51:39 +07:00
parent 35ca0c89bf
commit f8071f7e79
2 changed files with 15 additions and 0 deletions

View File

@@ -12,6 +12,7 @@ let ThreadChannel;
let VoiceChannel; let VoiceChannel;
let DirectoryChannel; let DirectoryChannel;
let ForumChannel; let ForumChannel;
let MediaChannel;
const ChannelFlags = require('../util/ChannelFlags'); const ChannelFlags = require('../util/ChannelFlags');
const { ChannelTypes, ThreadChannelTypes, VoiceBasedChannelTypes } = require('../util/Constants'); const { ChannelTypes, ThreadChannelTypes, VoiceBasedChannelTypes } = require('../util/Constants');
const SnowflakeUtil = require('../util/SnowflakeUtil'); const SnowflakeUtil = require('../util/SnowflakeUtil');
@@ -177,6 +178,14 @@ class Channel extends Base {
return ThreadChannelTypes.includes(this.type); return ThreadChannelTypes.includes(this.type);
} }
/**
* Indicates whether this channel is {@link ThreadOnlyChannel}.
* @returns {boolean}
*/
isThreadOnly() {
return 'availableTags' in this;
}
/** /**
* Indicates whether this channel is a {@link DirectoryChannel} * Indicates whether this channel is a {@link DirectoryChannel}
* @returns {boolean} * @returns {boolean}
@@ -196,6 +205,7 @@ class Channel extends Base {
VoiceChannel ??= require('./VoiceChannel'); VoiceChannel ??= require('./VoiceChannel');
DirectoryChannel ??= require('./DirectoryChannel'); DirectoryChannel ??= require('./DirectoryChannel');
ForumChannel ??= require('./ForumChannel'); ForumChannel ??= require('./ForumChannel');
MediaChannel ??= require('./MediaChannel');
let channel; let channel;
if (!data.guild_id && !guild) { if (!data.guild_id && !guild) {
@@ -249,6 +259,10 @@ class Channel extends Base {
case ChannelTypes.GUILD_FORUM: case ChannelTypes.GUILD_FORUM:
channel = new ForumChannel(guild, data, client); channel = new ForumChannel(guild, data, client);
break; break;
case ChannelTypes.GUILD_MEDIA:
channel = new MediaChannel(guild, data, client);
break;
} }
if (channel && !allowUnknownGuild) guild.channels?.cache.set(channel.id, channel); if (channel && !allowUnknownGuild) guild.channels?.cache.set(channel.id, channel);
} }

1
typings/index.d.ts vendored
View File

@@ -730,6 +730,7 @@ export abstract class Channel extends Base {
public isVoice(): this is BaseGuildVoiceChannel; public isVoice(): this is BaseGuildVoiceChannel;
public isThread(): this is ThreadChannel; public isThread(): this is ThreadChannel;
public isDirectory(): this is DirectoryChannel; public isDirectory(): this is DirectoryChannel;
public isThreadOnly(): this is ThreadOnlyChannel;
public toString(): ChannelMention; public toString(): ChannelMention;
} }