const { Events } = require('discord.js'); const { readDb } = require('../../backend/db.js'); module.exports = { name: Events.GuildMemberRemove, async execute(member) { try { const db = readDb(); const settings = db[member.guild.id]; if (settings && settings.leaveEnabled && settings.leaveChannel) { let channel = member.guild.channels.cache.get(settings.leaveChannel); if (!channel) { try { channel = await member.guild.channels.fetch(settings.leaveChannel); } catch (err) { return; } } if (channel && channel.isTextBased && channel.isTextBased()) { try { const me = member.guild.members.me; const perms = channel.permissionsFor(me); if (!perms || !perms.has('ViewChannel') || !perms.has('SendMessages')) { return; } const userMention = member.user ? (member.user.toString ? member.user.toString() : member.user.tag) : 'A user'; const message = (settings.leaveMessage || '{user} has left the server.').replace('{user}', userMention).replace('{server}', member.guild.name); await channel.send(message); } catch (error) { console.error(`Could not send leave message to channel ${settings.leaveChannel} in guild ${member.guild.id}:`, error); } } else { return; } } } catch (error) { console.error(`Error in guildMemberRemove event for guild ${member.guild.id}:`, error); } }, };