Al tuo bot servono tre valori del tuo nodo Lavalink: host, porta e password. Host e porta sono l'Indirizzo in Panoramica del nodo; la password è in application.yml. La tua libreria client deve supportare Lavalink versione 4 e la crittografia vocale DAVE di Discord, e l'opzione sicura (SSL) resta disattivata.
- In Panoramica del server Lavalink, copia l'Indirizzo (host e porta) e copia la password da
application.yml. - Nella pagina Bot del tuo server bot, Ambiente, aggiungi
LAVALINK_HOST,LAVALINK_PORTeLAVALINK_PASSWORD. - Aggiungi il codice client per la tua libreria (esempi qui sotto), con l'opzione sicura (SSL) disattivata.
- Riavvia il bot e controlla che segnali il nodo come connesso.
Ogni passaggio in dettaglio qui sotto.
Cosa chiede ogni client
| Impostazione | Valore |
|---|---|
| Host | La parte di Indirizzo prima dei due punti, per esempio 203.0.113.10 |
| Porta | Il numero dopo i due punti |
| Password | La password: sotto lavalink:, server: in application.yml |
| Sicuro / SSL | Disattivato: il nodo usa http e ws semplici |
Dove trovarli: Come ospitare un server Lavalink 24/7.

Usa una versione del client che supporta DAVE
Dal 2 marzo 2026 Discord ammette nei canali vocali (esclusi i canali stage) solo i client vocali che supportano la sua crittografia end-to-end, il protocollo DAVE. Lavalink supporta DAVE dalla versione 4.2.0, e il tuo nodo usa la 4.2.2. Secondo le note di rilascio di Lavalink 4.2.0, anche il client va aggiornato: ora deve inviare al nodo l'ID del canale vocale. Una versione più vecchia del client si connette ancora al nodo, ma Lavalink non riesce ad aprire la connessione vocale, quindi non si riproduce nulla. La versione da usare per ciascun client comune, o una più recente:
| Client | Linguaggio | Usa questa versione o una più recente |
|---|---|---|
| Shoukaku | Node.js | 4.3.0 (28 feb 2026) |
| lavalink-client | Node.js | 2.9.7 (2 mar 2026). Il lavoro su DAVE è iniziato nella 2.9.3 (27 feb 2026); il suo autore chiama la 2.9.7 la prima versione importante con DAVE. |
| Wavelink | Python | 3.5.1 (11 apr 2026) |
| Lavalink.py | Python | 5.10.0 (28 feb 2026) |
Per le altre librerie, l'elenco dei client di Lavalink ha una colonna DAVE. Con un client vecchio, il tuo nodo risponde all'aggiornamento vocale con un errore 400 che dice token, endpoint, sessionId and channelId must be provided in voice state. (Un bot che si collega da solo alla voce di Discord, senza Lavalink, riceve invece il codice di chiusura 4017 di Discord, E2EE/DAVE protocol required.)
Tieni i valori fuori dal tuo codice
Gli esempi qui sotto leggono LAVALINK_HOST, LAVALINK_PORT e LAVALINK_PASSWORD dall'ambiente. Se il tuo bot gira su un piano bot PlayNHost:
- Apri la pagina Bot del server bot e clicca su Ambiente.
- Sotto Aggiungi una variabile, aggiungi
LAVALINK_HOSTeLAVALINK_PORT. AggiungiLAVALINK_PASSWORDcon Tieni segreto questo valore spuntato. - Riavvia il bot. Le variabili gli arrivano quando parte.
Altro: Come impostare variabili d'ambiente e segreti per il tuo bot Discord.
Node.js con Shoukaku
Pacchetti: discord.js e shoukaku (4.3.0 o successiva).
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);La documentazione di Shoukaku mostra come entrare in un canale vocale e riprodurre un brano una volta che il nodo è connesso.
Python con Wavelink
Pacchetti: discord.py e wavelink (3.5.1 o successiva).
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 viene eseguito una sola volta, prima che il bot si connetta; on_ready può essere eseguito di nuovo dopo ogni riconnessione, quindi non connettere il nodo lì.
Altri client
Qualsiasi client che supporti Lavalink 4 e DAVE funziona allo stesso modo con gli stessi tre valori, per esempio lavalink-client per discord.js o Lavalink.py per Python. Un client scritto per Lavalink 3 non può comunicare con un nodo versione 4.
Non si connette
- Connessione rifiutata o timeout: host o porta sono sbagliati, oppure il nodo è fermo. Copia di nuovo l'Indirizzo da Panoramica e controlla che la console mostri
Lavalink is ready to accept connections. 401oUnauthorized: la password non corrisponde a quella inapplication.yml. Copiala di nuovo senza le virgolette.- Un errore SSL o TLS: l'opzione sicura è attiva nel tuo client. Disattivala, oppure usa
http://invece dihttps://. - Si connette, ma non riproduce nulla: controlla prima che la versione del tuo client non sia più vecchia di quella nella tabella qui sopra. Poi: il bot ha bisogno di Connetti e Parla nel canale vocale, e il nodo ha bisogno di una fonte in grado di riprodurre ciò che hai chiesto: Errori Lavalink e cosa significano.
Usi ancora un nodo pubblico gratuito? Nodo pubblico o nodo tuo confronta le opzioni.



