2024-08-17 11:46:19 -04:00
|
|
|
const { getQueue, getCurrentTrack } = require('../utils/queueManager');
|
2024-08-17 12:10:35 -04:00
|
|
|
const { EmbedBuilder } = require('discord.js');
|
2024-08-17 11:11:10 -04:00
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
name: 'queue',
|
2024-08-17 15:24:09 -04:00
|
|
|
description: 'Show the current songs in queue',
|
2024-08-17 20:13:09 -04:00
|
|
|
aliases: ['q'],
|
2024-08-17 11:11:10 -04:00
|
|
|
execute(message) {
|
|
|
|
const queue = getQueue(message.guild.id);
|
2024-08-17 11:46:19 -04:00
|
|
|
const currentTrack = getCurrentTrack(message.guild.id);
|
|
|
|
|
2024-09-08 12:46:39 -04:00
|
|
|
const pageSize = 10;
|
|
|
|
const maxLength = 1024;
|
2024-08-17 19:06:58 -04:00
|
|
|
|
2024-08-17 12:10:35 -04:00
|
|
|
const embed = new EmbedBuilder()
|
|
|
|
.setColor('#0099ff')
|
|
|
|
.setTitle('Current Queue');
|
|
|
|
|
|
|
|
if (currentTrack) {
|
2024-08-17 17:56:35 -04:00
|
|
|
const currentTrackDisplay = currentTrack.url
|
|
|
|
? `[${currentTrack.title}](${currentTrack.url})`
|
|
|
|
: currentTrack.title;
|
2024-08-17 18:16:33 -04:00
|
|
|
embed.addFields({
|
|
|
|
name: 'Currently playing',
|
2024-08-17 19:55:13 -04:00
|
|
|
value: `**${currentTrackDisplay}**\nRequested by: ${currentTrack.requester}`,
|
2024-08-17 18:16:33 -04:00
|
|
|
inline: false
|
|
|
|
});
|
2024-08-17 11:11:10 -04:00
|
|
|
}
|
2024-08-17 11:46:19 -04:00
|
|
|
|
2024-08-17 12:10:35 -04:00
|
|
|
if (queue.length > 0) {
|
2024-09-08 12:46:39 -04:00
|
|
|
let queueDisplay = '';
|
|
|
|
let songCount = 0;
|
|
|
|
|
|
|
|
for (let i = 0; i < Math.min(queue.length, pageSize); i++) {
|
|
|
|
const track = queue[i];
|
2024-08-17 17:56:35 -04:00
|
|
|
const trackDisplay = track.url
|
2024-09-08 12:46:39 -04:00
|
|
|
? `**${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++;
|
|
|
|
}
|
2024-08-17 17:56:35 -04:00
|
|
|
|
2024-08-17 12:10:35 -04:00
|
|
|
embed.addFields({
|
|
|
|
name: 'Up next',
|
2024-09-08 12:46:39 -04:00
|
|
|
value: queueDisplay.trim(),
|
2024-08-17 12:10:35 -04:00
|
|
|
inline: false
|
|
|
|
});
|
2024-08-17 19:06:58 -04:00
|
|
|
|
2024-09-08 12:46:39 -04:00
|
|
|
if (queue.length > songCount) {
|
|
|
|
embed.setFooter({ text: `And ${queue.length - songCount} more...` });
|
2024-08-17 19:06:58 -04:00
|
|
|
}
|
2024-08-17 12:10:35 -04:00
|
|
|
} else if (!currentTrack) {
|
|
|
|
embed.setDescription('The queue is empty!');
|
|
|
|
}
|
2024-08-17 11:46:19 -04:00
|
|
|
|
2024-08-17 12:10:35 -04:00
|
|
|
message.channel.send({ embeds: [embed] });
|
2024-08-17 11:11:10 -04:00
|
|
|
}
|
2024-08-17 18:34:28 -04:00
|
|
|
};
|