Files
gestion/events/gestion/roleUpdate.js
T

61 lines
2.3 KiB
JavaScript

const { Events, EmbedBuilder } = 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;
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));
// Si des rôles ont été ajoutés
if (addedRoles.size > 0) {
const embed = new EmbedBuilder()
.setColor('#00FF00')
.setAuthor({ name: newMember.user.username, iconURL: newMember.user.displayAvatarURL({ dynamic: true })})
.setDescription(`${newMember.user.username} a gagné les rôles suivants : ${addedRoles.map(role => `<@&${role.id}>`).join(', ')}`)
.setTimestamp();
try {
await logChannel.send({ embeds: [embed] });
} catch (error) {
}
}
if (removedRoles.size > 0) {
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();
try {
await logChannel.send({ embeds: [embed] });
} catch (error) {
}
}
},
};