import type { GuildTextBasedChannel, TextChannel } from "discord.js"; import { ChannelType } from "discord.js"; import { client } from "@/client"; export async function getTextChannel(id: string, mustBeSendable = true): Promise { const channel = await client.channels.fetch(id); if (!channel) throw new Error(`Channel not found: ${id}`); if (channel.type !== ChannelType.GuildText) throw new Error(`Channel is not text-based: ${id}`); if (!mustBeSendable) return channel; if (!channel.isSendable()) throw new Error(`Channel is not sendable: ${id}`); return channel; } export async function getSendableChannel(id: string): Promise { const channel = await client.channels.fetch(id); if (!channel) throw new Error(`Channel not found: ${id}`); if (!channel.isSendable() && !channel.isTextBased()) throw new Error(`Channel is not sendable or text-based: ${id}`); if (!("guild" in channel)) throw new Error(`Channel is not sendable: ${id}`); return channel; } export async function getCategory(id: string) { const channel = await client.channels.fetch(id); if (!channel) throw new Error(`Category not found: ${id}`); if (channel.type !== ChannelType.GuildCategory) throw new Error(`Channel is not a category: ${id}`); return channel; }