This package has been deprecated

Author message:

discord.js-lavalink is no longer being maintained. Please use @lavacord/discord.js instead Thanks

discord.js-lavalink
TypeScript icon, indicating that this package has built-in type declarations

3.0.1 • Public • Published

Discord npm npm downloads NPM version Build Status Codacy Badge Open Source Love dependencies Status devDependencies Status NPM

discord.js-lavalink

A lavalink client for Discord.js

Documentation

mrjacz.github.io/discord.js-lavalink

Installation

For stable

# Using yarn 
yarn add discord.js-lavalink
 
# Using npm 
npm install discord.js-lavalink

For Development

# Using yarn 
yarn add MrJacz/discord.js-lavalink
 
# Using npm 
npm install MrJacz/discord.js-lavalink

LavaLink configuration

Download from the CI server

Put an application.yml file in your working directory. Example

Run with java -jar Lavalink.jar

The issue tracker is for issues only

If you're having a problem with the module contact us in the Discord Server

Implementation

Start by creating a new PlayerManager passing an array of nodes and an object with user the client's user id and shards The total number of shards your bot is operating on.

const { PlayerManager } = require("discord.js-lavalink");
 
const nodes = [{ host: "localhost", port: 2333, password: "youshallnotpass" }];
 
const manager = new PlayerManager(client, nodes, {
    user: client.user.id, // Client id
    shards: shardCount // Total number of shards your bot is operating on
});
 
manager.on("error", (node, error) => {
    node; // is the node which the error is from
    error; // is the error;
});

Resolving tracks using LavaLink REST API

const fetch = require("node-fetch");
const { URLSearchParams } = require("url");
 
async function getSongs(search) {
    const node = client.player.nodes.first();
 
    const params = new URLSearchParams();
    params.append("identifier", search);
 
    return fetch(`http://${node.host}:${node.port}/loadtracks?${params}`, { headers: { Authorization: node.password } })
        .then(res => res.json())
        .then(data => data.tracks)
        .catch(err => {
            console.error(err);
            return null;
        });
}
 
getSongs("ytsearch:30 second song").then(songs => {
    // handle loading of the tracks somehow ¯\_(ツ)_/¯
});

Joining and Leaving channels

// Join
const player = await manager.join({
    guild: guildId, // Guild id
    channel: channelId, // Channel id
    host: "localhost" // lavalink host, based on array of nodes
});
 
await player.play(track); // Track is a base64 string we get from Lavalink REST API
 
player.once("error", error => console.error(error));
player.once("end", data => {
    if (data.reason === "REPLACED") return; // Ignore REPLACED reason to prevent skip loops
    // Play next song
});
 
// Leave voice channel and destory Player
await manager.leave(guildId); // Player ID aka guild id

For a proper example look at example/app.js

Package Sidebar

Install

npm i discord.js-lavalink

Weekly Downloads

187

Version

3.0.1

License

MIT

Unpacked Size

38.3 kB

Total Files

21

Last publish

Collaborators

  • jacz