Files
LazyBot/app/events/guildMemberRemove.js
T
Arthur Puechberty 3f1f3ba40d add logs
2026-01-18 15:08:55 +01:00

91 lines
3.1 KiB
JavaScript

const { Events, EmbedBuilder, AuditLogEvent } = require("discord.js");
const db = require("../db");
const { sendLog } = require("../fonctions/sendLog");
module.exports = {
name: Events.GuildMemberRemove,
async execute(client, member) {
// ===== VÉRIFIER SI C'EST UN KICK =====
let wasKicked = false;
let kickExecutor = null;
let kickReason = null;
try {
const auditLogs = await member.guild.fetchAuditLogs({
type: AuditLogEvent.MemberKick,
limit: 1
});
const kickLog = auditLogs.entries.first();
if (kickLog && kickLog.target.id === member.id && (Date.now() - kickLog.createdTimestamp) < 5000) {
wasKicked = true;
kickExecutor = kickLog.executor;
kickReason = kickLog.reason || 'Aucune raison spécifiée';
}
} catch (err) {
// Pas de permission audit logs
}
if (wasKicked) {
// ===== LOG KICK =====
await sendLog(client, member.guild.id, 'moderation', {
action: 'kick',
title: '👢 Membre expulsé',
description: `**${member.user.tag}** a été expulsé du serveur.`,
fields: [
{ name: '👤 Membre', value: `${member.user} (${member.user.tag})`, inline: true },
{ name: '📝 Raison', value: kickReason, inline: false }
],
thumbnail: member.user.displayAvatarURL({ size: 128 }),
user: member.user,
executor: kickExecutor
});
} else {
// ===== LOG MEMBRE PARTI =====
const joinedAt = member.joinedTimestamp ?
`<t:${Math.floor(member.joinedTimestamp / 1000)}:R>` : 'Inconnu';
await sendLog(client, member.guild.id, 'members', {
action: 'leave',
title: '📤 Membre parti',
description: `**${member.user.tag}** a quitté le serveur.`,
fields: [
{ name: '👤 Membre', value: `${member.user} (${member.user.tag})`, inline: true },
{ name: '📊 Membres', value: `${member.guild.memberCount}`, inline: true },
{ name: '📅 Avait rejoint', value: joinedAt, inline: true }
],
thumbnail: member.user.displayAvatarURL({ size: 128 }),
user: member.user
});
}
// ===== MESSAGE D'AU REVOIR =====
db.get(
"SELECT enabled, channel_id, message FROM goodbye_config WHERE guild_id = ?",
[member.guild.id],
(err, row) => {
if (err || !row || !row.enabled) return;
let msg = row.message || "Au revoir {user}, tu vas nous manquer !";
msg = msg
.replace("{user}", member.user.username)
.replace("{server}", member.guild.name);
const channel = member.guild.channels.cache.get(row.channel_id);
if (channel) {
const embed = new EmbedBuilder()
.setColor(0xED4245)
.setTitle("👋 Au revoir...")
.setDescription(msg)
.setThumbnail(member.user.displayAvatarURL({ dynamic: true, size: 256 }))
.setFooter({ text: member.guild.name, iconURL: member.guild.iconURL({ dynamic: true }) })
.setTimestamp();
channel.send({ embeds: [embed] });
}
}
);
},
};