Bot de música do Discord parou de tocar YouTube: o que mudou

Bots de música pararam de tocar YouTube porque o YouTube bloqueia acesso automatizado e as bibliotecas de extração quebram ou foram descontinuadas. Não existe correção permanente: só contornos frágeis ou outras fontes.

Atualizado em 6 min de leitura

Objetivos de aprendizado

Depois de ler este artigo, você vai conseguir:

  • Entender por que o YouTube parou de funcionar em bots de música
  • Identificar qual erro e qual biblioteca o seu bot usa
  • Escolher entre contornos frágeis e fontes de áudio alternativas
Nesta página

Se o seu bot de música tocava YouTube sem problemas e de repente passou a responder com erro, a falha quase nunca está no seu código. O YouTube não oferece uma forma oficial de bots do Discord retirarem áudio dele, então todo bot de música depende de bibliotecas que imitam o comportamento de um cliente do YouTube. Quando o YouTube muda algo, elas quebram.

O tema é volátil: antes de agir, confirme o estado atual na documentação da sua biblioteca.

/playBot ouLavalinkYouTubeÁudio tocaBloqueio“not a bot”FormatoindisponívelouOutra fonteSoundCloud, Bandcamp, links HTTP
Cada pedido ao YouTube pode tocar ou ser bloqueado, e o conserto é frágil; outras fontes não passam por esse bloqueio.

Por que o bot parou de tocar YouTube?#

Três fatores se somam.

  1. Termos de uso. Os termos do YouTube proíbem acessar o serviço por meios automatizados (robôs, botnets, scrapers) sem permissão prévia por escrito. Também proíbem burlar ou interferir em recursos de segurança do serviço e baixar conteúdo, salvo quando o serviço permite. Em 2021, após pedidos do Google, bots grandes como o Groovy e o Rythm encerraram as operações (Groovy e Rythm, no The Verge).
  2. Detecção de automação. O YouTube sinaliza requisições que parecem automatizadas e responde com bloqueios como o pedido de login.
  3. Mudanças nos clientes e na decifragem. As bibliotecas se passam por clientes do YouTube (web, Android, TV) e resolvem desafios em JavaScript. Quando um cliente deixa de funcionar, a biblioteca quebra até alguém publicar uma correção.

Qual é o erro que aparece?#

O sintoma muda conforme a biblioteca. O mais comum:

text
Sign in to confirm you're not a bot

É o bloqueio de automação. O README do youtube-source, o plugin de YouTube do Lavalink, descreve exatamente esse caso e diz que OAuth e poToken podem ajudar, mas não são correção garantida.

Outros sinais: busca que retorna vazio, faixa que carrega e termina em segundos, ou o bot entra no canal de voz e fica mudo. Como cada biblioteca reporta de um jeito, o diagnóstico começa por descobrir qual delas você usa.

Como descobrir qual biblioteca o bot usa?#

Se o seu projeto usa Situação
discord-player v7 O extrator de YouTube foi removido. A documentação diz que a reprodução do YouTube foi descontinuada "devido à frequente quebra das bibliotecas de extração". A biblioteca ainda detecta links, mas não toca nem extrai metadados.
Lavalink com a fonte de YouTube embutida Desativada nas configurações recomendadas e substituída pelo plugin youtube-source.
Lavalink com youtube-source Atualize o plugin e revise a lista de clientes.
yt-dlp (direto ou via wrapper) Atualize o yt-dlp e instale um runtime JavaScript.
Pacotes antigos de extração sem manutenção Troque por uma das opções acima ou por outra fonte.

Esta seção e a próxima resumem o que a documentação de cada projeto diz. Nenhum desses ajustes torna o uso compatível com os termos do YouTube.

Se você usa Lavalink v4, desative a fonte embutida (a documentação do Lavalink a marca como obsoleta) e use o plugin. Troque VERSION pela versão mostrada na aba Releases do youtube-source:

yaml
lavalink:
  server:
    password: "troque-esta-senha"
    sources:
      youtube: false
  plugins:
    - dependency: "dev.lavalink.youtube:youtube-plugin:VERSION"
      snapshot: false

plugins:
  youtube:
    enabled: true
    allowSearch: true
    allowDirectVideoIds: true
    allowDirectPlaylistIds: true
    clients:
      - MUSIC
      - ANDROID_VR
      - WEB
      - WEBEMBEDDED

Os clientes são consultados na ordem da lista. Alguns pontos da documentação do plugin:

  • O MUSIC serve só para busca (prefixo ytmsearch:), não para tocar.
  • O cliente ANDROID é descrito como muito restrito e frequentemente quebrado. Prefira ANDROID_VR e os demais. O TV exige login para tocar.
  • O TVHTML5EMBEDDED foi removido na versão 1.18.0 porque deixou de funcionar para reprodução. O TVHTML5_SIMPLY entrou no lugar.
  • O poToken vale só para WEB e WEBEMBEDDED. O OAuth vale só para TV. Você não precisa de um se usa o outro.
  • Há suporte a decifragem remota (remoteCipher), com um servidor separado, o yt-cipher.

Depois de mudar o application.yml, reinicie o Lavalink e leia os logs para ver qual cliente falhou.

Como tentar corrigir com yt-dlp?#

O yt-dlp passou a exigir um runtime JavaScript para resolver os desafios do YouTube, por meio dos scripts do projeto EJS. O Deno é o recomendado e vem habilitado por padrão; o Node.js também funciona se for habilitado com --js-runtimes. As versões mínimas de cada runtime estão na documentação.

Quando os clientes padrão falham, a página de extratores sugere o cliente mweb com um PO Token, que o yt-dlp não consegue gerar sozinho (wiki).

Vale a pena usar cookies ou OAuth?#

É o contorno mais citado e o mais arriscado. O youtube-source avisa que o OAuth pode levar ao encerramento da conta, recomenda contas descartáveis e alerta que, sob tráfego alto, ele pode gerar erros de limite. O yt-dlp diz que usar sua conta aumenta o risco de banimento. Nunca use a sua conta pessoal.

Um ponto que código nenhum resolve: a questão dos termos de uso continua existindo. Operar um bot público que retira áudio do YouTube é uma decisão com risco, e é responsabilidade de quem opera o bot.

Quais alternativas existem?#

  • Outras fontes no Lavalink, como SoundCloud, Bandcamp, Twitch, Vimeo e links HTTP, que o servidor já traz (configuração do Lavalink). Cada serviço tem os próprios termos de uso.
  • Arquivos próprios ou links diretos de áudio que você tem direito de tocar.
  • Serviços com API oficial de áudio, respeitando os termos de cada um.
  • Aceitar a fragilidade: manter o plugin atualizado, monitorar o bot e avisar os usuários quando o YouTube falhar.

Fixe uma versão do plugin ou da biblioteca em produção e acompanhe os releases. Quando o YouTube mudar de novo, o conserto costuma sair como um release novo, e o seu trabalho é aplicá-lo. Para entender a peça de áudio por trás disso, veja o que é Lavalink.

Como fazer isso na Square Cloud#

Na Square Cloud, o bot de música roda como qualquer bot do Discord: você faz o deploy por ZIP no painel, CLI, GitHub ou extensão do VS Code, com discord.js, discord.py, JDA ou outra biblioteca de Gateway. Há suporte a voz e o FFmpeg está disponível no container.

O Lavalink roda como uma aplicação web separada na mesma conta (a partir de 512 MB), e o bot se conecta ao subdomínio dela na porta 443, com conexão segura (secure: true). Assim você atualiza o plugin do YouTube reiniciando só o Lavalink. A RAM do plano é um pool compartilhado entre as aplicações, com mínimo de 256 MB por aplicação de fundo. As variáveis de ambiente (como a senha do Lavalink) ficam no painel e valem no próximo restart.

Nada disso muda o que o YouTube decide bloquear: a hospedagem mantém o processo no ar, mas o que o bot faz com o YouTube continua sendo responsabilidade de quem o opera. Para o passo a passo do deploy, veja como hospedar um bot discord.js. Para conhecer os recursos para bots, acesse a página de bots de Discord na Square Cloud.

Hospedagem de bots

Seu bot online 24/7, com reinício automático

Saiba mais

Perguntas frequentes

Por que meu bot de música do Discord não toca mais YouTube?

O YouTube bloqueia requisições automatizadas e muda seus clientes com frequência, o que quebra as bibliotecas que extraem o áudio. Em alguns casos a biblioteca foi descontinuada, como o extrator de YouTube do discord-player v7.

O que significa 'Sign in to confirm you're not a bot'?

É o bloqueio do YouTube a requisições que ele classifica como automatizadas. Os projetos de Lavalink e yt-dlp citam OAuth e poToken como contornos, mas nenhum é garantido.

Atualizar a biblioteca resolve?

Às vezes, quando o problema é uma mudança que já foi corrigida num release novo. Se a biblioteca foi descontinuada, atualizar não ajuda: é preciso trocar de solução ou de fonte.

Usar uma conta do Google no bot é seguro?

Não. O próprio youtube-source avisa que o login por OAuth pode levar ao banimento da conta e recomenda contas descartáveis. O yt-dlp faz um aviso parecido sobre cookies.

Próximo artigoComo hospedar a Evolution API (WhatsApp)Para hospedar a Evolution API você precisa de Node.js, PostgreSQL ou MySQL, Redis e um processo sempre ligado. Veja o passo a passo, do .env ao primeiro envio.