NIEUW 📢 Beperkte lanceeractie: tot 70% korting op je eerste maand, voor elke game!Bekijk pakketten

Je Discord-bot verbinden met Lavalink

Lavalink-hostingUpdated Nov 6, 20266 min read

Je bot heeft drie waarden van je Lavalink-node nodig: de host, de poort en het wachtwoord. De host en de poort zijn het Adres op het Overzicht van de node; het wachtwoord staat in application.yml. Je clientlibrary moet Lavalink versie 4 en Discords DAVE-spraakversleuteling ondersteunen, en de optie voor beveiligd (SSL) blijft uit.

  1. Kopieer op het Overzicht van de Lavalink-server het Adres (host en poort) en kopieer het wachtwoord uit application.yml.
  2. Voeg op de pagina Bot van je botserver, onder Omgeving, LAVALINK_HOST, LAVALINK_PORT en LAVALINK_PASSWORD toe.
  3. Voeg de clientcode voor je library toe (voorbeelden hieronder), met de optie voor beveiligd (SSL) uit.
  4. Herstart de bot en controleer dat hij meldt dat de node verbonden is.

Elke stap uitgebreid hieronder.

Wat elke client vraagt

InstellingWaarde
HostHet deel van Adres vóór de dubbele punt, bijvoorbeeld 203.0.113.10
PoortHet getal na de dubbele punt
WachtwoordHet password: onder lavalink:, server: in application.yml
Secure / SSLUit: de node gebruikt gewoon http en ws

Waar je ze vindt: Een Lavalink-server 24/7 hosten.

application.yml geopend in de bestandseditor, met de regel password onder lavalink, server.

Gebruik een clientversie die DAVE ondersteunt

Sinds 2 maart 2026 laat Discord alleen spraakclients die zijn end-to-end-versleuteling ondersteunen, het DAVE-protocol, in spraakkanalen (stagekanalen uitgezonderd). Lavalink ondersteunt DAVE vanaf versie 4.2.0, en je node draait 4.2.2. Volgens de release notes van Lavalink 4.2.0 moet ook de client worden bijgewerkt: hij moet nu de ID van het spraakkanaal naar de node sturen. Een oudere clientversie verbindt nog wel met de node, maar Lavalink kan de spraakverbinding niet openen, dus er wordt niets afgespeeld. De versie die je bij elke gangbare client moet gebruiken, of een nieuwere:

ClientTaalGebruik deze versie of nieuwer
ShoukakuNode.js4.3.0 (28 feb 2026)
lavalink-clientNode.js2.9.7 (2 mrt 2026). Het werk aan DAVE begon in 2.9.3 (27 feb 2026); de auteur noemt 2.9.7 de eerste grote release met DAVE.
WavelinkPython3.5.1 (11 apr 2026)
Lavalink.pyPython5.10.0 (28 feb 2026)

Voor andere libraries heeft de eigen clientlijst van Lavalink een DAVE-kolom. Met een oudere client antwoordt je node op de spraakupdate met een 400-fout met de melding token, endpoint, sessionId and channelId must be provided in voice state. (Een bot die zelf verbinding maakt met Discord-spraak, zonder Lavalink, krijgt in plaats daarvan Discords sluitcode 4017, E2EE/DAVE protocol required.)

Houd de waarden uit je code

De voorbeelden hieronder lezen LAVALINK_HOST, LAVALINK_PORT en LAVALINK_PASSWORD uit de omgeving. Draait je bot op een botpakket van PlayNHost:

  1. Open de pagina Bot van de botserver en klik op Omgeving.
  2. Voeg onder Een variabele toevoegen LAVALINK_HOST en LAVALINK_PORT toe. Voeg LAVALINK_PASSWORD toe met Houd deze waarde geheim aangevinkt.
  3. Herstart de bot. De variabelen komen bij hem aan als hij start.

Meer: Omgevingsvariabelen en geheimen instellen voor je Discord-bot.

Node.js met Shoukaku

Packages: discord.js en shoukaku (4.3.0 of nieuwer).

const { Client, Events, GatewayIntentBits } = require('discord.js');
const { Shoukaku, Connectors } = require('shoukaku');

const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildVoiceStates] });

const nodes = [{
  name: 'playnhost',
  url: `${process.env.LAVALINK_HOST}:${process.env.LAVALINK_PORT}`,
  auth: process.env.LAVALINK_PASSWORD,
}];

// Create it before client.login(): Shoukaku connects when the bot is ready.
const shoukaku = new Shoukaku(new Connectors.DiscordJS(client), nodes);
shoukaku.on('ready', (name) => console.log(`Lavalink node ${name} connected`));
shoukaku.on('error', (name, error) => console.error(`Lavalink node ${name}:`, error));

client.once(Events.ClientReady, () => console.log(`Logged in as ${client.user.tag}`));
client.login(process.env.DISCORD_TOKEN);

De documentatie van Shoukaku laat zien hoe je een voicekanaal joint en een nummer afspeelt zodra de node verbonden is.

Packages: discord.py en wavelink (3.5.1 of nieuwer).

import os

import discord
import wavelink
from discord.ext import commands


class Bot(commands.Bot):
    def __init__(self):
        super().__init__(command_prefix="!", intents=discord.Intents.default())

    async def setup_hook(self):
        node = wavelink.Node(
            uri=f"http://{os.environ['LAVALINK_HOST']}:{os.environ['LAVALINK_PORT']}",
            password=os.environ["LAVALINK_PASSWORD"],
        )
        await wavelink.Pool.connect(nodes=[node], client=self)

    async def on_wavelink_node_ready(self, payload: wavelink.NodeReadyEventPayload):
        print(f"Lavalink node {payload.node.identifier} connected")


bot = Bot()
bot.run(os.environ["DISCORD_TOKEN"])

setup_hook draait één keer, voordat de bot verbinding maakt; on_ready kan na elke herverbinding opnieuw draaien, dus maak de verbinding met de node niet daar.

Andere clients

Elke client die Lavalink 4 en DAVE ondersteunt, werkt op dezelfde manier met dezelfde drie waarden, bijvoorbeeld lavalink-client voor discord.js of Lavalink.py voor Python. Een client die voor Lavalink 3 is geschreven, kan niet met een node van versie 4 praten.

Het verbindt niet

  • Connection refused of time-out: de host of poort klopt niet, of de node is gestopt. Kopieer het Adres opnieuw van Overzicht en controleer of de console Lavalink is ready to accept connections. toont.
  • 401 of Unauthorized: het wachtwoord komt niet overeen met application.yml. Kopieer het opnieuw, zonder de aanhalingstekens.
  • Een SSL- of TLS-fout: secure staat aan in je client. Zet het uit, of gebruik http:// in plaats van https://.
  • Hij verbindt en speelt dan niets af: controleer eerst of je clientversie niet ouder is dan die in de tabel hierboven. Daarna: de bot heeft Verbinden en Spreken nodig in het voicekanaal, en de node heeft een bron nodig die kan afspelen wat je hebt gevraagd: Lavalink-fouten en wat ze betekenen.

Gebruik je nog een gratis publieke node? Publieke node of eigen node vergelijkt de opties.

Draait je bot al ergens anders? Verhuis hem naar ons

ONZE NIEUWSTE BLOGS