const { MessageEmbed } = require('discord.js') const { MESSAGES } = require("../../util/constants"); module.exports.run = async (client, message, args, settings) => { const permissions = message.channel.permissionsFor(message.client.user); if (!permissions.has(["MANAGE_MESSAGES", "ADD_REACTIONS"])) return message.reply("Il me manque l'autorisation de gérer les messages ou d'ajouter des réactions"); const queue = message.client.queue.get(message.guild.id); if (!queue) return message.channel.send("❌ **Rien ne joue sur ce serveur**"); let currentPage = 0; const embeds = generateQueueEmbed(message, queue.songs); const queueEmbed = await message.channel.send( `**${("Page actuelle - ")} ${currentPage + 1}/${embeds.length}**`, embeds[currentPage] ); try { await queueEmbed.react("⬅️"); await queueEmbed.react("⏹"); await queueEmbed.react("➡️"); } catch (error) { console.error(error); message.channel.send(error.message).catch(console.error); } const filter = (reaction, user) => ["⬅️", "⏹", "➡️"].includes(reaction.emoji.name) && message.author.id === user.id; const collector = queueEmbed.createReactionCollector(filter, { time: 60000 }); collector.on("collect", async (reaction, user) => { try { if (reaction.emoji.name === "➡️") { if (currentPage < embeds.length - 1) { currentPage++; queueEmbed.edit( ("Page actuelle - ", { page: currentPage + 1, length: embeds.length }), embeds[currentPage] ); } } else if (reaction.emoji.name === "⬅️") { if (currentPage !== 0) { --currentPage; queueEmbed.edit( ("Page actuelle - ", { page: currentPage + 1, length: embeds.length }), embeds[currentPage] ); } } else { collector.stop(); reaction.message.reactions.removeAll(); } await reaction.users.remove(message.author.id); } catch (error) { console.error(error); return message.channel.send(error.message).catch(console.error); } }); } function generateQueueEmbed(message, queue) { let embeds = []; let k = 10; for (let i = 0; i < queue.length; i += 10) { const current = queue.slice(i, k); let j = i; k += 10; const info = current.map((track) => `${++j} - [${track.title}](${track.url})`).join("\n"); const embed = new MessageEmbed() .setTitle("Song Queue\n") .setThumbnail(message.guild.iconURL()) .setColor("#F8AA2A") .setDescription( (`**Morceau en cours - [${queue[0].title}](${queue[0].url})**\n\n${info}`) ) .setTimestamp(); embeds.push(embed); } return embeds; } module.exports.help = MESSAGES.COMMANDS.MUSIQUE.QUEUE;