GithubHelp home page GithubHelp logo

mrjacz / discord.js-lavalink Goto Github PK

View Code? Open in Web Editor NEW
62.0 5.0 18.0 1.29 MB

A discord.js lavalink client

Home Page: https://mrjacz.github.io/discord.js-lavalink/

License: MIT License

JavaScript 43.28% TypeScript 56.72%
discord-lavalink discord discordbot discord-bot discord-js lavalink lavaplayer

discord.js-lavalink's Introduction

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

discord.js-lavalink's People

Contributors

archturtle avatar davidcralph avatar deivu avatar dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar favna avatar mrjacz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

discord.js-lavalink's Issues

[BUG] Music does not start

I have a problem, the music does not start on linux ... Java version: 1.8.0_201 Build: 1.8.0_201-b09. The commands work but not the music ..

Cannot read property 'get' of undefined

Hi, I just updated your module and now I'm getting this error when im trying to play something:

    at PlayerManager.sendWS (/Users/e/Documents/Code/skeppy-bot/node_modules/discord.js-lavalink/dist/lib/PlayerManager.js:135:48)
    at PlayerManager.join (/Users/e/Documents/Code/skeppy-bot/node_modules/discord.js-lavalink/dist/lib/PlayerManager.js:41:14)
    at /Users/e/Documents/Code/skeppy-bot/commands/play.js:165:37
    at processTicksAndRejections (internal/process/task_queues.js:94:5)

this is my code:

    var theHost = getIdealHost(bot, message.guild.region);
    const player = await bot.player.join({
      guild: message.guild.id,
      channel: message.member.voiceChannelID,
      host: theHost
    });
    bot.execQueue(message, queue, player, true);
  }

Lavalink not playing tracks

Hey there, When I'm trying to play a track it just won't play. I tried everything resolving tracks with snekfetch and trying to play a soundcloud track using its id.
Here is my console window

[23:02:35] [ INFO ] [AudioLoader] Loaded playlist Search results for: Hymn for the weekend seeb.
[23:02:35] [ INFO ] [SocketServer] {"op":"play","guildId":"414238995535626245","track":"QAAA3gIAQERhbnRoZW1hbiB4IENvbGRwbGF5IHggU2VlYiAtIEh5bW4gRm9yIFRoZSBXZWVrZW5kIChQaXRjaCBSZW1peCkADERhbnRoZW1hbl8xNQAAAAAAA6gaAAkyNjc4MjEzMDQAAQBiaHR0cHM6Ly9zb3VuZGNsb3VkLmNvbS91c2VyLTYxMzQ0MzY0NC9kYW50aGVtYW4teC1jb2xkcGxheS14LXNlZWItaHltbi1mb3ItdGhlLXdlZWtlbmQtcGl0Y2gtcmVtaXgACnNvdW5kY2xvdWQAAAAAAAAAAA=="}

"Cannot find module" error

I am getting this error:

internal/modules/cjs/loader.js:326
      throw err;
      ^

Error: Cannot find module '[redacted path]\node_modules\discord.js-lavalink\dist\index'. Please verify that the package.json has a valid "main" entry
    at tryPackage (internal/modules/cjs/loader.js:318:19)
    at Function.Module._findPath (internal/modules/cjs/loader.js:700:18)
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:963:27)
    at Function.Module._load (internal/modules/cjs/loader.js:859:27)
    at Module.require (internal/modules/cjs/loader.js:1036:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> ([redacted path])
    at Module._compile (internal/modules/cjs/loader.js:1147:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1167:10)
    at Module.load (internal/modules/cjs/loader.js:996:32) {
  code: 'MODULE_NOT_FOUND',
  path: '[redacted path]\\node_modules\\discord.js-lavalink\\package.json',
  requestPath: 'discord.js-lavalink'

I am using the latest commit (1e55e05 at the time.)

setting volume issue

Setting a volume using player.volume(volume) is making the lavalink instance error out and stops playback.

    const player = await manager.join({
        guild: msg.guild.id,
        channel: msg.member.voiceChannelID,
        host: 'localhost'
    })```

is what im using to set the player.

Then I use events. to set the volume like this:

```javascript
    event.on('volume', (volume) => {
        console.log(volume)
        player.volume(volume)
    })

volume is a parsed int.
as shown here:

        if(parseInt(args[0]) > 100 || parseInt(args[0]) < 0)return msg.channel.send('Invalid volume level!');
        console.log(args[0])
        event.emit('volume', parseInt(args[0]))
        return msg.channel.send('Volume set to: '+args[0])

If this is not a discord.js-lavalink issue please redirect me to where It needs to go!

This is the error it gives:

com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Something broke when playing the track.
        at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:43) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:102) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:349) [lavaplayer-1.3.17.jar!/:na]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:1.8.0_211]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:1.8.0_211]
        at java.lang.Thread.run(Unknown Source) ~[na:1.8.0_211]
Caused by: java.lang.UnsatisfiedLinkError: com.sedmelluq.discord.lavaplayer.natives.opus.OpusDecoderLibrary.create(II)J
        at com.sedmelluq.discord.lavaplayer.natives.opus.OpusDecoderLibrary.create(Native Method) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.natives.opus.OpusDecoder.<init>(OpusDecoder.java:21) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.initialiseDecoder(OpusPacketRouter.java:190) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.checkDecoderNecessity(OpusPacketRouter.java:174) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.process(OpusPacketRouter.java:91) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaOpusTrackConsumer.consume(MatroskaOpusTrackConsumer.java:47) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:372) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:336) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:321) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:297) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:39) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:257) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:38) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:27) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:77) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:69) ~[lavaplayer-1.3.17.jar!/:na]
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:90) ~[lavaplayer-1.3.17.jar!/:na]
        ... 4 common frames omitted

Exception in thread "lava-daemon-pool-playback-5-thread-1" java.lang.UnsatisfiedLinkError: com.sedmelluq.discord.lavaplayer.natives.opus.OpusDecoderLibrary.create(II)J
        at com.sedmelluq.discord.lavaplayer.natives.opus.OpusDecoderLibrary.create(Native Method)
        at com.sedmelluq.discord.lavaplayer.natives.opus.OpusDecoder.<init>(OpusDecoder.java:21)
        at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.initialiseDecoder(OpusPacketRouter.java:190)
        at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.checkDecoderNecessity(OpusPacketRouter.java:174)
        at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.process(OpusPacketRouter.java:91)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaOpusTrackConsumer.consume(MatroskaOpusTrackConsumer.java:47)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:372)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:336)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:321)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:297)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:39)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:257)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:38)
        at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:27)
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:77)
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:69)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:90)
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:349)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)```

Resume Not working?!

Whenever I try to pause my music its pauses correctly, but when I try to resume it, it emits the event but doesn't resume playing the music.

Discord Master Version Not Supported

Hi, I'm recently migrating my discord.js version to the master version. And in the master now have a GuildManager class and to get guild from the collection, you should add cache after client.guilds.
I see the pull request and there is a pull request to solve this: #157

Now I'm using my own fork project to fix this. Please solve this ASAP.

Youtube 429 Too many requests

so i have that error its fine will be gone but how can i let the users know that something went wrong because the bot says playing and it doesn't play

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.