Add loopMode

Closes #151
This commit is contained in:
Androz2091 2020-12-27 00:02:23 +01:00
parent dc68644b08
commit fdf4a592d0
3 changed files with 25 additions and 1 deletions

View file

@ -508,6 +508,20 @@ class Player extends EventEmitter {
return queue.repeatMode return queue.repeatMode
} }
/**
* Set loop mode, to play the queue again and again
* @param {Discord.Message} message
*/
async setLoopMode (message, enabled) {
// Get guild queue
const queue = this.queues.get(message.guild.id)
if (!queue) return this.emit('error', 'NotPlaying', message)
// Enable/Disable loop mode
queue.loopMode = enabled
// Return the repeat mode
return queue.loopMode
}
/** /**
* Shuffle the queue of the server. * Shuffle the queue of the server.
* @param {Discord.Message} message * @param {Discord.Message} message
@ -697,7 +711,10 @@ class Player extends EventEmitter {
return this.emit('queueEnd', queue.firstMessage, queue) return this.emit('queueEnd', queue.firstMessage, queue)
} }
// if the track needs to be the next one // if the track needs to be the next one
if (!queue.repeatMode && !firstPlay) queue.tracks.shift() if (!queue.repeatMode && !firstPlay) {
const oldTrack = queue.tracks.shift()
if (queue.loopMode) queue.tracks.push(oldTrack) // add the track at the end of the queue
}
const track = queue.playing const track = queue.playing
// Reset lastSkipped state // Reset lastSkipped state
queue.lastSkipped = false queue.lastSkipped = false

View file

@ -60,6 +60,11 @@ class Queue extends EventEmitter {
* @type {boolean} * @type {boolean}
*/ */
this.repeatMode = false this.repeatMode = false
/**
* Whether the loop mode is enabled.
* @type {boolean}
*/
this.loopMode = false
/** /**
* Filters status * Filters status
* @type {Filters} * @type {Filters}

2
typings/index.d.ts vendored
View file

@ -35,6 +35,7 @@ declare module 'discord-player' {
public skip(message: Message): void; public skip(message: Message): void;
public nowPlaying(message: Message): Track; public nowPlaying(message: Message): Track;
public setRepeatMode(message: Message): boolean; public setRepeatMode(message: Message): boolean;
public setLoopMode(message: Message, enabled: boolean): boolean
public shuffle(message: Message): Queue; public shuffle(message: Message): Queue;
public remove(message: Message, trackOrPosition: Track|number): Track; public remove(message: Message, trackOrPosition: Track|number): Track;
public createProgressBar(message: Message, progressBarOptions: ProgressBarOptions): string; public createProgressBar(message: Message, progressBarOptions: ProgressBarOptions): string;
@ -94,6 +95,7 @@ declare module 'discord-player' {
public volume: number; public volume: number;
public paused: boolean; public paused: boolean;
public repeatMode: boolean; public repeatMode: boolean;
public loopMode: boolean;
public filters: FiltersStatuses; public filters: FiltersStatuses;
public firstMessage: Message; public firstMessage: Message;
private additionalStreamTime: number; private additionalStreamTime: number;