Untitled

 avatar
unknown
plain_text
4 months ago
2.6 kB
3
Indexable
const { SlashCommandBuilder, PermissionsBitField } = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('ally-remove')
        .setDescription('This command kicks an entire role')
        .addRoleOption(option =>
            option
                .setName('role-name')
                .setDescription('The name of the role for users you wish to kick.')
                .setRequired(true)
        ),
 
    run: async ({ interaction, client, handler }) => {
        const { commandName, options } = interaction;

        if (commandName === 'ally-remove') {
            // Get the role passed in the command
            const role = options.getRole('role-name');
 
            // Check if the bot has the necessary permissions
            if (!interaction.guild.members.me.permissions.has(PermissionsBitField.Flags.KickMembers)) {
                return interaction.reply({ content: 'I do not have permission to kick members!', ephemeral: true });
            }
 
            await interaction.deferReply(); // Defer the reply to handle processing time

            // Get all members with the given role
            const membersWithRole = interaction.guild.members.cache.filter(member => member.roles.cache.has(role.id));

            if (membersWithRole.size === 0) {
                return interaction.editReply({ content: `No members found with the role ${role.name}.` });
            }

            // Array to track kicked members
            let kickedMembers = [];
            let kickedCount = 0;
            
            // Iterate over members with the specified role and kick them
            for (const member of membersWithRole.values()) {
                try {
                    await member.kick(`Kicked via /ally-remove command`);
                    kickedCount++;
                    // Track the kicked members
                    kickedMembers.push(`${member.user.tag} (ID: ${member.user.id})`);
                } catch (err) {
                    console.error(`Failed to kick ${member.user.tag}: ${err.message}`);
                }
            }

            // Debugging: Log the list of kicked members to the console
            console.log('Kicked Members:', kickedMembers);

            // Reply to the interaction with the list of kicked members
            return interaction.editReply({
                content: `Successfully kicked ${kickedCount} members with the role ${role.name}.\n` + 
                         `Kicked members: \n${kickedMembers.join('\n')}`
            });
        }
    },
};
Editor is loading...
Leave a Comment