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
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.
Por que o bot parou de tocar YouTube?#
Três fatores se somam.
- 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).
- Detecção de automação. O YouTube sinaliza requisições que parecem automatizadas e responde com bloqueios como o pedido de login.
- 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:
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. |
Como tentar corrigir com Lavalink?#
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:
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
- WEBEMBEDDEDOs clientes são consultados na ordem da lista. Alguns pontos da documentação do plugin:
- O
MUSICserve só para busca (prefixoytmsearch:), não para tocar. - O cliente
ANDROIDé descrito como muito restrito e frequentemente quebrado. PrefiraANDROID_VRe os demais. OTVexige login para tocar. - O
TVHTML5EMBEDDEDfoi removido na versão 1.18.0 porque deixou de funcionar para reprodução. OTVHTML5_SIMPLYentrou no lugar. - O poToken vale só para
WEBeWEBEMBEDDED. O OAuth vale só paraTV. 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
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.
Mais em Bots
Ver todos os 33 artigos- Quanto custa hospedar um bot do Discord?O custo de hospedar um bot do Discord depende de RAM, tempo online, banco de dados e serviços externos. Veja como estimar o seu e onde o gasto aparece.
- Rodar bot no celular (Termux) ou no PC vs hospedar: o que mudaUm bot no PC ou no celular (Termux) fica offline quando o aparelho desliga, dorme ou perde a rede. Compare as três opções e veja quando cada uma serve.
- Como deixar um bot do Discord online 24/7Para deixar um bot do Discord online 24/7, rode o processo numa máquina sempre ligada com reinício automático. Veja PC, VPS com pm2 ou systemd e hospedagem.
- Por que meu bot do Discord fica offline (e como resolver)Bot do Discord offline quase sempre é processo caído, token inválido, intent não habilitada ou falta de memória. Veja como diagnosticar cada causa e corrigir.