Socket
Socket
Sign inDemoInstall

lavacord

Package Overview
Dependencies
146
Maintainers
2
Versions
22
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    lavacord

A simple by design lavalink wrapper made for any discord library.


Version published
Weekly downloads
111
decreased by-11.9%
Maintainers
2
Install size
38.3 MB
Created
Weekly downloads
 

Readme

Source

Discord npm (scoped) npm downloads GitHub Depfu Codacy Badge

LavaCord

A simple and easy to use lavalink wrapper.

Documentation

lavacord.github.io/lavacord

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

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

Keywords

FAQs

Last updated on 03 Mar 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc