const { getPermissionLevel } = require('../../fonction/getPermissionLevel'); const { PermissionsBitField } = require('discord.js'); module.exports = { name: 'addrole', description: 'Ajoute un rôle à un utilisateur.', usage: '+addrole @user/id ', category: 'moderation', async execute(message, args, client) { const botMember = await message.guild.members.fetch(client.user.id); const userMember = await message.guild.members.fetch(message.author.id); if (!botMember.permissions.has(PermissionsBitField.Flags.ManageRoles)) { return message.reply("Je n'est pas la permission de pouvoir donnée des role"); } const user = message.mentions.members.first() || message.guild.members.cache.get(args[0]); if (!user) { return message.reply('Utilisateur non trouvé.'); } let role; if (message.mentions.roles.first()) { role = message.mentions.roles.first(); } else if (args[1].match(/^<@&(\d+)>$/)) { const roleId = args[1].match(/^<@&(\d+)>$/)[1]; role = message.guild.roles.cache.get(roleId); } else { role = message.guild.roles.cache.find(r => r.name.toLowerCase() === args[1].toLowerCase()); } if (!role) { return message.reply('Rôle non trouvé.'); } if (role.position >= (botMember.roles.highest ? botMember.roles.highest.position : 0)) { return message.reply('Je ne peux pas gérer ce rôle car il est plus haut ou égal à mon rôle le plus élevé.'); } const permlevel = await getPermissionLevel(user, client); if (role.permissions.has(PermissionsBitField.Flags.Administrator)&& permlevel < 10) { return message.reply('Le rôle que vous demandez est dangereux.'); } const roleposition = role.position; const userroleposition = userMember.roles.highest.position; if (roleposition >= userroleposition && permlevel < 10) return message.reply('Vous ne pouvez pas supprimer un rôle plus élevé ou égal au vôtre.'); try { await user.roles.add(role, `addrole : ${message.author.username}`); message.reply(`Le rôle ${role} a été ajouté à ${user.user.tag}.`); } catch (error) { return message.reply('Une erreur est survenue lors de l\'ajout du rôle.'); } }, };