aboutsummaryrefslogtreecommitdiff
path: root/src/commands/queue.ts
diff options
context:
space:
mode:
authorMax Isom <[email protected]>2020-03-20 20:47:04 -0500
committerMax Isom <[email protected]>2020-03-20 20:47:04 -0500
commit9c91ce1a13cad701bc8876fd07ac4d513522a215 (patch)
tree582d5c7a17f2f476c563fd5aa635db02bb0c9394 /src/commands/queue.ts
parent646f030781df0f4fe03437d0ed2294a10fa6c177 (diff)
downloadmuse-9c91ce1a13cad701bc8876fd07ac4d513522a215.tar.xz
muse-9c91ce1a13cad701bc8876fd07ac4d513522a215.zip
Merge Player and Queue services
Diffstat (limited to 'src/commands/queue.ts')
-rw-r--r--src/commands/queue.ts28
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);
});