import { EmbedBuilder, Events, type GuildMember, type TextChannel } from "discord.js"; import { Event } from "@voidy/framework"; import type { IGuildConfig } from "../schemas/GuildConfig"; export default new Event({ id: "guildMemberRemove", name: Events.GuildMemberRemove, execute: async ({ client }, member: unknown) => { const m = member as GuildMember; const cache = client.data.get("guildConfig") as Map | undefined; const config = cache?.get(m.guild.id); if (!config?.logging?.channelId) return; const logChannel = m.guild.channels.cache.get(config.logging.channelId) as | TextChannel | undefined; if (!logChannel) return; const embed = new EmbedBuilder() .setColor(0x95a5a6) .setAuthor({ name: `${m.user.tag} left`, iconURL: m.user.displayAvatarURL(), }) .addFields( { name: "User", value: `${m}`, inline: true }, { name: "Joined", value: m.joinedTimestamp ? `` : "Unknown", inline: true, }, ) .setFooter({ text: `ID: ${m.id}` }) .setTimestamp(); await logChannel.send({ embeds: [embed] }); }, });