const { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } = require('discord.js'); module.exports = { name: 'banlist', description: 'Liste tous les utilisateurs bannis avec leur raison de bannissement', emote: 'đŸš«', utilisation: 'banlist', category: 'moderation', async execute(message) { try { const bans = await message.guild.bans.fetch(); const embeds = []; const maxPerPage = 10; let currentPage = 0; for (let i = 0; i < bans.size; i += maxPerPage) { const embed = new EmbedBuilder() .setTitle('Liste des utilisateurs bannis') .setColor('#ff0000'); bans.each((ban, index) => { if (index >= i && index < i + maxPerPage) { const reason = ban.reason || 'Raison non disponible'; embed.addFields({ name: ban.user.tag, value: `Raison: ${reason}` }); } }); embeds.push(embed); } const row = new ActionRowBuilder() .addComponents( new ButtonBuilder() .setCustomId('previous') .setLabel('PrĂ©cĂ©dent') .setStyle(ButtonStyle.Primary), new ButtonBuilder() .setCustomId('next') .setLabel('Suivant') .setStyle(ButtonStyle.Primary) ); await message.channel.send({ embeds: [embeds[currentPage]], components: [row] }); const filter = i => i.customId === 'previous' || i.customId === 'next' && i.user.id === message.author.id; const collector = message.channel.createMessageComponentCollector({ filter, time: 60000 }); collector.on('collect', async i => { if (i.customId === 'previous') { currentPage = Math.max(currentPage - 1, 0); } else if (i.customId === 'next') { currentPage = Math.min(currentPage + 1, embeds.length - 1); } await i.update({ embeds: [embeds[currentPage]], components: [row] }); }); collector.on('end', collected => { message.channel.send('Navigation terminĂ©e.'); }); } catch (error) { console.error('Erreur lors de la rĂ©cupĂ©ration des utilisateurs bannis:', error); message.reply('Une erreur est survenue lors de la rĂ©cupĂ©ration des utilisateurs bannis.'); } }, };