const { Events } = require('discord.js'); const { readDb } = require('../../backend/db.js'); module.exports = { name: Events.GuildMemberRemove, async execute(member) { try { const api = require('../api'); const settings = (await api.getServerSettings(member.guild.id)) || {}; const leave = { enabled: settings.leaveEnabled || false, channel: settings.leaveChannel || '', message: settings.leaveMessage || '{user} has left the server.' }; if (leave && leave.enabled && leave.channel) { const channel = member.guild.channels.cache.get(leave.channel); if (channel) { try { const message = (leave.message).replace('{user}', member.user.toString()); await channel.send(message); } catch (error) { console.error(`Could not send leave message to channel ${leave.channel} in guild ${member.guild.id}:`, error); } } } } catch (error) { console.error(`Error in guildMemberRemove event for guild ${member.guild.id}:`, error); // fallback to local db try { const db = readDb(); const settings = db[member.guild.id]; if (settings && settings.leaveEnabled && settings.leaveChannel) { const channel = member.guild.channels.cache.get(settings.leaveChannel); if (channel) { try { const message = (settings.leaveMessage || '{user} has left the server.').replace('{user}', member.user.toString()); await channel.send(message); } catch (innerErr) { /* ignore */ } } } } catch (inner) { /* ignore */ } } }, };