Files
bot-discord-coins/commands/gestion/kick.js
T

88 lines
4.2 KiB
JavaScript

const { ButtonStyle, ButtonBuilder, ActionRowBuilder, PermissionFlagsBits, EmbedBuilder } = require('discord.js');
const embedColor = require('../../fonctions/embedColor.js');
module.exports = {
aliases: ['kick'],
description: 'permet d\'expulser un membre',
emote: '⏱️',
utilisation: '<@membre> <raison>',
permission: 0,
async execute(message, args, client) {
const authorPerms = message.channel.permissionsFor(message.author)
if ((!authorPerms || !authorPerms.has(PermissionFlagsBits.kickMembers)) && !client.config.owners.includes(message.author.id)) {
return message.reply({
embeds: [
new EmbedBuilder()
.setTitle('Erreur')
.setDescription('❌ Vous n\'avez pas les permissions pour expulser.')
.setColor(await embedColor(message.author.id, message.guild.id))
.setTimestamp()
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
], allowedMentions: { repliedUser: false }
});
}
let member = message.mentions.members.first() //|| message.guild.members.get(args[0]);
if (!member) {
return message.reply({
embeds: [
new EmbedBuilder()
.setTitle('Erreur')
.setDescription('❌ Veuillez spécifier un membre du serveur.')
.setColor(await embedColor(message.author.id, message.guild.id))
.setTimestamp()
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
], allowedMentions: { repliedUser: false }
});
}
const motif = args[1]
if (motif.length < 2) {
return message.reply({
embeds: [
new EmbedBuilder()
.setTitle('Erreur')
.setDescription('❌ Veuillez indiquer un motif.')
.setColor(await embedColor(message.author.id, message.guild.id))
.setTimestamp()
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
], allowedMentions: { repliedUser: false }
});
}
let reponse
member.kick({ reason: motif })
.then(async () => {
const btn = new ButtonBuilder()
.setCustomId('mp')
.setLabel('Prevenir le membre en MP')
.setStyle(ButtonStyle.Primary);
const row = new ActionRowBuilder()
.addComponents(btn);
const embed = new EmbedBuilder()
.setTitle('Membre expulser !')
.setDescription('Vous avez expulser: <@' + member + '>\nMotif: `' + motif + '`')
.setColor(await embedColor(message.author.id, message.guild.id))
.setTimestamp()
.setFooter({ text: `Demandé par ${message.author.tag}`, iconURL: message.author.displayAvatarURL() })
reponse = message.reply({ embeds: [embed], components: [row], allowedMentions: { repliedUser: false } });
})
const filter = i => i.customId === 'mp' && i.user.id === message.author.id;
const collector = reponse.createMessageComponentCollector({ filter, time: 30000 })
collector.on('collect', async (interaction) => {
const embedkick = new EmbedBuilder()
.setTitle('Expulsion !')
.setDescription('Vous avez été expulser du serveur ' + interaction.guild.name + ', avec comme motif: `' + motif + '`')
.setColor("Red")
.setTimestamp()
member.send({ embeds: [embedkick] })
interaction.reply({ content: '> **Le membre a été prevenu.**', ephemeral: true, allowedMentions: { repliedUser: false } });
});
collector.on('end', () => {
reponse.edit({ components: [], allowedMentions: { repliedUser: false } });
});
}
};