Add now playing command
This commit is contained in:
parent
1af2e87809
commit
7a182a39dd
|
@ -0,0 +1,54 @@
|
|||
const { getCurrentTrack, getPlayer } = require('../utils/queueManager');
|
||||
const { EmbedBuilder } = require('discord.js');
|
||||
const fs = require('fs');
|
||||
|
||||
module.exports = {
|
||||
name: 'np',
|
||||
description: 'Show the currently playing track and time left',
|
||||
execute(message) {
|
||||
const currentTrack = getCurrentTrack(message.guild.id);
|
||||
|
||||
if (!currentTrack) {
|
||||
return message.reply('There is no track currently playing.');
|
||||
}
|
||||
|
||||
const player = getPlayer(message.guild.id);
|
||||
if (!player) {
|
||||
return message.reply('There is no track currently playing.');
|
||||
}
|
||||
|
||||
const currentTime = player.state?.resource?.playbackDuration || 0;
|
||||
const totalDuration = getTrackDuration(currentTrack.filePath);
|
||||
|
||||
const timeLeft = msToTime(totalDuration - currentTime);
|
||||
|
||||
const embed = new EmbedBuilder()
|
||||
.setColor('#0099ff')
|
||||
.setTitle('Now Playing')
|
||||
.setDescription(`**${currentTrack.title}**`)
|
||||
.addFields(
|
||||
{ name: 'Time Left', value: timeLeft },
|
||||
)
|
||||
.setFooter({ text: `Requested by ${message.author.username}`, iconURL: message.author.displayAvatarURL() })
|
||||
.setTimestamp();
|
||||
|
||||
message.channel.send({ embeds: [embed] });
|
||||
},
|
||||
};
|
||||
|
||||
function msToTime(duration) {
|
||||
let seconds = Math.floor((duration / 1000) % 60),
|
||||
minutes = Math.floor((duration / (1000 * 60)) % 60),
|
||||
hours = Math.floor((duration / (1000 * 60 * 60)) % 24);
|
||||
|
||||
hours = (hours < 10) ? "0" + hours : hours;
|
||||
minutes = (minutes < 10) ? "0" + minutes : minutes;
|
||||
seconds = (seconds < 10) ? "0" + seconds : seconds;
|
||||
|
||||
return hours + ":" + minutes + ":" + seconds;
|
||||
}
|
||||
|
||||
function getTrackDuration(filePath) {
|
||||
const stats = fs.statSync(filePath);
|
||||
return stats.size / 32000 * 1000;
|
||||
}
|
|
@ -38,6 +38,10 @@ function getQueue(guildId) {
|
|||
return queueMap.get(guildId) || [];
|
||||
}
|
||||
|
||||
function getPlayer(guildId) {
|
||||
return playerMap.get(guildId);
|
||||
}
|
||||
|
||||
function getCurrentTrack(guildId) {
|
||||
return currentTrackMap.get(guildId) || null;
|
||||
}
|
||||
|
@ -155,4 +159,4 @@ function clearQueue(guildId) {
|
|||
queueMap.set(guildId, []);
|
||||
}
|
||||
|
||||
module.exports = { addToQueue, getQueue, getCurrentTrack, playNextInQueue, skipTrack, toggleRepeat, clearQueue, removeFromQueue };
|
||||
module.exports = { addToQueue, getQueue, getCurrentTrack, playNextInQueue, skipTrack, toggleRepeat, clearQueue, removeFromQueue, getPlayer };
|
Loading…
Reference in New Issue