From 613a4bce87ce2accabc3111adc7ae2901caf18b1 Mon Sep 17 00:00:00 2001 From: Tutur33 Date: Sat, 17 Feb 2024 16:14:20 +0100 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20des=20fonctions=20de=20p?= =?UTF-8?q?ermission=20et=20de=20l'emote=20pour=20la=20commande=20kick=20&?= =?UTF-8?q?=20add=20ban=20command?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- commands/fonction.js | 24 +++++++++++--------- commands/moderation/ban.js | 45 +++++++++++++++++++++++++++++++++++++ commands/moderation/kick.js | 2 +- 3 files changed, 60 insertions(+), 11 deletions(-) create mode 100644 commands/moderation/ban.js diff --git a/commands/fonction.js b/commands/fonction.js index 3dda0dd..63504db 100644 --- a/commands/fonction.js +++ b/commands/fonction.js @@ -12,18 +12,22 @@ async function getPermissionLevel(member, client) { return 10; } let highestPermission = 0; - for (let i = 1; i <= 9; i++) { - const roleIds = await GestionDb.get(`${botId}.${member.guild.id}.p${i}`); - if (roleIds) { - // Si roleIds n'est pas un tableau, le convertir en tableau - if (!Array.isArray(roleIds)) { - roleIds = [roleIds]; - } - if (roleIds.some(id => member.roles.cache.has(id))) { - highestPermission = Math.max(highestPermission, i); + try { + for (let i = 1; i <= 9; i++) { + const roleIds = await GestionDb.get(`${botId}.${member.guild.id}.p${i}`); + if (roleIds) { + // Si roleIds n'est pas un tableau, le convertir en tableau + if (!Array.isArray(roleIds)) { + roleIds = [roleIds]; + } + if (roleIds.some(id => member.roles.cache.has(id))) { + highestPermission = Math.max(highestPermission, i); + } } } + return highestPermission; + } catch { + return highestPermission; } - return highestPermission; } module.exports = { getPermissionLevel }; \ No newline at end of file diff --git a/commands/moderation/ban.js b/commands/moderation/ban.js new file mode 100644 index 0000000..b828204 --- /dev/null +++ b/commands/moderation/ban.js @@ -0,0 +1,45 @@ +const { EmbedBuilder, User } = require("discord.js") +const { getPermissionLevel } = require('../fonction'); + +module.exports = { + name: 'ban', + description: 'Ban a member', + emote: '🚫', + utilisation: 'ban <@member> [reason]', + category: 'moderation', + + async execute(message, args, client) { + const userId = message.mentions.users.first()?.id + || args[0]; + + const user = await client.users.fetch(userId); + 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 ban vous même'); + } + if (user.id === client.user.id) { + return message.reply('Vous ne pouvez pas me ban'); + } + if (await getPermissionLevel(user, client) === 11) { + return message.reply('Vous ne pouvez pas ban un membre buyer'); + } + if (await getPermissionLevel(user, client) === 10) { + return message.reply('Vous ne pouvez pas ban un membre owner'); + } + if (await getPermissionLevel(message.author, client) !== 11 || await getPermissionLevel(message.author, client) !== 10) { + if (await getPermissionLevel(user, client) >= await getPermissionLevel(message.author, client)) { + return message.reply('Vous ne pouvez pas ban un membre avec une permission égale ou supérieure à la votre'); + } + } + + try { + await message.guild.members.ban(user, { reason: args.slice(1).join(' ')+` : ${message.author.tag}` || `Aucune raison spécifiée : ${message.author.tag}` }); + message.channel.send(`L'utilisateur ${user.username} a été banni.`); + } catch { + message.reply(`Une erreur s'est produite lors de la tentative de bannissement de ${user.username}.`); + } + }, +}; \ No newline at end of file diff --git a/commands/moderation/kick.js b/commands/moderation/kick.js index 79874d6..3d422b4 100644 --- a/commands/moderation/kick.js +++ b/commands/moderation/kick.js @@ -5,7 +5,7 @@ module.exports = { name: 'kick', aliases: ['expulse'], description: 'Kick a member', - emote: '🔍', + emote: '🚫', utilisation: 'kick <@member> [reason]', category: 'moderation',