discord-player-play-dl/docs/migrating/migrating.md
Maxim Coppieters f633a7c0dd Fix minor typos
2021-08-09 16:56:40 +02:00

1.9 KiB

Migrating to Discord Player v5

We have introduced some breaking changes in Discord Player v5. Which means, your old code will no longer work with v5. The new update brings new features as well as better management of different things. This also uses the new @discordjs/voice library!

Basic Example

- player.play(message, query);
+ const queue = player.createQueue(message.guild);
+ const song = await player.search(query, {
+   requestedBy: message.author
});
+ 
+ try {
+   await queue.connect(message.member.voice.channel);
+ } catch {
+   message.reply("Could not join your voice channel");
+ }
+
+ queue.addTrack(song.tracks[0]);
+ queue.play();

Everything related to music player is moved to Queue.

How do I reply to the event like v4?

Since we got rid of message parameter in every method of the Discord Player, you no longer have access to the message object in events. Instead, we have added <Queue>.metadata prop as an alternative. This metadata can be anything, declared while creating queue:

const queue = player.createQueue(message.guild, {
    metadata: message
});

The metadata message will always be available in every event emitted for that specific Queue. You can access it via queue.metadata:

player.on("trackStart", (queue, track) => {
    const channel = queue.metadata.channel; // queue.metadata is your "message" object
    channel.send(`🎶 | Started playing **${track.title}**`);
});

How do I stop the player

You have to use <Queue>.destroy() to destroy the queue. It will also stop the player.

const queue = player.getQueue(message.guild.id);
if (queue) queue.destroy();

Updating filters

Discord Player v5.x has new option bufferingTimeout in queue init options which allows you to set stream buffering timeout before playing. This might be useful if you want to have smooth filters update. By default, it is set to 3 seconds.