NOVO 📢 Oferta de lançamento limitada: até 70% de desconto no seu primeiro mês, em todos os jogos!Ver planos

Como conectar seu bot do Discord ao Lavalink

Hospedagem de LavalinkUpdated Nov 6, 20266 min read

Seu bot precisa de três valores do seu node Lavalink: o host, a porta e a senha. O host e a porta formam o Endereço na Visão geral do node; a senha está no application.yml. Sua biblioteca cliente precisa ser compatível com o Lavalink versão 4 e com a criptografia de voz DAVE do Discord, e a opção segura (SSL) fica desligada.

  1. Na Visão geral do servidor Lavalink, copie o Endereço (host e porta) e copie a senha do application.yml.
  2. Na aba Bot do servidor do seu bot, em Ambiente, adicione LAVALINK_HOST, LAVALINK_PORT e LAVALINK_PASSWORD.
  3. Adicione o código cliente da sua biblioteca (exemplos abaixo), com a opção segura (SSL) desligada.
  4. Reinicie o bot e confira se ele informa o node como conectado.

Cada etapa em detalhe abaixo.

O que todo cliente pede

ConfiguraçãoValor
HostA parte do Endereço antes dos dois-pontos, por exemplo 203.0.113.10
PortaO número depois dos dois-pontos
SenhaO password: em lavalink:, server: no application.yml
Secure / SSLDesligado: o node usa http e ws simples

Onde encontrá-los: Como hospedar um servidor Lavalink 24/7.

O application.yml aberto no editor de arquivos, com a linha da senha em lavalink, server.

Use uma versão do cliente compatível com o DAVE

Desde 2 de março de 2026, o Discord só deixa entrar nos canais de voz (exceto canais de palco) clientes de voz compatíveis com a sua criptografia de ponta a ponta, o protocolo DAVE. O Lavalink é compatível com o DAVE desde a versão 4.2.0, e o seu node roda a 4.2.2. Segundo as notas de lançamento do Lavalink 4.2.0, o cliente também precisa ser atualizado: agora ele tem que enviar ao node o ID do canal de voz. Uma versão mais antiga do cliente ainda se conecta ao node, mas o Lavalink não consegue abrir a conexão de voz, então nada toca. A versão que você deve usar em cada cliente comum, ou qualquer uma mais recente:

ClienteLinguagemUse esta versão ou mais recente
ShoukakuNode.js4.3.0 (28 fev. 2026)
lavalink-clientNode.js2.9.7 (2 mar. 2026). O trabalho com o DAVE começou na 2.9.3 (27 fev. 2026); o autor chama a 2.9.7 de primeira versão importante com DAVE.
WavelinkPython3.5.1 (11 abr. 2026)
Lavalink.pyPython5.10.0 (28 fev. 2026)

Para outras bibliotecas, a própria lista de clientes do Lavalink tem uma coluna DAVE. Com um cliente antigo, o seu node responde à atualização de voz com um erro 400 dizendo token, endpoint, sessionId and channelId must be provided in voice state. (Um bot que se conecta à voz do Discord por conta própria, sem o Lavalink, recebe em vez disso o código de fechamento 4017 do Discord, E2EE/DAVE protocol required.)

Mantenha os valores fora do seu código

Os exemplos abaixo leem LAVALINK_HOST, LAVALINK_PORT e LAVALINK_PASSWORD do ambiente. Se o seu bot roda em um plano de bot da PlayNHost:

  1. Abra a aba Bot do servidor do bot e clique em Ambiente.
  2. Em Adicionar uma variável, adicione LAVALINK_HOST e LAVALINK_PORT. Adicione LAVALINK_PASSWORD com Manter este valor em segredo marcado.
  3. Reinicie o bot. As variáveis chegam a ele quando ele inicia.

Mais: Como definir variáveis de ambiente e segredos para o seu bot do Discord.

Node.js com Shoukaku

Pacotes: discord.js e shoukaku (4.3.0 ou mais recente).

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);

A documentação do Shoukaku mostra como entrar em um canal de voz e tocar uma faixa depois que o node estiver conectado.

Pacotes: discord.py e wavelink (3.5.1 ou mais recente).

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"])

O setup_hook roda uma vez, antes de o bot se conectar; o on_ready pode rodar de novo a cada reconexão, então não conecte o node nele.

Outros clientes

Qualquer cliente compatível com o Lavalink 4 e com o DAVE funciona do mesmo jeito, com os mesmos três valores, por exemplo o lavalink-client para discord.js ou o Lavalink.py para Python. Um cliente feito para o Lavalink 3 não consegue falar com um node da versão 4.

Não conecta

  • Connection refused ou tempo esgotado: o host ou a porta está errado, ou o node está parado. Copie o Endereço de novo na Visão geral e confira se o console mostra Lavalink is ready to accept connections.
  • 401 ou Unauthorized: a senha não confere com a do application.yml. Copie de novo, sem as aspas.
  • Um erro de SSL ou TLS: a opção secure está ligada no seu cliente. Desligue-a, ou use http:// em vez de https://.
  • Conecta, mas não toca nada: confira primeiro se a versão do seu cliente não é mais antiga do que a da tabela acima. Depois: o bot precisa de Conectar (Connect) e Falar (Speak) no canal de voz, e o node precisa de uma fonte capaz de tocar o que você pediu: Erros do Lavalink e o que significam.

Ainda usa um node público grátis? Node público ou o seu próprio node compara as opções.

Seu bot já está em outro lugar? Traga-o para nós

NOSSOS ÚLTIMOS ARTIGOS