NUEVO 📢 Oferta de lanzamiento limitada: ¡hasta un 70% de descuento en tu primer mes, en todos los juegos!Ver planes

Cómo conectar tu bot de Discord a Lavalink

Hosting de LavalinkUpdated Nov 6, 20266 min read

Tu bot necesita tres valores de tu nodo de Lavalink: el host, el puerto y la contraseña. El host y el puerto son la Dirección en el Resumen del nodo; la contraseña está en application.yml. Tu librería cliente debe ser compatible con la versión 4 de Lavalink y con el cifrado de voz DAVE de Discord, y la opción segura (SSL) se queda desactivada.

  1. En el Resumen del servidor de Lavalink, copia la Dirección (host y puerto) y copia la contraseña de application.yml.
  2. En la pestaña Bot del servidor de tu bot, en Entorno, añade LAVALINK_HOST, LAVALINK_PORT y LAVALINK_PASSWORD.
  3. Añade el código cliente de tu librería (ejemplos más abajo), con la opción segura (SSL) desactivada.
  4. Reinicia el bot y comprueba que informa de que el nodo está conectado.

Cada paso se explica más abajo.

Lo que pide cualquier cliente

AjusteValor
HostLa parte de Dirección antes de los dos puntos, por ejemplo 203.0.113.10
PuertoEl número después de los dos puntos
ContraseñaEl password: bajo lavalink:, server: en application.yml
Seguro / SSLDesactivado: el nodo usa http y ws sin cifrar

Dónde encontrarlos: Cómo alojar un servidor de Lavalink 24/7.

application.yml abierto en el editor de archivos, con la línea de la contraseña bajo lavalink, server.

Usa una versión del cliente compatible con DAVE

Desde el 2 de marzo de 2026, Discord solo deja entrar en los canales de voz (excepto los canales de escenario) a los clientes de voz compatibles con su cifrado de extremo a extremo, el protocolo DAVE. Lavalink es compatible con DAVE desde la versión 4.2.0, y tu nodo ejecuta la 4.2.2. Según las notas de la versión 4.2.0 de Lavalink, el cliente también debe actualizarse: ahora tiene que enviar al nodo el ID del canal de voz. Una versión anterior del cliente sigue conectándose al nodo, pero Lavalink no puede abrir la conexión de voz, así que no suena nada. La versión que debes usar de cada cliente habitual, o cualquier posterior:

ClienteLenguajeUsa esta versión o posterior
ShoukakuNode.js4.3.0 (28 feb 2026)
lavalink-clientNode.js2.9.7 (2 mar 2026). El trabajo con DAVE empezó en la 2.9.3 (27 feb 2026); su autor llama a la 2.9.7 la primera versión importante con DAVE.
WavelinkPython3.5.1 (11 abr 2026)
Lavalink.pyPython5.10.0 (28 feb 2026)

Para otras librerías, la lista de clientes del propio Lavalink tiene una columna DAVE. Con un cliente antiguo, tu nodo responde a la actualización de voz con un error 400 que dice token, endpoint, sessionId and channelId must be provided in voice state. (Un bot que se conecta él mismo a la voz de Discord, sin Lavalink, recibe en su lugar el código de cierre 4017 de Discord, E2EE/DAVE protocol required.)

Mantén los valores fuera de tu código

Los ejemplos de abajo leen LAVALINK_HOST, LAVALINK_PORT y LAVALINK_PASSWORD del entorno. Si tu bot funciona en un plan de bots de PlayNHost:

  1. Abre la página Bot del servidor del bot y pulsa Entorno.
  2. En Añadir una variable, añade LAVALINK_HOST y LAVALINK_PORT. Añade LAVALINK_PASSWORD con Mantener este valor en secreto marcado.
  3. Reinicia el bot. Las variables le llegan cuando se inicia.

Más: Cómo definir variables de entorno y secretos para tu bot de Discord.

Node.js con Shoukaku

Paquetes: discord.js y shoukaku (4.3.0 o posterior).

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 documentación de Shoukaku muestra cómo unirse a un canal de voz y reproducir una canción cuando el nodo ya está conectado.

Paquetes: discord.py y wavelink (3.5.1 o posterior).

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 se ejecuta una vez, antes de que el bot se conecte; on_ready puede ejecutarse de nuevo tras cada reconexión, así que no conectes el nodo ahí.

Otros clientes

Cualquier cliente compatible con Lavalink 4 y DAVE funciona igual con los mismos tres valores, por ejemplo lavalink-client para discord.js o Lavalink.py para Python. Un cliente hecho para Lavalink 3 no puede hablar con un nodo de la versión 4.

No se conecta

  • Conexión rechazada o tiempo de espera agotado: el host o el puerto son incorrectos, o el nodo está detenido. Copia de nuevo la Dirección desde Resumen y comprueba que la consola muestre Lavalink is ready to accept connections.
  • 401 o Unauthorized: la contraseña no coincide con application.yml. Cópiala de nuevo sin las comillas.
  • Un error de SSL o TLS: la opción segura está activada en tu cliente. Desactívala, o usa http:// en lugar de https://.
  • Se conecta, pero no reproduce nada: primero comprueba que la versión de tu cliente no sea anterior a la de la tabla de arriba. Después: el bot necesita Connect y Speak en el canal de voz, y el nodo necesita una fuente que pueda reproducir lo que pediste: Errores de Lavalink y qué significan.

¿Sigues en un nodo público gratuito? Nodo público o tu propio nodo compara las opciones.

¿Ya tienes tu bot en otro proveedor? Tráelo con nosotros

NUESTROS ÚLTIMOS BLOGS