mirror of
https://github.com/arthur-pbty/gestion.git
synced 2026-06-12 00:04:35 +02:00
124 lines
5.1 KiB
JavaScript
124 lines
5.1 KiB
JavaScript
const { EmbedBuilder, ActionRowBuilder, StringSelectMenuBuilder } = require('discord.js');
|
|
|
|
module.exports = {
|
|
name: 'unmassiverole',
|
|
aliases: ['unmassrole'],
|
|
description: 'Retire un rôle à tous les membres du serveur',
|
|
emote: '👥',
|
|
utilisation: 'unmassiverole <@role>',
|
|
category: 'gestion',
|
|
|
|
async execute(message, args, client) {
|
|
// Vérifie si un rôle a été mentionné
|
|
const role = message.mentions.roles.first();
|
|
if (!role) {
|
|
return message.reply('Veuillez mentionner un rôle.');
|
|
}
|
|
let startname = '👥 Humain';
|
|
let memberType = 'human';
|
|
let fields = [
|
|
{ name: 'Rôle', value: role.toString(), inline: true },
|
|
{ name: 'Type de membres', value: startname, inline: true },
|
|
];
|
|
const embed = new EmbedBuilder()
|
|
.setTitle('Retrait de rôle')
|
|
.addFields(fields);
|
|
|
|
// Crée un menu déroulant avec les options
|
|
const selectMenu = new StringSelectMenuBuilder()
|
|
.setCustomId('unmassiverole_select')
|
|
.setPlaceholder('Sélectionnez le type de membres')
|
|
.addOptions([
|
|
{ label: '👥 Humain', value: 'human' },
|
|
{ label: '👥🤖 Humain et Bot', value: 'human_and_bot' },
|
|
{ label: '🤖 Bot', value: 'bot' },
|
|
{ label: '🚀 Lancer', value: 'launch' },
|
|
]);
|
|
const row = new ActionRowBuilder()
|
|
.addComponents(selectMenu);
|
|
|
|
const sentMessage = await message.channel.send({ embeds: [embed], components: [row] });
|
|
|
|
|
|
const filter = i => i.customId === 'unmassiverole_select' && i.user.id === message.author.id;
|
|
const collector = sentMessage.createMessageComponentCollector({ filter, time: 15000 });
|
|
collector.on('collect', async (interaction) => {
|
|
if (interaction.values[0] !== 'launch') {
|
|
memberType = interaction.values[0];
|
|
let name2;
|
|
if (interaction.values[0] === 'human') {
|
|
name2 = '👥 Humain';
|
|
}
|
|
if (interaction.values[0] === 'human_and_bot') {
|
|
name2 = '👥🤖 Humain et Bot';
|
|
}
|
|
if (interaction.values[0] === 'bot') {
|
|
name2 = '🤖 Bot';
|
|
}
|
|
const memberTypeFieldIndex = fields.findIndex(field => field.name === 'Type de membres');
|
|
if (memberTypeFieldIndex !== -1) {
|
|
fields[memberTypeFieldIndex].value = name2;
|
|
}
|
|
|
|
const updatedEmbed = new EmbedBuilder()
|
|
.setTitle('Retrait de rôle')
|
|
.addFields(fields);
|
|
|
|
await interaction.update({ embeds: [updatedEmbed] });
|
|
}
|
|
|
|
if (interaction.values[0] === 'launch') {
|
|
await removeRole(interaction, role, memberType, message);
|
|
}
|
|
});
|
|
},
|
|
};
|
|
|
|
async function removeRole(interaction, role, memberType, message) {
|
|
let count = 0;
|
|
|
|
const members = await interaction.guild.members.fetch();
|
|
|
|
if (memberType === 'human') {
|
|
await interaction.reply(`Le rôle ${role} est en train d'être retiré des humains.`);
|
|
for (const member of members.values()) {
|
|
if (member && member.id && !member.user?.bot) {
|
|
try {
|
|
await member.roles.remove(role, `Unmassiverole : ${message.author.username}`);
|
|
count++;
|
|
} catch (error) {
|
|
console.error(`Échec du retrait du rôle au membre ID: ${member.id}, Erreur: ${error.message}`);
|
|
}
|
|
}
|
|
}
|
|
await interaction.editReply(`Le rôle ${role} a été retiré de ${count} membres humains du serveur.`);
|
|
} else if (memberType === 'human_and_bot') {
|
|
await interaction.reply(`Le rôle ${role} est en train d'être retiré des humains et des bots.`);
|
|
for (const member of members.values()) {
|
|
if (member && member.id) {
|
|
try {
|
|
await member.roles.remove(role, `Unmassiverole : ${message.author.username}`);
|
|
count++;
|
|
} catch (error) {
|
|
console.error(`Échec du retrait du rôle au membre ID: ${member.id}, Erreur: ${error.message}`);
|
|
}
|
|
}
|
|
}
|
|
await interaction.editReply(`Le rôle ${role} a été retiré de ${count} membres du serveur.`);
|
|
} else if (memberType === 'bot') {
|
|
for (const member of members.values()) {
|
|
if (member && member.id && member.user?.bot) {
|
|
try {
|
|
await member.roles.remove(role, `Unmassiverole : ${message.author.username}`);
|
|
count++;
|
|
} catch (error) {
|
|
console.error(`Échec du retrait du rôle au membre ID: ${member.id}`)
|
|
}
|
|
try {
|
|
await interaction.editReply(`Le rôle ${role} a été retiré de ${count} bots du serveur.`);
|
|
} catch (error) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}; |