Skip to main content

Chapitre 7

Nous rejoindre sur Discord

Manager de rôles (Facile)

Exemple de solution :

require('log-timestamp');
const wait = require('node:timers/promises').setTimeout;

const { SlashCommandBuilder } = require('discord.js'); // Constructeur de notre commande

module.exports = {
    data: new SlashCommandBuilder()
        .setName('role')
        .setDescription("Gérer les rôles d'un utilisateur")
        .setDMPermission(false)
        .addSubcommand((subcommand) =>
            subcommand
                .setName('add')
                .setDescription('Ajouter un rôle')
                .addUserOption((option) =>
                    option.setName('user').setDescription("Sélectionner l'utilisateur").setRequired(true)
                )
                .addRoleOption((option) =>
                    option.setName('role').setDescription('Sélectionner le role').setRequired(true)
                )
        )
        .addSubcommand((subcommand) =>
            subcommand
                .setName('remove')
                .setDescription('Supprimer un role')
                .addUserOption((option) =>
                    option.setName('user').setDescription("Sélectionner l'utilisateur").setRequired(true)
                )
                .addRoleOption((option) =>
                    option.setName('role').setDescription('Sélectionner le role').setRequired(true)
                )
        ),
    async execute(interaction) {
        const subcommand = interaction.options.getSubcommand();
        const role = interaction.options.getRole('role');
        const user = interaction.options.getMember('user');

        switch (subcommand) {
            case 'add': // On est dans le protocole d'ajout
                await user.roles.add(role);
                return await interaction.reply({
                    content: `Le rôle ${role} a été ajouté à ${user}`,
                });
            case 'remove': // On est dans le protocole de suppression
                await user.roles.remove(role);
                return await interaction.reply({
                    content: `Le rôle ${role} a été retiré pour l'utilisateur ${user}`,
                });
        }
    },
};