Objetivos de aprendizaje
Después de leer este artículo podrás:
- Entender por qué YouTube dejó de funcionar en los bots de música
- Identificar qué error y qué librería usa tu bot
- Elegir entre soluciones frágiles y fuentes de audio alternativas
Si tu bot de música reproducía YouTube sin problemas y de repente empezó a devolver errores, el fallo casi nunca está en tu código. YouTube no ofrece una forma oficial para que los bots de Discord saquen audio de su plataforma, así que todo bot de música depende de librerías que imitan a un cliente de YouTube. Cuando YouTube cambia algo, se rompen.
El tema es volátil: antes de actuar, confirma el estado actual en la documentación de tu librería.
¿Por qué el bot dejó de reproducir YouTube?#
Se suman tres factores.
- Términos de servicio. Los términos de YouTube prohíben acceder al servicio por medios automatizados (robots, botnets, scrapers) sin permiso previo por escrito. También prohíben eludir o interferir con las funciones de seguridad del servicio y descargar contenido salvo que el servicio lo permita. En 2021, tras pedidos de Google, bots grandes como Groovy y Rythm cerraron (Groovy y Rythm, en The Verge).
- Detección de automatización. YouTube marca las peticiones que parecen automatizadas y responde con bloqueos como la solicitud de inicio de sesión.
- Cambios en los clientes y en el descifrado. Las librerías se hacen pasar por clientes de YouTube (web, Android, TV) y resuelven desafíos en JavaScript. Cuando un cliente deja de funcionar, la librería se rompe hasta que alguien publica una corrección.
¿Qué error aparece?#
El síntoma cambia según la librería. El más común:
Sign in to confirm you're not a botEs el bloqueo de automatización. El README de youtube-source, el plugin de YouTube de Lavalink, describe justo este caso y dice que OAuth y poToken pueden ayudar, pero no son una solución garantizada.
Otras señales: búsquedas que devuelven vacío, pistas que cargan y terminan en segundos, o el bot que entra al canal de voz y se queda mudo. Como cada librería reporta los errores de forma distinta, el diagnóstico empieza por saber cuál usas.
¿Cómo saber qué librería usa el bot?#
| Si tu proyecto usa | Situación |
|---|---|
| discord-player v7 | Se eliminó el extractor de YouTube. La documentación dice que la reproducción de YouTube se descontinuó "debido a la frecuente rotura de las librerías de extracción". La librería aún detecta enlaces, pero no reproduce ni extrae metadatos. |
| Lavalink con la fuente de YouTube integrada | Se desactiva en la configuración recomendada y se reemplaza por el plugin youtube-source. |
| Lavalink con youtube-source | Actualiza el plugin y revisa la lista de clientes. |
| yt-dlp (directo o con un wrapper) | Actualiza yt-dlp e instala un runtime de JavaScript. |
| Paquetes de extracción antiguos sin mantenimiento | Cambia a una de las opciones anteriores o a otra fuente. |
¿Cómo intentar arreglarlo con Lavalink?#
Esta sección y la siguiente resumen lo que dice la documentación de cada proyecto. Ninguno de estos ajustes hace que el uso sea compatible con los términos de YouTube.
Si usas Lavalink v4, desactiva la fuente integrada (la documentación de Lavalink la marca como obsoleta) y usa el plugin. Cambia VERSION por la versión de la pestaña Releases de youtube-source:
lavalink:
server:
password: "cambia-esta-clave"
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
- WEBEMBEDDEDLos clientes se consultan en el orden de la lista. Algunos puntos de la documentación del plugin:
MUSICsolo sirve para buscar (prefijoytmsearch:), no para reproducir.- El cliente
ANDROIDse describe como muy restringido y que falla con frecuencia. PrefiereANDROID_VRy los demás.TVexige iniciar sesión para reproducir. TVHTML5EMBEDDEDse eliminó en la versión 1.18.0 porque ya no sirve para reproducir.TVHTML5_SIMPLYocupó su lugar.- El poToken solo vale para
WEByWEBEMBEDDED. OAuth solo vale paraTV. No necesitas uno si usas el otro. - Hay soporte de descifrado remoto (
remoteCipher), con un servidor aparte, yt-cipher.
Tras cambiar el application.yml, reinicia Lavalink y lee los logs para ver qué cliente falló.
¿Cómo intentar arreglarlo con yt-dlp?#
yt-dlp pasó a exigir un runtime de JavaScript para resolver los desafíos de YouTube, mediante los scripts del proyecto EJS. Se recomienda Deno, que viene habilitado por defecto; Node.js también funciona si lo habilitas con --js-runtimes. La versión mínima de cada runtime está en la documentación.
Cuando los clientes por defecto fallan, la página de extractores sugiere el cliente mweb con un PO Token, que yt-dlp no puede generar por sí solo (wiki).
¿Vale la pena usar cookies u OAuth?#
Es la solución más citada y la más arriesgada. youtube-source advierte que OAuth puede terminar en el cierre de la cuenta, recomienda cuentas desechables y dice que con mucho tráfico puede provocar errores de límite. yt-dlp indica que usar tu cuenta aumenta el riesgo de bloqueo. Nunca uses tu cuenta personal.
Hay algo que ningún código resuelve: el tema de los términos de servicio sigue ahí. Operar un bot público que saca audio de YouTube es una decisión con riesgo, y la responsabilidad es de quien opera el bot.
¿Qué alternativas hay?#
- Otras fuentes en Lavalink, como SoundCloud, Bandcamp, Twitch, Vimeo y enlaces HTTP, que el servidor ya incluye (configuración de Lavalink). Cada servicio tiene sus propios términos de uso.
- Archivos propios o enlaces directos de audio que tengas derecho a reproducir.
- Servicios con API oficial de audio, respetando los términos de cada uno.
- Aceptar la fragilidad: mantener el plugin actualizado, monitorear el bot y avisar a los usuarios cuando YouTube falle.
Fija una versión del plugin o de la librería en producción y sigue los releases. Cuando YouTube vuelva a cambiar, el arreglo suele salir como un release nuevo y tu trabajo es aplicarlo. Para entender la pieza de audio detrás de todo esto, mira qué es Lavalink.
Cómo hacerlo en Square Cloud#
En Square Cloud el bot de música corre como cualquier bot de Discord: haces el deploy por ZIP en el panel, CLI, GitHub o la extensión de VS Code, con discord.js, discord.py, JDA u otra librería de Gateway. Hay soporte de voz y FFmpeg está disponible en el contenedor.
Lavalink corre como una aplicación web separada en la misma cuenta (desde 512 MB), y el bot se conecta a su subdominio por el puerto 443, con conexión segura (secure: true). Así actualizas el plugin de YouTube reiniciando solo Lavalink. La RAM del plan es un pool compartido entre las aplicaciones, con un mínimo de 256 MB por aplicación en segundo plano. Las variables de entorno (como la contraseña de Lavalink) se definen en el panel y rigen desde el próximo reinicio.
Nada de esto cambia lo que YouTube decida bloquear: el hosting mantiene el proceso encendido, pero lo que el bot hace con YouTube sigue siendo responsabilidad de quien lo opera. Para el paso a paso del deploy, mira cómo alojar un bot de discord.js y la página de bots de Discord en Square Cloud.
Hosting de bots
Tu bot en línea 24/7, con reinicio automático
Preguntas frecuentes
¿Por qué mi bot de música de Discord ya no reproduce YouTube?
YouTube bloquea las peticiones automatizadas y cambia sus clientes con frecuencia, lo que rompe las librerías que extraen el audio. En algunos casos la librería se descontinuó, como el extractor de YouTube de discord-player v7.
¿Qué significa 'Sign in to confirm you're not a bot'?
Es el bloqueo de YouTube a las peticiones que clasifica como automatizadas. Los proyectos de Lavalink y yt-dlp mencionan OAuth y poToken como soluciones, pero ninguna está garantizada.
¿Actualizar la librería lo arregla?
A veces, cuando el fallo es un cambio que ya se corrigió en una versión nueva. Si la librería se descontinuó, actualizar no sirve: hay que cambiar de solución o de fuente.
¿Es seguro usar una cuenta de Google en el bot?
No. El propio youtube-source advierte que el inicio de sesión por OAuth puede llevar al cierre de la cuenta y recomienda cuentas desechables. yt-dlp advierte algo parecido sobre las cookies.
Más en Bots
Ver los 33 artículos- ¿Cuánto cuesta hospedar un bot de Discord?El costo de hospedar un bot de Discord depende de la RAM, el tiempo en línea, la base de datos y los servicios externos. Aprende a estimar el tuyo.
- Correr un bot en el celular (Termux) o en tu PC vs hospedarloUn bot en tu PC o celular (Termux) se cae cuando el equipo se apaga, se suspende o pierde la red. Compara las tres opciones y cuándo sirve cada una.
- Cómo mantener tu bot de Discord en línea 24/7Para mantener un bot de Discord en línea 24/7, ejecuta el proceso en una máquina siempre encendida con reinicio automático. Compara PC, VPS con pm2 o systemd.
- Por qué tu bot de Discord se apaga o aparece offlineUn bot de Discord aparece offline cuando el proceso se cae, el token es inválido, falta una intent o se acaba la memoria. Diagnostica y corrige cada causa.