DZ-Musicbot/commands/queue.js

63 lines
2.0 KiB
JavaScript

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] });
}
};