aboutsummaryrefslogtreecommitdiff
path: root/src/commands
diff options
context:
space:
mode:
authorMax Isom <[email protected]>2020-03-15 19:30:07 -0500
committerMax Isom <[email protected]>2020-03-15 19:30:07 -0500
commit2875c6ceb89ccd22da500f6f3dccbe3c43893d86 (patch)
tree6a2bf5f0ad4963facd03cc303e0af02f4d6d5671 /src/commands
parente55acbb718c5b36315010b5d093b1554712aca4b (diff)
downloadmuse-2875c6ceb89ccd22da500f6f3dccbe3c43893d86.tar.xz
muse-2875c6ceb89ccd22da500f6f3dccbe3c43893d86.zip
Add pause/resume
Diffstat (limited to 'src/commands')
-rw-r--r--src/commands/pause.ts29
-rw-r--r--src/commands/play.ts23
2 files changed, 52 insertions, 0 deletions
diff --git a/src/commands/pause.ts b/src/commands/pause.ts
new file mode 100644
index 0000000..54855e0
--- /dev/null
+++ b/src/commands/pause.ts
@@ -0,0 +1,29 @@
+import {Message} from 'discord.js';
+import {TYPES} from '../types';
+import {inject, injectable} from 'inversify';
+import PlayerManager from '../managers/player';
+import {STATUS} from '../services/player';
+import Command from '.';
+
+@injectable()
+export default class implements Command {
+ public name = 'pause';
+ public description = 'pause currently playing song';
+ private readonly playerManager: PlayerManager;
+
+ constructor(@inject(TYPES.Managers.Player) playerManager: PlayerManager) {
+ this.playerManager = playerManager;
+ }
+
+ public async execute(msg: Message, _: string []): Promise<void> {
+ const player = this.playerManager.get(msg.guild!.id);
+
+ if (player.status !== STATUS.PLAYING) {
+ await msg.channel.send('error: not currently playing');
+ return;
+ }
+
+ player.pause();
+ await msg.channel.send('paused');
+ }
+}
diff --git a/src/commands/play.ts b/src/commands/play.ts
index 03992d7..2d91d19 100644
--- a/src/commands/play.ts
+++ b/src/commands/play.ts
@@ -36,6 +36,29 @@ export default class implements Command {
}
public async execute(msg: Message, args: string []): Promise<void> {
+ const queue = this.queueManager.get(msg.guild!.id);
+
+ if (args.length === 0) {
+ if (this.playerManager.get(msg.guild!.id).status === STATUS.PLAYING) {
+ await msg.channel.send('error: already playing, give me a song name');
+ return;
+ }
+
+ // Must be resuming play
+ if (queue.get().length === 0) {
+ await msg.channel.send('error: nothing to play');
+ return;
+ }
+
+ const channel = getMostPopularVoiceChannel(msg.guild!);
+
+ await this.playerManager.get(msg.guild!.id).connect(channel);
+ await this.playerManager.get(msg.guild!.id).play();
+
+ await msg.channel.send('play resuming');
+ return;
+ }
+
const newSongs: QueuedSong[] = [];
const res = new LoadingMessage(msg.channel as TextChannel, 'hold on a sec');