mrmBot-Matrix/commands/music/nowplaying.js

52 lines
1.8 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import format from "format-duration";
import MusicCommand from "../../classes/musicCommand.js";
class NowPlayingCommand extends MusicCommand {
async run() {
this.success = false;
if (!this.guild) return "This command only works in servers!";
if (!this.member.voiceState) return "You need to be in a voice channel first!";
if (!this.guild.voiceStates.has(this.client.user.id)) return "I'm not in a voice channel!";
if (!this.connection) return "I haven't completely connected yet!";
const player = this.connection.player;
if (!player) return "I'm not playing anything!";
const track = await player.node.rest.decode(player.track);
const parts = Math.floor((player.position / track.length) * 10);
this.success = true;
return {
embeds: [{
color: 16711680,
author: {
name: "Now Playing",
iconURL: this.client.user.avatarURL()
},
fields: [{
name: " Title",
value: track.title ? track.title : "Unknown"
},
{
name: "🎤 Artist",
value: track.author ? track.author : "Unknown"
},
{
name: "💬 Channel",
value: (this.guild.channels.get(this.member.voiceState.channelID) ?? await this.client.rest.channels.get(this.member.voiceState.channelID)).name
},
{
name: "🌐 Node",
value: player.node ? player.node.name : "Unknown"
},
{
name: `${"▬".repeat(parts)}🔘${"▬".repeat(10 - parts)}`,
value: `${format(player.position)}/${track.isStream ? "∞" : format(track.length)}`
}]
}]
};
}
static description = "Shows the currently playing song";
static aliases = ["playing", "np", "current"];
}
export default NowPlayingCommand;