2.2.0 • Published 4 months ago
lavacord v2.2.0
LavaCord
A simple and easy to use lavalink wrapper.
Documentation
Installation
For stable
# Using yarn
yarn add lavacord
# Using npm
npm install lavacord
For Development
# Using yarn
yarn add lavacord/lavacord
# Using npm
npm install lavacord/lavacord
LavaLink configuration
Download Lavalink from their GitHub releases
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 Manager
passing an array of nodes and an object with user
the client's user id.
// import the Manager class from lavacord
const { Manager } = require("lavacord");
// Define the nodes array as an example
const nodes = [
{ id: "1", host: "localhost", port: 2333, password: "youshallnotpass" }
];
// Initilize the Manager with all the data it needs
const manager = new Manager(nodes, {
user: client.user.id, // Client id
send: (packet) => {
// this needs to send the provided packet to discord's WS using the method from your library.
// use the bindings for the discord library you use if you don't understand this
}
});
// Connects all the LavalinkNode WebSockets
await manager.connect();
// The error event, which you should handle otherwise your application will crash when an error is emitted
manager.on("error", (error, node) => {
error, // is the error
node // is the node which the error is from
});
Resolving tracks using LavaLink REST API
const { Rest } = require("lavacord");
async function getSongs(search) {
// This gets the best node available, what I mean by that is the idealNodes getter will filter all the connected nodes and then sort them from best to least beast.
const node = manager.idealNodes[0];
return Rest.load(node, search)
.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
node: "1" // lavalink node id, 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.type === "TrackEndEvent" && data.reason === "replaced") return; // Ignore replaced reason to prevent skip loops
// Play next song
});
// Leave voice channel and destroy Player
await manager.leave(guildId); // Player ID aka guild id
2.2.0
4 months ago
2.1.4-v4
1 year ago
2.1.3-v4
1 year ago
2.1.2-v4
2 years ago
2.1.1-v4
2 years ago
2.0.3
2 years ago
2.0.2
2 years ago
2.0.4
2 years ago
2.1.0-v4
2 years ago
2.0.1
2 years ago
2.0.0
2 years ago
1.1.9
5 years ago
1.1.8
5 years ago
1.1.7
5 years ago
1.1.6
5 years ago
1.1.5
5 years ago
1.1.4
5 years ago
1.1.3
5 years ago
1.1.2
5 years ago
1.1.1
5 years ago
1.1.0
5 years ago
1.0.0
5 years ago
0.0.1-dev
6 years ago