From 4390ff3e92043b79ffa4d40657dbd204f2e53adf Mon Sep 17 00:00:00 2001 From: Androz2091 Date: Sun, 27 Dec 2020 00:10:29 +0100 Subject: [PATCH] :sparkles: Add back method Closes #133 --- src/Player.js | 17 +++++++++++++++++ src/Queue.js | 5 +++++ typings/index.d.ts | 2 ++ 3 files changed, 24 insertions(+) diff --git a/src/Player.js b/src/Player.js index 41b9abf..a06bb93 100644 --- a/src/Player.js +++ b/src/Player.js @@ -478,6 +478,23 @@ class Player extends EventEmitter { return queue } + /** + * Play back the previous song. + * @param {Discord.Message} message + * @returns {Queue} + */ + back (message) { + // Get guild queue + const queue = this.queues.get(message.guild.id) + if (!queue) return this.emit('error', 'NotPlaying', message) + queue.tracks.splice(1, 0, queue.previousTracks.shift()) + // End the dispatcher + queue.voiceConnection.dispatcher.end() + queue.lastSkipped = true + // Return the queue + return queue + } + /** * Get the played song in the server. * @param {Discord.Message} message diff --git a/src/Queue.js b/src/Queue.js index c707166..de83314 100644 --- a/src/Queue.js +++ b/src/Queue.js @@ -35,6 +35,11 @@ class Queue extends EventEmitter { * @type {Track[]} */ this.tracks = [] + /** + * The previous tracks in this queue. + * @type {Track[]} + */ + this.previousTracks = [] /** * Whether the stream is currently stopped. * @type {boolean} diff --git a/typings/index.d.ts b/typings/index.d.ts index 4f75860..0f02db7 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -33,6 +33,7 @@ declare module 'discord-player' { public getQueue(message: Message): Queue; public clearQueue(message: Message): void; public skip(message: Message): void; + public back(message: Message): void; public nowPlaying(message: Message): Track; public setRepeatMode(message: Message): boolean; public setLoopMode(message: Message, enabled: boolean): boolean @@ -90,6 +91,7 @@ declare module 'discord-player' { public voiceConnection?: VoiceConnection; public stream: Stream; public tracks: Track[]; + public previousTracks: Track[]; public stopped: boolean; public lastSkipped: boolean; public volume: number;