import type { Model } from "../Base.ts"; import type { Snowflake } from "../../util/Snowflake.ts"; import type { Session } from "../../session/Session.ts"; import type { ChannelTypes, DiscordChannel } from "../../vendor/external.ts"; import GuildChannel from "./GuildChannel.ts"; import TextChannel from "./TextChannel.ts"; export class ThreadChannel extends GuildChannel implements Model { constructor(session: Session, data: DiscordChannel, guildId: Snowflake) { super(session, data, guildId); this.type = data.type as number; this.archived = !!data.thread_metadata?.archived; this.archiveTimestamp = data.thread_metadata?.archive_timestamp; this.autoArchiveDuration = data.thread_metadata?.auto_archive_duration; this.locked = !!data.thread_metadata?.locked; this.messageCount = data.message_count; this.memberCount = data.member_count; this.ownerId = data.owner_id; } override type: ChannelTypes.GuildNewsThread | ChannelTypes.GuildPrivateThread | ChannelTypes.GuildPublicThread; archived?: boolean; archiveTimestamp?: string; autoArchiveDuration?: number; locked?: boolean; messageCount?: number; memberCount?: number; ownerId?: Snowflake; } TextChannel.applyTo(ThreadChannel); export interface ThreadChannel extends Omit, Omit {} export default ThreadChannel;