diff --git a/src/modules/music.js b/src/modules/music.js index ece3d0e..ad17bab 100644 --- a/src/modules/music.js +++ b/src/modules/music.js @@ -247,7 +247,7 @@ async function enqueue( embeds: [ { title: `<:ms_tick:503341995348066313> Added to queue`, - color: 0x3fdcee, + color: 0x00cc00, fields: [ { name: "Title", @@ -290,7 +290,7 @@ async function enqueue( embeds: [ { title: `:musical_note: Now Playing`, - color: 0x18e3c8, + color: 0x0088cc, fields: [ { name: "Title", @@ -325,7 +325,6 @@ async function enqueue( thumbnail, length, start: Date.now(), - end: Date.now() + length, stream, }; } @@ -355,6 +354,8 @@ async function youtubeSearch(msg, str) { } } +const NOWPLAYING_BAR_LENGTH = 30; + const command = new Command("music"); command.addAlias("m"); command.category = "misc"; @@ -420,7 +421,7 @@ command.callback = async function (msg, line) { title: " Processing playlist...", description: `${playlist.length} tracks`, - color: 0xff8037, + color: 0xcc0088, }, ], }); @@ -449,7 +450,7 @@ command.callback = async function (msg, line) { { title: "<:ms_tick:503341995348066313> Done processing", description: `${playlist.length} tracks`, - color: 0xff8037, + color: 0xcc0088, }, ], }); @@ -518,7 +519,56 @@ command.callback = async function (msg, line) { } else { return "You are not in a voice channel."; } - case "np": + case "np": { + if (!voiceStorage.has(msg.guildID)) + return "The bot is not in a voice channel."; + + const connection = voiceStorage.get(msg.guildID); + const nowPlaying = connection._music_nowplaying; + if (!nowPlaying || !connection.playing) + return "Nothing is currently playing."; + + const position = Date.now() - nowPlaying.start; + + const timeEnd = formatTime(nowPlaying.length); + const timePos = formatTime(position); + + const progress = position / length; + const barLength = Math.round(progress * NOWPLAYING_BAR_LENGTH); + + const bar = `\`[${"=".repeat(barLength)}${" ".repeat( + NOWPLAYING_BAR_LENGTH - barLength + )}]\``; + const time = `\`${timePos}${" ".repeat( + NOWPLAYING_BAR_LENGTH + 2 - timePos.length - timeEnd.length + )}${timeEnd}\``; + + return { + embed: { + title: ":musical_note: Now Playing", + color: 0x0088cc, + fields: [ + { + name: "Title", + value: nowPlaying.title + ? `[${nowPlaying.title}](${nowPlaying.url})` + : nowPlaying.url, + inline: true, + }, + { + name: "Added by", + value: `<@${nowPlaying.addedBy}>`, + inline: true, + }, + { + name: bar, + value: time, + inline: false, + }, + ], + }, + }; + } case "queue": case "q": case "remove":