ferry-queue
Installation
$ npm install ferry-queue
Simple setup for ferry-queue code
const { Queue } = require("ferry-queue")
const { Client } = require("discord.js")
const { LavalinkManager } = require("lavalink-client");
const client = new Client()
client.Queue = new Queue()
client.lavalink = new LavalinkManager({
nodes: [
{
host: 'localhost',
port: 2333,
authorization: 'yourverystrongpassword',
id: "lavalink",
},
],
sendToShard: (guildId, payload) => client.guilds.cache.get(guildId)?.shard?.send(payload),
});
client.lavalink.nodeManager.on("connect", (node) => console.log(`Node ${node.id} connected`));
client.on('ready', () => {
client.lavalink.init({ id: client.user.id, username: client.user.username });
});
client.on("raw", (data) => client.lavalink.sendRawData(data));
client.login("your bot token here")
Simple code for ferry-queue events
client.lavalink.on('queueEnd', async (player) => {
client.Queue.track_end(player.guildId, player)
})
client.lavalink.on("playerDestroy", async (player) => {
client.Queue.destroy(player.guildId, player)
})
Simpel code for ferry-queue commands
client.on('messageCreate', async (Message) => {
const { author, content, member, guild, channel } = Message;
if (author.bot) return;
const args = Message.content.trim().split(/ +/g);
const command = args.shift().toLowerCase();
if(command == "play"){
const voice = member.voice.channel;
const query = args.join(" ")
const player = client.lavalink.createPlayer({
guildId: guild.id,
voiceChannelId: voice.id,
textChannelId: channel.id,
selfDeaf: true,
selfMute: false,
})
await player.connect()
const result = await player.search({ query: query}, author);
if(result.loadType == "playlist") {
for (const track of result.tracks) {
client.Queue.addTrack(voice.guild.id, track, player)
}
} else {
client.Queue.addTrack(voice.guild.id, result.tracks[0], player)
}
} else if(command == "skip"){
const player = client.lavalink.getPlayer(guild.id)
if(player) client.Queue.skip(guild.id, player)
} else if(command == "previous"){
const player = client.lavalink.getPlayer(guild.id)
if(player) client.Queue.previou(guild.id, player)
} else if(command == "pause"){
const player = client.lavalink.getPlayer(guild.id)
if(player) client.Queue.pause(guild.id, player)
} else if(command == "resume"){
const player = client.lavalink.getPlayer(guild.id)
if(player) client.Queue.resume(guild.id, player)
} else if(command == "stop"){
const player = client.lavalink.getPlayer(guild.id)
if(player) client.Queue.destroy(guild.id, player)
} else if(command == "repate") {
const player = client.lavalink.getPlayer(guild.id)
if(player){
if(args[0]){
if(args[0] == "track" || args[0] == "queue" || args[0] == "off"){
client.Queue.repeatMode(guild.id, args[0])
}
} else {
const mode = client.Queue.repeatMode(guild.id)
console.log(`repeat mode now is:${mode}`)
}
}
}
})