Twój bot potrzebuje trzech wartości z twojego noda Lavalink: hosta, portu i hasła. Host i port to Adres na stronie Przegląd noda; hasło jest w application.yml. Twoja biblioteka kliencka musi obsługiwać Lavalink w wersji 4 oraz szyfrowanie głosu DAVE od Discorda, a opcja bezpiecznego połączenia (SSL) zostaje wyłączona.
- Na stronie Przegląd serwera Lavalink skopiuj Adres (host i port) oraz hasło z
application.yml. - Na stronie Bot serwera bota, w sekcji Środowisko, dodaj
LAVALINK_HOST,LAVALINK_PORTiLAVALINK_PASSWORD. - Dodaj kod klienta dla swojej biblioteki (przykłady poniżej), z wyłączoną opcją bezpiecznego połączenia (SSL).
- Zrestartuj bota i sprawdź, czy zgłasza node jako połączony.
Każdy krok szczegółowo poniżej.
O co pyta każdy klient
| Ustawienie | Wartość |
|---|---|
| Host | Część pola Adres przed dwukropkiem, na przykład 203.0.113.10 |
| Port | Liczba po dwukropku |
| Hasło | password: w lavalink:, server: w application.yml |
| Secure / SSL | Wyłączone: node używa zwykłego http i ws |
Gdzie je znaleźć: Jak hostować serwer Lavalink 24/7.

Użyj wersji klienta, która obsługuje DAVE
Od 2 marca 2026 Discord wpuszcza na kanały głosowe (z wyjątkiem kanałów typu stage) tylko klientów głosowych obsługujących jego szyfrowanie od końca do końca, czyli protokół DAVE. Lavalink obsługuje DAVE od wersji 4.2.0, a twój node działa na 4.2.2. Według informacji o wydaniu Lavalink 4.2.0 klient też musi zostać zaktualizowany: teraz musi wysyłać do noda ID kanału głosowego. Starsza wersja klienta nadal łączy się z nodem, ale Lavalink nie może otworzyć połączenia głosowego, więc nic nie gra. Wersja, której użyć w każdym popularnym kliencie, albo dowolna nowsza:
| Klient | Język | Użyj tej wersji lub nowszej |
|---|---|---|
| Shoukaku | Node.js | 4.3.0 (28 lut 2026) |
| lavalink-client | Node.js | 2.9.7 (2 mar 2026). Prace nad DAVE zaczęły się w 2.9.3 (27 lut 2026); jej autor nazywa 2.9.7 pierwszym dużym wydaniem z DAVE. |
| Wavelink | Python | 3.5.1 (11 kwi 2026) |
| Lavalink.py | Python | 5.10.0 (28 lut 2026) |
Dla innych bibliotek lista klientów samego Lavalink ma kolumnę DAVE. Ze starszym klientem twój node odpowiada na aktualizację głosu błędem 400 z komunikatem token, endpoint, sessionId and channelId must be provided in voice state. (Bot, który łączy się z głosem Discorda sam, bez Lavalink, dostaje zamiast tego kod zamknięcia Discorda 4017, E2EE/DAVE protocol required.)
Trzymaj wartości poza kodem
Poniższe przykłady czytają LAVALINK_HOST, LAVALINK_PORT i LAVALINK_PASSWORD ze środowiska. Jeśli twój bot działa na planie dla botów PlayNHost:
- Otwórz stronę Bot serwera bota i kliknij Środowisko.
- W sekcji Dodaj zmienną dodaj
LAVALINK_HOSTiLAVALINK_PORT. DodajLAVALINK_PASSWORDz zaznaczonym Zachowaj tę wartość w tajemnicy. - Zrestartuj bota. Zmienne trafiają do niego przy starcie.
Więcej: Jak ustawić zmienne środowiskowe i sekrety dla bota Discord.
Node.js z Shoukaku
Pakiety: discord.js i shoukaku (4.3.0 lub nowsza).
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);
Dokumentacja Shoukaku pokazuje, jak wejść na kanał głosowy i odtworzyć utwór, gdy node jest połączony.
Python z Wavelink
Pakiety: discord.py i wavelink (3.5.1 lub nowsza).
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 uruchamia się raz, zanim bot się połączy; on_ready może uruchomić się ponownie po każdym ponownym połączeniu, więc nie łącz tam noda.
Inne klienty
Każdy klient obsługujący Lavalink 4 i DAVE działa tak samo, z tymi samymi trzema wartościami, na przykład lavalink-client dla discord.js albo Lavalink.py dla Pythona. Klient napisany dla Lavalink 3 nie dogada się z nodem w wersji 4.
Nie łączy się
- Connection refused albo przekroczony czas: host lub port jest błędny albo node jest zatrzymany. Skopiuj Adres ze strony Przegląd jeszcze raz i sprawdź, czy Console pokazuje
Lavalink is ready to accept connections. 401alboUnauthorized: hasło nie zgadza się zapplication.yml. Skopiuj je jeszcze raz, bez cudzysłowów.- Błąd SSL lub TLS: w twoim kliencie włączone jest połączenie bezpieczne. Wyłącz je albo użyj
http://zamiasthttps://. - Łączy się, a potem nic nie gra: najpierw sprawdź, czy wersja twojego klienta nie jest starsza niż ta z tabeli powyżej. Potem: bot potrzebuje Łączenie i Mówienie na kanale głosowym, a node potrzebuje źródła, które odtworzy to, o co prosisz: Błędy Lavalink i co oznaczają.
Nadal używasz darmowego publicznego noda? Publiczny node czy własny node porównuje opcje.



