88 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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; |