diff --git a/src/api/handlers/guild.ts b/src/api/handlers/guild.ts index 25ee6b243..25e6cd7e8 100644 --- a/src/api/handlers/guild.ts +++ b/src/api/handlers/guild.ts @@ -148,6 +148,17 @@ export async function deleteChannel( throw new Error(Errors.MISSING_MANAGE_CHANNELS); } + const guild = await cacheHandlers.get("guilds", guildID); + if (!guild) throw new Error(Errors.GUILD_NOT_FOUND); + + if (guild?.rulesChannelID === channelID) { + throw new Error(Errors.RULES_CHANNEL_CANNOT_BE_DELETED); + } + + if (guild?.publicUpdatesChannelID === channelID) { + throw new Error(Errors.UPDATES_CHANNEL_CANNOT_BE_DELETED); + } + return RequestManager.delete(endpoints.CHANNEL_BASE(channelID), { reason }); } diff --git a/src/types/errors.ts b/src/types/errors.ts index f0f758977..02fe6c29a 100644 --- a/src/types/errors.ts +++ b/src/types/errors.ts @@ -39,4 +39,7 @@ export enum Errors { USERNAME_MIN_LENGTH = "USERNAME_MIN_LENGTH", USERNAME_INVALID_CHARACTER = "USERNAME_INVALID_CHARACTER", USERNAME_INVALID_USERNAME = "USERNAME_INVALID_USERNAME", + RULES_CHANNEL_CANNOT_BE_DELETED = "RULES_CHANNEL_CANNOT_BE_DELETED", + UPDATES_CHANNEL_CANNOT_BE_DELETED = "UPDATES_CHANNEL_CANNOT_BE_DELETED", + GUILD_NOT_FOUND = "GUILD_NOT_FOUND", }