From 0a444c3e1a28c0cd0738a509bf33385f74ea5278 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Susa=C3=B1a?= Date: Mon, 9 Dec 2024 21:13:38 -0400 Subject: [PATCH] fix(channels): correct return type of mixin functions (#302) --- src/structures/channels.ts | 57 +++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/src/structures/channels.ts b/src/structures/channels.ts index ad43166..6eabf7e 100644 --- a/src/structures/channels.ts +++ b/src/structures/channels.ts @@ -237,6 +237,14 @@ export class BaseGuildChannel extends BaseChannel { setParent(parent_id: string | null, reason?: string) { return this.edit({ parent_id }, reason); } + + setRatelimitPerUser(rate_limit_per_user: number | null | undefined) { + return this.edit({ rate_limit_per_user }); + } + + setNsfw(nsfw = true, reason?: string) { + return this.edit({ nsfw }, reason); + } } export interface MessagesMethods extends BaseNoEditableChannel {} @@ -327,27 +335,27 @@ export class TextBaseGuildChannel extends BaseGuildChannel {} export function channelFrom(data: APIChannelBase, client: UsingClient): AllChannels { switch (data.type) { case ChannelType.GuildStageVoice: - return Transformers.StageChannel(client, data); + return Transformers.StageChannel(client, data as APIGuildChannel); case ChannelType.GuildMedia: - return Transformers.MediaChannel(client, data); + return Transformers.MediaChannel(client, data as APIGuildChannel); case ChannelType.DM: return Transformers.DMChannel(client, data); case ChannelType.GuildForum: - return Transformers.ForumChannel(client, data); + return Transformers.ForumChannel(client, data as APIGuildChannel); case ChannelType.AnnouncementThread: case ChannelType.PrivateThread: case ChannelType.PublicThread: return Transformers.ThreadChannel(client, data); case ChannelType.GuildDirectory: - return Transformers.DirectoryChannel(client, data); + return Transformers.DirectoryChannel(client, data as APIGuildChannel); case ChannelType.GuildVoice: - return Transformers.VoiceChannel(client, data); + return Transformers.VoiceChannel(client, data as APIGuildChannel); case ChannelType.GuildText: return Transformers.TextGuildChannel(client, data as APIGuildChannel); case ChannelType.GuildCategory: return Transformers.CategoryChannel(client, data); case ChannelType.GuildAnnouncement: - return Transformers.NewsChannel(client, data); + return Transformers.NewsChannel(client, data as APIGuildChannel); default: { if ('guild_id' in data) { return Transformers.BaseGuildChannel(client, data as APIGuildChannel); @@ -475,14 +483,6 @@ export interface TextGuildChannel @mix(TextBaseGuildChannel, WebhookChannelMethods) export class TextGuildChannel extends BaseGuildChannel { declare type: ChannelType.GuildText; - - setRatelimitPerUser(rate_limit_per_user: number | null | undefined) { - return this.edit({ rate_limit_per_user }); - } - - setNsfw(nsfw = true, reason?: string) { - return this.edit({ nsfw }, reason); - } } export interface DMChannel extends ObjectToLower, MessagesMethods {} @@ -492,35 +492,37 @@ export class DMChannel extends BaseNoEditableChannel { } export interface VoiceChannel extends ObjectToLower>, - Omit, + Omit, VoiceChannelMethods, WebhookChannelMethods {} -@mix(TextGuildChannel, WebhookChannelMethods, VoiceChannelMethods) -export class VoiceChannel extends BaseChannel { +@mix(TextGuildChannel, VoiceChannelMethods) +export class VoiceChannel extends BaseGuildChannel { declare type: ChannelType.GuildVoice; } export interface StageChannel - extends ObjectToLower>, + extends ObjectToLower>, TopicableGuildChannel, VoiceChannelMethods {} @mix(TopicableGuildChannel, VoiceChannelMethods) -export class StageChannel extends BaseChannel { +export class StageChannel extends BaseGuildChannel { declare type: ChannelType.GuildStageVoice; } -export interface MediaChannel extends ObjectToLower>, ThreadOnlyMethods {} +export interface MediaChannel + extends ObjectToLower>, + ThreadOnlyMethods {} @mix(ThreadOnlyMethods) -export class MediaChannel extends BaseChannel { +export class MediaChannel extends BaseGuildChannel { declare type: ChannelType.GuildMedia; } export interface ForumChannel - extends ObjectToLower, + extends ObjectToLower>, Omit, WebhookChannelMethods {} @mix(ThreadOnlyMethods, WebhookChannelMethods) -export class ForumChannel extends BaseChannel { +export class ForumChannel extends BaseGuildChannel { declare type: ChannelType.GuildForum; } @@ -593,9 +595,12 @@ export class CategoryChannel extends (BaseGuildChannel as unknown as ToClass< declare type: ChannelType.GuildCategory; } -export interface NewsChannel extends ObjectToLower, WebhookChannelMethods {} -@mix(WebhookChannelMethods) -export class NewsChannel extends BaseChannel { +export interface NewsChannel + extends ObjectToLower>, + WebhookChannelMethods, + Omit {} +@mix(TextGuildChannel, WebhookChannelMethods) +export class NewsChannel extends BaseGuildChannel { declare type: ChannelType.GuildAnnouncement; addFollower(webhookChannelId: string, reason?: string) {