mirror of
https://github.com/arthur-pbty/gestion.git
synced 2026-06-03 23:36:35 +02:00
9bd39c69ca
sinon il y a pleins de truc comme les anti raid , des coorectif ect
73 lines
2.9 KiB
JavaScript
73 lines
2.9 KiB
JavaScript
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) {
|
|
}
|
|
}
|
|
},
|
|
}; |