const { getQueue, getCurrentTrack } = require('../utils/queueManager'); const { EmbedBuilder } = require('discord.js'); module.exports = { name: 'queue', description: 'Show the current songs in queue', aliases: ['q'], execute(message) { const queue = getQueue(message.guild.id); const currentTrack = getCurrentTrack(message.guild.id); const pageSize = 10; const maxLength = 1024; const embed = new EmbedBuilder() .setColor('#0099ff') .setTitle('Current Queue'); if (currentTrack) { const currentTrackDisplay = currentTrack.url ? `[${currentTrack.title}](${currentTrack.url})` : currentTrack.title; embed.addFields({ name: 'Currently playing', value: `**${currentTrackDisplay}**\nRequested by: ${currentTrack.requester}`, inline: false }); } if (queue.length > 0) { let queueDisplay = ''; let songCount = 0; for (let i = 0; i < Math.min(queue.length, pageSize); i++) { const track = queue[i]; const trackDisplay = track.url ? `**${i + 1}.** [**${track.title}**](${track.url})\nRequested by: ${track.requester}` : `**${i + 1}.** **${track.title}**\nRequested by: ${track.requester}`; if ((queueDisplay + trackDisplay).length > maxLength) { break; } queueDisplay += trackDisplay + '\n\n'; songCount++; } embed.addFields({ name: 'Up next', value: queueDisplay.trim(), inline: false }); if (queue.length > songCount) { embed.setFooter({ text: `And ${queue.length - songCount} more...` }); } } else if (!currentTrack) { embed.setDescription('The queue is empty!'); } message.channel.send({ embeds: [embed] }); } };