Como Criar um Bot de Música para Discord com Bypass de Áudio do YouTube
🔍 WiseChecker

Como Criar um Bot de Música para Discord com Bypass de Áudio do YouTube

Você quer criar um bot de música para Discord que reproduza áudio do YouTube, mas que consiga contornar bloqueios comuns como restrições regionais, conteúdo com restrição de idade ou medidas antibot do YouTube. Bibliotecas padrão como discord.py com yt-dlp podem falhar porque o YouTube muda sua API e políticas de reprodução com frequência. Este artigo mostra como construir um bot que usa yt-dlp com argumentos de extrator personalizados para contornar esses bloqueios e transmitir áudio de forma confiável. Você aprenderá a configurar um bot funcional do zero, lidar com erros comuns e manter a estabilidade da reprodução.

Principais Conclusões: Criando um Bot de Música para Discord com Bypass do YouTube

  • yt-dlp com argumentos de extrator personalizados: Use --extractor-args "youtube:skip=webpage;player_client=android" para contornar as restrições baseadas na web do YouTube.
  • Cliente de voz do discord.py: Use discord.FFmpegPCMAudio para transmitir o áudio da saída do yt-dlp para um canal de voz.
  • Token do bot e intents: Ative os intents message_content e voice_states no Portal do Desenvolvedor do Discord para funcionalidade de comandos e voz.

ADVERTISEMENT

Como Funciona o Bypass da Fonte de Áudio do YouTube

Tradicionalmente, bots de música do Discord obtêm áudio baixando ou transmitindo do YouTube por meio de uma biblioteca como youtube-dl ou yt-dlp. O YouTube bloqueia ativamente essas requisições verificando o cabeçalho User-Agent, exigindo cookies ou exibindo CAPTCHAs para clientes que não são navegadores. O método de bypass usa os argumentos de extrator do yt-dlp para simular um cliente móvel Android, que o YouTube trata de forma diferente e permite streaming de áudio irrestrito sem uma sessão de navegador.

A técnica principal é passar --extractor-args "youtube:skip=webpage;player_client=android" para o yt-dlp. Isso instrui o extrator a pular a análise da página web e usar o cliente de player Android, que retorna uma URL de streaming de áudio direta que não requer cookies ou cabeçalhos de navegador. O bot então envia esse stream para o Discord via FFmpeg.

Pré-requisitos

Antes de construir o bot, certifique-se de ter o seguinte software instalado em sua máquina Windows 11 ou Windows 10:

  • Python 3.8 ou mais recente
  • FFmpeg (adicione ao PATH do sistema)
  • Um token de bot do Discord obtido no Portal do Desenvolvedor do Discord
  • A biblioteca discord.py versão 2.3 ou posterior
  • A versão mais recente do yt-dlp

Construindo o Bot: Código e Passos de Configuração

Siga estes passos para criar um bot de música funcional para Discord que reproduza áudio do YouTube com o método de bypass.

  1. Crie o aplicativo do bot no Portal do Desenvolvedor do Discord
    Acesse o Portal do Desenvolvedor do Discord, clique em New Application, dê um nome e vá para a seção Bot. Clique em Reset Token e copie o token. Em Privileged Gateway Intents, ative Server Members Intent, Message Content Intent e Voice States Intent. Salve as alterações.
  2. Instale as bibliotecas Python necessárias
    Abra um terminal e execute pip install discord.py yt-dlp. Isso instala o wrapper da API do Discord e a biblioteca de download do YouTube. Se precisar de reprodução de áudio, instale também PyNaCl executando pip install PyNaCl.
  3. Escreva o script do bot
    Crie um arquivo chamado music_bot.py e cole o seguinte código:
import discord
from discord.ext import commands
import yt_dlp as youtube_dl

intents = discord.Intents.default()
intents.message_content = True
intents.voice_states = True

bot = commands.Bot(command_prefix='!', intents=intents)

@bot.event
async def on_ready():
    print(f'{bot.user} conectou ao Discord!')

@bot.command()
async def play(ctx, url):
    if not ctx.author.voice:
        await ctx.send("Você não está conectado a um canal de voz.")
        return
    channel = ctx.author.voice.channel
    voice_client = await channel.connect()

    ydl_opts = {
        'format': 'bestaudio/best',
        'postprocessors': [{
            'key': 'FFmpegExtractAudio',
            'preferredcodec': 'mp3',
            'preferredquality': '192',
        }],
        'extractor_args': 'youtube:skip=webpage;player_client=android',
        'quiet': True,
        'no_warnings': True,
    }

    with youtube_dl.YoutubeDL(ydl_opts) as ydl:
        info = ydl.extract_info(url, download=False)
        url2 = info['url']
        source = await discord.FFmpegOpusAudio.from_probe(url2)
        voice_client.play(source)

@bot.command()
async def stop(ctx):
    if ctx.voice_client:
        await ctx.voice_client.disconnect()

bot.run('SEU_TOKEN_DO_BOT')
  1. Substitua o token do bot e execute o bot
    No script, substitua 'SEU_TOKEN_DO_BOT' pelo token que você copiou do Portal do Desenvolvedor. Salve o arquivo. No terminal, execute python music_bot.py. O bot ficará online e responderá ao comando !play em qualquer canal de texto.
  2. Convide o bot para seu servidor Discord
    No Portal do Desenvolvedor, vá em OAuth2 > URL Generator. Selecione o escopo bot e as permissões Send Messages, Connect e Speak. Use a URL gerada para adicionar o bot ao seu servidor.
  3. Teste o bot
    Entre em um canal de voz no seu servidor. Em qualquer canal de texto, digite !play https://www.youtube.com/watch?v=ID_DO_VIDEO. O bot deve entrar no canal de voz e começar a reproduzir o áudio do vídeo do YouTube.

ADVERTISEMENT

Se o Bot Ainda Tiver Problemas Após a Configuração Principal

Mesmo com o bypass, você pode encontrar problemas. Abaixo estão as falhas mais comuns e suas correções.

O Bot Entra no Canal de Voz mas Não Reproduz Áudio

Isso geralmente acontece quando o FFmpeg não está instalado ou não está no PATH do sistema. Baixe o FFmpeg do site oficial, extraia a pasta bin e adicione o caminho completo à variável de ambiente PATH do Windows. Reinicie o terminal e o bot. Alternativamente, especifique o caminho do FFmpeg diretamente no código adicionando ffmpeg_location='C:\caminho\para\ffmpeg.exe' dentro de FFmpegOpusAudio.from_probe.

O Bot Não Entra no Canal de Voz

Verifique se o bot tem as permissões Connect e Speak no canal de voz. Também confirme se os intents do bot estão ativados no Portal do Desenvolvedor. Se o bot ainda falhar, reinicie o bot e o cliente do Discord.

YouTube Retorna Erro 403 Forbidden ou Conteúdo com Restrição de Idade

O bypass com player_client=android pode falhar para vídeos com restrição de idade. Adicione o argumento --age-limit 18 no dicionário ydl_opts: 'age_limit': 18. Para erros 403, atualize o yt-dlp para a versão mais recente com pip install -U yt-dlp.

Comparação dos Métodos de Fonte de Áudio do YouTube

Item yt-dlp padrão (sem bypass) Bypass com player_client=android
Extração da fonte de áudio Usa análise da página web, requer cookies URL de áudio direta, sem necessidade de cookies
Bloqueado pelo YouTube Frequentemente bloqueado para clientes que não são navegadores Raramente bloqueado, imita o aplicativo Android
Conteúdo com restrição de idade Falha com erro 403 Pode ainda falhar, requer argumento age_limit
Complexidade de configuração Simples, mas frequentemente quebra Um pouco mais de código, mas estável a longo prazo

Agora você tem um bot de música para Discord que pode reproduzir áudio do YouTube usando o método de bypass do cliente Android. Essa abordagem reduz a chance de o YouTube bloquear seu bot e oferece uma experiência de streaming mais confiável. Em seguida, considere adicionar um sistema de fila usando asyncio.Queue para permitir múltiplas solicitações de música. Uma dica avançada é armazenar a URL de áudio extraída em uma variável e reutilizá-la se o bot desconectar e reconectar, evitando chamadas de extração repetidas.

ADVERTISEMENT