const { getPermissionLevel2 } = require('../../fonction/getPermissionLevel'); module.exports = { name: 'kick', description: 'Expluser un membre', emote: '🚫', utilisation: 'kick <@member> [reason]', category: 'moderation', async execute(message, args, client) { const userId = message.mentions.users.first()?.id || args[0]; const guildId = message.guild.id; const user = await message.guild.members.fetch(userId).catch(error => { return null; }); const author = await message.guild.members.fetch(message.author.id).catch(error => { return null; }); if (!user) { return message.reply('Veuillez mentionner un utilisateur valide ou fournir un ID valide.'); } if (user.id === message.author.id) { return message.reply('Vous ne pouvez pas vous kick vous même'); } if (user.id === client.user.id) { return message.reply('Vous ne pouvez pas me kick'); } const permissionMember = await getPermissionLevel2(user, client, guildId); if (permissionMember === 11) { return message.reply('Vous ne pouvez pas kick un membre buyer'); } if (permissionMember === 10) { return message.reply('Vous ne pouvez pas kick un membre owner'); } const permissionAuthor = await getPermissionLevel2(message.author, client, guildId); if (permissionAuthor !== 11 && permissionAuthor !== 10) { if (permissionMember >= permissionAuthor) { return message.reply('Vous ne pouvez pas kick un membre avec une permission égale ou supérieure à la votre'); } } if(user.roles.highest.position >= author.roles.highest.position && permissionAuthor !== 11 && permissionAuthor !== 10) { return message.reply('Vous ne pouvez pas kick un membre avec un role égale ou supérieure à la votre'); } try { const reason = args.slice(1).join(' ') || `Aucune raison spécifiée : ${message.author.tag}`; await user.kick(reason); message.channel.send(`L'utilisateur ${user.user.username} a été kick.`); } catch { message.reply(`Une erreur s'est produite lors de la tentative de kick de ${user.user.username}.`); } }, };