Errores frecuentes de un bot Discord y sus causas
Intents desactivados (4014), límite de velocidad (429), EAI_AGAIN, token no válido: qué significa cada error y qué revisar primero.
La mayoría de los fallos de un bot de Discord se reducen a cuatro errores. Cada uno tiene una causa concreta, y el orden de comprobación importa: el token y los intents se verifican en dos minutos, el límite de velocidad obliga a revisar el bucle de envíos, y EAI_AGAIN afecta a la red más que a su código.
- Error 4014: se pide un intent privilegiado que no está activado en el portal.
- Error 429: demasiados envíos demasiado rápido. Espere el tiempo que indica Discord.
- EAI_AGAIN: fallo de resolución DNS en la red, no en su código.
- Token no válido: LoginFailure o «invalid token», para corregir en la variable.
Intents desactivados: error 4014
El error 4014 (Disallowed intents) significa que el bot pide un intent privilegiado, como la lectura del contenido de los mensajes, sin haberlo activado en el portal de desarrolladores. Discord rechaza entonces la conexión.
- Abra el portal de desarrolladores, sección Bot, y active los intents privilegiados que usa su código.
- Pida en el código solo los intents que necesita: cada intent superfluo es un permiso más que activar.
- Tras un cambio, reinicie el bot. Un reinicio sin cambios reproduce el mismo error.
Límite de velocidad: error 429
El código 429 (Too Many Requests) significa que el bot superó el ritmo permitido por Discord, a menudo porque envía o edita mensajes en un bucle. La respuesta indica entonces cuánto esperar.
- discord.js y discord.py esperan por sí solos en la mayoría de las peticiones, pero un bucle de envíos sin fin nunca se detiene.
- Espacie las acciones repetidas: un mensaje cada pocos segundos es mejor que una ráfaga.
- Respete el tiempo de espera indicado y no reinicie el bot en bucle durante ese tiempo.
Red: EAI_AGAIN y ECONNRESET
EAI_AGAIN significa que no se pudo resolver el nombre de dominio de Discord. ECONNRESET significa que la conexión se cortó a mitad de camino. Estos errores vienen de la red entre el servidor y Discord, no de una línea de su código.
- Si el error aparece de forma intermitente, la mayoría de las bibliotecas reintentan la conexión con una pausa creciente.
- Los cortes de DNS o de conexión son conocidos y se están corrigiendo. Si su código es correcto y el error persiste, contacte con el soporte indicando la hora exacta.
- Un error aislado suele ser pasajero: espere unos minutos antes de cambiar nada.
Token no válido: LoginFailure
Un token no válido, caducado o restablecido hace fallar la conexión al arrancar. El mensaje suele ser Improper token has been passed en Python, o An invalid token was provided en Node.js.
- Compruebe que la variable contiene el token, sin espacios ni comillas de más.
- Si el token se restableció en el portal, el valor anterior ya no funciona: copie el nuevo.
- No pegue nunca el token en un mensaje para que lo revisen.
Por qué ACLClouds para sus bots
Los errores de token e intents se corrigen en el código y en el portal de Discord. El plan gratuito da a su bot un espacio propio donde puede corregir el código y volver a desplegarlo.
- Plan gratuito: 1 bot, 315 MB de RAM, 0,25 vCPU, 715 MB de almacenamiento.
- Acceso SFTP por bot en el puerto 2222, para corregir el código y volver a subirlo.
- ffmpeg, yt-dlp y deno incluidos en las imágenes de Node.js y Python.
Preguntas frecuentes
¿Puede bloquearse un bot por un error 429?
Un error 429 es un límite temporal, no una sanción. Pero ignorar las esperas de forma repetida puede acabar en un bloqueo más largo por parte de Discord. Corrija el bucle.
Mi bot estaba en línea ayer y hoy no. ¿Por qué?
Lea primero los logs: un error de token, un intent desactivado o un corte de red dejan rastro. Compruebe también la fecha de fin del plan gratuito: 4 días, renovables desde la página del bot en los 2 días previos al vencimiento, o una vez suspendido.
¿Por qué EAI_AGAIN aparece solo a veces?
Una resolución DNS que falla de forma intermitente suele venir de la red. Reintente tras una pausa; si el error persiste con un código correcto, contacte con el soporte indicando la hora exacta.