const { Events, EmbedBuilder , AuditLogEvent} = require("discord.js"); const sqlite3 = require('sqlite3').verbose(); const db = new sqlite3.Database('myDatabase.db'); module.exports = { name: Events.GuildMemberUpdate, once: false, async execute(oldMember, newMember, client) { if (oldMember.user.bot || newMember.user.bot) return; const fetchedLogs = await newMember.guild.fetchAuditLogs({ limit: 1, type: AuditLogEvent.MemberRoleUpdate, }); const auditEntry = fetchedLogs.entries.first(); let data = await new Promise((resolve, reject) => { db.get('SELECT value FROM gestion WHERE id = ?', [client.user.id], (err, row) => { if (err) { console.error(err.message); reject(err); } resolve(row ? JSON.parse(row.value) : {}); }); }); if (!data[newMember.guild.id] || !data[newMember.guild.id].rolelog) return; const logChannelId = data[newMember.guild.id].rolelog; const logChannel = client.channels.cache.get(logChannelId); if (!logChannel) return; const oldRoles = oldMember.roles.cache; const newRoles = newMember.roles.cache; const addedRoles = newRoles.filter(role => !oldRoles.has(role.id)); const removedRoles = oldRoles.filter(role => !newRoles.has(role.id)); if (addedRoles.size > 0) { const reason = auditEntry.reason const embed = new EmbedBuilder() .setColor('#00FF00') .setAuthor({ name: newMember.user.username, iconURL: newMember.user.displayAvatarURL({ dynamic: true })}) .setDescription(`${newMember.user.username} a gagnéeee les rôles suivants : ${addedRoles.map(role => `<@&${role.id}>`).join(', ')}`) .setTimestamp(); if (reason && auditEntry.target.id === newMember.id) { embed.addFields({ name:' ',value: `**Raison : **\`${reason}\``}); } try { await logChannel.send({ embeds: [embed] }); } catch (error) { } } if (removedRoles.size > 0) { const reason = auditEntry.reason const embed = new EmbedBuilder() .setColor('#FF0000') .setAuthor({ name: newMember.user.username, iconURL: newMember.user.displayAvatarURL({ dynamic: true })}) .setDescription(`${newMember.user.tag} a perdu les rôles suivants : ${removedRoles.map(role => `<@&${role.id}>`).join(', ')}`) .setTimestamp(); if (reason && auditEntry.target.id === newMember.id) { embed.addFields({ name:' ',value: `**Raison : **\`${reason}\``}); } try { await logChannel.send({ embeds: [embed] }); } catch (error) { } } }, };