diff options
| author | Max Isom <[email protected]> | 2020-03-20 20:47:04 -0500 |
|---|---|---|
| committer | Max Isom <[email protected]> | 2020-03-20 20:47:04 -0500 |
| commit | 9c91ce1a13cad701bc8876fd07ac4d513522a215 (patch) | |
| tree | 582d5c7a17f2f476c563fd5aa635db02bb0c9394 /src/commands/queue.ts | |
| parent | 646f030781df0f4fe03437d0ed2294a10fa6c177 (diff) | |
| download | muse-9c91ce1a13cad701bc8876fd07ac4d513522a215.tar.xz muse-9c91ce1a13cad701bc8876fd07ac4d513522a215.zip | |
Merge Player and Queue services
Diffstat (limited to 'src/commands/queue.ts')
| -rw-r--r-- | src/commands/queue.ts | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/commands/queue.ts b/src/commands/queue.ts index 1ec2016..67f88a4 100644 --- a/src/commands/queue.ts +++ b/src/commands/queue.ts @@ -1,13 +1,13 @@ import {Message, MessageEmbed} from 'discord.js'; import {TYPES} from '../types'; import {inject, injectable} from 'inversify'; -import QueueManager from '../managers/queue'; import PlayerManager from '../managers/player'; import {STATUS} from '../services/player'; import Command from '.'; import getProgressBar from '../utils/get-progress-bar'; import errorMsg from '../utils/error-msg'; import {prettyTime} from '../utils/time'; +import getYouTubeID from 'get-youtube-id'; const PAGE_SIZE = 10; @@ -19,22 +19,19 @@ export default class implements Command { ['queue', 'shows current queue'] ]; - private readonly queueManager: QueueManager; private readonly playerManager: PlayerManager; - constructor(@inject(TYPES.Managers.Queue) queueManager: QueueManager, @inject(TYPES.Managers.Player) playerManager: PlayerManager) { - this.queueManager = queueManager; + constructor(@inject(TYPES.Managers.Player) playerManager: PlayerManager) { this.playerManager = playerManager; } public async execute(msg: Message, args: string []): Promise<void> { - const queue = this.queueManager.get(msg.guild!.id); const player = this.playerManager.get(msg.guild!.id); - const currentlyPlaying = queue.getCurrent(); + const currentlyPlaying = player.getCurrent(); if (currentlyPlaying) { - const queueSize = queue.size(); + const queueSize = player.queueSize(); const queuePage = args[0] ? parseInt(args[0], 10) : 1; if (queuePage * PAGE_SIZE > queueSize && queuePage > Math.ceil((queueSize + 1) / PAGE_SIZE)) { @@ -45,23 +42,30 @@ export default class implements Command { const embed = new MessageEmbed(); embed.setTitle(currentlyPlaying.title); - embed.setURL(`https://www.youtube.com/watch?v=${currentlyPlaying.url}`); - embed.setFooter(`Source: ${currentlyPlaying.artist}`); + embed.setURL(`https://www.youtube.com/watch?v=${currentlyPlaying.url.length === 11 ? currentlyPlaying.url : getYouTubeID(currentlyPlaying.url) ?? ''}`); let description = player.status === STATUS.PLAYING ? 'âšī¸' : 'âļī¸'; description += ' '; description += getProgressBar(20, player.getPosition() / currentlyPlaying.length); description += ' '; - description += `\`[${prettyTime(player.getPosition())}/${prettyTime(currentlyPlaying.length)}]\``; + description += `\`[${prettyTime(player.getPosition())}/${currentlyPlaying.isLive ? 'live' : prettyTime(currentlyPlaying.length)}]\``; description += ' đ'; - description += queue.isEmpty() ? '' : '\n\n**Next up:**'; + description += player.isQueueEmpty() ? '' : '\n\n**Next up:**'; embed.setDescription(description); + let footer = `Source: ${currentlyPlaying.artist}`; + + if (currentlyPlaying.playlist) { + footer += ` (${currentlyPlaying.playlist.title})`; + } + + embed.setFooter(footer); + const queuePageBegin = (queuePage - 1) * PAGE_SIZE; const queuePageEnd = queuePageBegin + PAGE_SIZE; - queue.get().slice(queuePageBegin, queuePageEnd).forEach((song, i) => { + player.getQueue().slice(queuePageBegin, queuePageEnd).forEach((song, i) => { embed.addField(`${(i + 1 + queuePageBegin).toString()}/${queueSize.toString()}`, song.title, false); }); |
