import { ChannelCreatePayload } from "../types/channel.ts";import { calculatePermissions } from "../utils/permissions.ts";import { cache } from "../utils/cache.ts";
export function createChannel(data: ChannelCreatePayload, guildID?: string) { const channel = { ...data, guildID: guildID || data.guild_id, lastMessageID: data.last_message_id, userLimit: data.user_limit, rateLimitPerUser: data.rate_limit_per_user, parentID: data.parent_id, lastPinTimestamp: data.last_pin_timestamp, permissions: data.permission_overwrites ? data.permission_overwrites.map((perm) => ({ ...perm, allow: calculatePermissions(perm.allow), deny: calculatePermissions(perm.deny), })) : [], nsfw: data.nsfw || false, mention: `<#${data.id}>`, };
delete channel.guild_id; delete channel.last_message_id; delete channel.rate_limit_per_user; delete channel.last_pin_timestamp; delete channel.user_limit;
cache.channels.set(data.id, channel); return channel;}
export interface Channel extends Omit< ReturnType<typeof createChannel>, | "guild_id" | "last_message_id" | "rate_limit_per_user" | "last_pin_timestamp" | "user_limit" > {}