A powerful and extendable Discord bot, with it's own module system :3 thevoid.cafe/projects/voidy
at develop 43 lines 1.3 kB view raw
1import { EmbedBuilder, Events, type GuildMember, type TextChannel } from "discord.js"; 2import { Event } from "@voidy/framework"; 3import type { IGuildConfig } from "../schemas/GuildConfig"; 4 5export default new Event({ 6 id: "guildMemberRemove", 7 name: Events.GuildMemberRemove, 8 9 execute: async ({ client }, member: unknown) => { 10 const m = member as GuildMember; 11 12 const cache = client.data.get("guildConfig") as Map<string, IGuildConfig> | undefined; 13 const config = cache?.get(m.guild.id); 14 if (!config?.logging?.channelId) return; 15 16 const logChannel = m.guild.channels.cache.get(config.logging.channelId) as 17 | TextChannel 18 | undefined; 19 20 if (!logChannel) return; 21 22 const embed = new EmbedBuilder() 23 .setColor(0x95a5a6) 24 .setAuthor({ 25 name: `${m.user.tag} left`, 26 iconURL: m.user.displayAvatarURL(), 27 }) 28 .addFields( 29 { name: "User", value: `${m}`, inline: true }, 30 { 31 name: "Joined", 32 value: m.joinedTimestamp 33 ? `<t:${Math.floor(m.joinedTimestamp / 1000)}:R>` 34 : "Unknown", 35 inline: true, 36 }, 37 ) 38 .setFooter({ text: `ID: ${m.id}` }) 39 .setTimestamp(); 40 41 await logChannel.send({ embeds: [embed] }); 42 }, 43});