Add setRepeatMode function
This commit is contained in:
parent
de86f7ffd3
commit
7b834cc9f2
3 changed files with 72 additions and 3 deletions
51
README.md
51
README.md
|
@ -72,6 +72,10 @@ client.player.resume(guildID);
|
||||||
client.player.stop(guildID);
|
client.player.stop(guildID);
|
||||||
// Check if music is playing in a guild
|
// Check if music is playing in a guild
|
||||||
client.player.isPlaying(guildID);
|
client.player.isPlaying(guildID);
|
||||||
|
// Current song will be repeated indefinitely
|
||||||
|
client.player.setRepeatMode(true);
|
||||||
|
// Current song will no longer be repeated indefinitely
|
||||||
|
client.player.setRepeatMode(false);
|
||||||
```
|
```
|
||||||
|
|
||||||
### Event messages
|
### Event messages
|
||||||
|
@ -349,6 +353,45 @@ client.on('message', async (message) => {
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Repeat
|
||||||
|
|
||||||
|
To repeat the current song, use the `client.player.setRepeatMode()` function.
|
||||||
|
|
||||||
|
**Usage:**
|
||||||
|
|
||||||
|
```js
|
||||||
|
client.player.setRepeatMode(boolean);
|
||||||
|
```
|
||||||
|
|
||||||
|
**Example**:
|
||||||
|
|
||||||
|
```js
|
||||||
|
client.on('message', async (message) => {
|
||||||
|
|
||||||
|
const args = message.content.slice(settings.prefix.length).trim().split(/ +/g);
|
||||||
|
const command = args.shift().toLowerCase();
|
||||||
|
|
||||||
|
if(command === 'enable-repeat'){
|
||||||
|
// Enable repeat mode
|
||||||
|
client.player.setRepeatMode(true);
|
||||||
|
// Get the current song
|
||||||
|
let queue = await client.player.getQueue(guildID);
|
||||||
|
let song = queue.songs[0];
|
||||||
|
message.channel.send(`${song.name} will be repeated indefinitely!`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(command === 'disable-repeat'){
|
||||||
|
// Disable repeat mode
|
||||||
|
client.player.setRepeatMode(false);
|
||||||
|
// Get the current song
|
||||||
|
let queue = await client.player.getQueue(guildID);
|
||||||
|
let song = queue.songs[0];
|
||||||
|
message.channel.send(`${song.name} will no longer be repeated indefinitely!`);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
## Info Messages
|
## Info Messages
|
||||||
|
|
||||||
You can send a message when the queue ends or when the song changes:
|
You can send a message when the queue ends or when the song changes:
|
||||||
|
@ -363,8 +406,12 @@ client.on('message', (message) => {
|
||||||
song.queue.on('end', () => {
|
song.queue.on('end', () => {
|
||||||
message.channel.send('The queue is empty, please add new songs!');
|
message.channel.send('The queue is empty, please add new songs!');
|
||||||
});
|
});
|
||||||
song.queue.on('songChanged', (oldSong, newSong) => {
|
song.queue.on('songChanged', (oldSong, newSong, skipped, repeatMode) => {
|
||||||
message.channel.send(`Now playing ${newSong}...`);
|
if(repeatMode){
|
||||||
|
message.channel.send(`Playing ${newSong} again...`);
|
||||||
|
} else {
|
||||||
|
message.channel.send(`Now playing ${newSong}...`);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -258,6 +258,23 @@ class Player {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable or disable the repeat mode
|
||||||
|
* @param {Boolean} enabled Whether the repeat mode should be enabled
|
||||||
|
* @returns {Promise<Void>}
|
||||||
|
*/
|
||||||
|
setRepeatMode(enabled) {
|
||||||
|
return new Promise(async(resolve, reject) => {
|
||||||
|
// Gets guild queue
|
||||||
|
let queue = this.queues.find((g) => g.guildID === guildID);
|
||||||
|
if(!queue) reject('Not playing');
|
||||||
|
// Enable/Disable repeat mode
|
||||||
|
queue.repeatMode = enabled;
|
||||||
|
// Resolve
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start playing songs in a guild.
|
* Start playing songs in a guild.
|
||||||
* @ignore
|
* @ignore
|
||||||
|
@ -282,7 +299,7 @@ class Player {
|
||||||
return queue.emit('end');
|
return queue.emit('end');
|
||||||
}
|
}
|
||||||
// Emit songChanged event
|
// Emit songChanged event
|
||||||
if(!firstPlay) queue.emit('songChanged', queue.songs.shift(), queue.songs[0], queue.skipped);
|
if(!firstPlay) queue.emit('songChanged', (!queue.repeatMode ? queue.songs.shift() : queue.songs[0]), queue.songs[0], queue.skipped, queue.repeatMode);
|
||||||
queue.skipped = false;
|
queue.skipped = false;
|
||||||
let song = queue.songs[0];
|
let song = queue.songs[0];
|
||||||
// Download the song
|
// Download the song
|
||||||
|
|
|
@ -51,6 +51,11 @@ class Queue extends EventEmitter {
|
||||||
* @type {Boolean}
|
* @type {Boolean}
|
||||||
*/
|
*/
|
||||||
this.playing = true;
|
this.playing = true;
|
||||||
|
/**
|
||||||
|
* Whether the repeat mode is enabled.
|
||||||
|
* @type {Boolean}
|
||||||
|
*/
|
||||||
|
this.repeatMode = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue