Saltar al contenido principal
Los errores de bots de Discord en Square Cloud suelen deberse al token, a los intents del gateway, o a una incompatibilidad de versión con Lavalink. Compara el mensaje exacto de abajo.

”LoginFailure: Improper token has been passed” / TOKEN_INVALID

Qué significa: la librería rechaza el token con el que intentas iniciar sesión (discord.js lanza LoginFailure/“An invalid token was provided”; otros stacks muestran un 401 TOKEN_INVALID). Por qué ocurre:
  • El token fue regenerado o revocado en el Discord Developer Portal. Generar un token nuevo invalida al instante el anterior en todos los lugares donde se usaba.
  • El string del token tiene espacios o comillas extra copiadas por accidente.
  • El código está leyendo la variable de entorno equivocada.
Cómo solucionarlo:
  1. Ve al Developer Portal → tu aplicación → BotReset Token.
  2. Actualiza el token en las Variables de Entorno de esta aplicación en el dashboard de Square Cloud. Nunca subas el token en un archivo que se incluya en el .zip.
  3. Verifica que no haya espacios o comillas de más alrededor del valor.
  4. Actualiza la librería (discord.js@latest o pip install -U discord.py).
  5. Reinicia la aplicación.
Nunca hardcodees el token de tu bot en archivos de código fuente. Léelo siempre desde una variable de entorno configurada en el dashboard.

”Used disallowed intents” / Message Content Intent

Qué significa: el bot inicia sesión y aparece online, pero ignora todos los mensajes, o el gateway rechaza la conexión con “used disallowed intents”. Por qué ocurre: desde 2022, Message Content es un intent privilegiado. Sin habilitarlo explícitamente en ambos lugares, el contenido del mensaje llega vacío (o la conexión del gateway se rechaza si tu código declara un intent que no está habilitado para la aplicación). Cómo solucionarlo, en ambos lugares:
  1. Discord Developer Portal → tu aplicación → BotPrivileged Gateway Intents → habilita Message Content Intent.
  2. Decláralo también en el código:
  1. Reinicia la aplicación.
Una vez que un bot supera los 100 servidores, los intents privilegiados (incluido Message Content) también requieren aprobación de Discord, solicitada desde la misma página del Developer Portal.
Qué significa: el cliente de Lavalink del bot cierra el WebSocket de forma anormal con el código 1006, a menudo precedido por “Unexpected server response: 400”. Por qué ocurre: esto es una incompatibilidad de versiones. Lavalink v4 está basado en REST y es incompatible con un wrapper de cliente construido para v3, por lo que el handshake falla y el socket se cierra con 1006. Cómo solucionarlo:
  1. Alinea la versión del wrapper de cliente de Lavalink de tu bot con la versión mayor del servidor Lavalink (cliente v3 con servidor v3, cliente v4 con servidor v4).
  2. En Square Cloud, el servidor Lavalink en sí enlaza el puerto 80, pero tu bot debe conectarse a él a través del edge en el puerto 443 con secure: true.
  3. Reinicia tanto la aplicación de Lavalink como la del bot después de corregir la incompatibilidad de versiones.
Para la configuración completa de hosting de Lavalink (archivo de configuración, puerto, despliegue), consulta el tutorial del servidor Lavalink.

El bot queda offline después de funcionar en local

Qué significa: el bot inicia sesión correctamente cuando lo ejecutas en tu máquina, pero queda offline (o se reinicia repetidamente) una vez desplegado. Por qué ocurre, más comúnmente:
  • Una conexión inestable a nivel de gateway sin manejo de reconexión.
  • Versiones de dependencias conflictivas o incompatibles entre lo que probaste en local y lo que está en tu archivo de dependencias.
  • Activadores de abuso de la API de Discord (en este caso la cuenta recibe un correo de notificación) por golpear los límites de tasa de forma demasiado agresiva.
Cómo solucionarlo:
  1. Revisa primero los logs de la aplicación en el dashboard, muestran la razón real del fallo.
  2. Agrega manejadores de errores para que un error transitorio no termine el proceso: process.on("unhandledRejection", ...) y client.on("error", ...) en discord.js, manejo equivalente en discord.py.
  3. Square Cloud reinicia automáticamente una aplicación caída (AUTORESTART en el manifiesto) cuando el uptime anterior fue mayor a 60 segundos, el estado de salida fue 1, y no se ha reiniciado automáticamente en los últimos 60 minutos. Esto mantiene al bot vivo ante errores transitorios, pero nunca soluciona un error de código subyacente, un error de sintaxis o una dependencia faltante, esos todavía necesitan una corrección en el código.
  4. Vigila los límites de tasa (429) de la API de Discord: el límite global es de aproximadamente 50 solicitudes/segundo por token de bot, con buckets más estrictos por ruta (crear/editar canal permite aproximadamente 2 cambios cada 10 minutos por canal). Cachea de forma agresiva, usa una cola asíncrona que respete los encabezados X-RateLimit-Remaining/X-RateLimit-Reset-After, y usa webhooks para envíos masivos.
Consulta el tutorial completo de hosting de bots de Discord para configurarlo desde cero.
Si los logs no señalan una causa clara, nuestro equipo de soporte puede ayudarte a investigar más a fondo.

Contáctanos

Si continúas enfrentando dificultades técnicas, nuestro equipo de soporte especializado está disponible para ayudarte. Contáctanos y estaremos encantados de ayudarte a resolver cualquier problema — la calidad del soporte es una gran parte de por qué los desarrolladores califican a Square Cloud con 4.9/5 en 402 reseñas en Google y Trustpilot.