Errores comunes

Más de 15 errores habituales al comenzar con Discord.js y Discord.py

Errores Comunes y Soluciones

chevron-right1. “Cannot find module 'discord.js'” / “No module named 'discord'”hashtag

Causa: La librería no está instalada o el entorno activo es incorrecto. Solución (Discord.js):

# Asegúrate de estar en la carpeta del proyecto
npm install discord.js
rm -rf node_modules package-lock.json && npm install

Solución (Discord.py):

# Activa tu entorno virtual
source venv/bin/activate  # Linux/Mac
venv\Scripts\activate     # Windows
pip install discord.py
python -c "import discord; print(discord.__version__)"
chevron-right2. Token inválido o no definidohashtag

Causa: El token no se pasa correctamente desde variables de entorno. Solución:

// JS
require('dotenv').config();
console.log(process.env.DISCORD_TOKEN);
const client = new Client({ intents: [...] });
client.login(process.env.DISCORD_TOKEN);
# Py
from dotenv import load_dotenv
import os
load_dotenv()
print(os.getenv('DISCORD_TOKEN'))
bot.run(os.getenv('DISCORD_TOKEN'))
chevron-right3. Intents faltanteshashtag

Causa: No se solicitan los intents necesarios al instanciar el cliente. Solución:

// JS
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent
  ]
});
# Py
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix='!', intents=intents)
chevron-right4. Comandos no se ejecutan tras usar on_messagehashtag

Causa: Al definir on_message, no se llama a process_commands. Solución:

@bot.event
async def on_message(message):
    await bot.process_commands(message)

O usar listeners:

@bot.listen('on_message')
async def log(message):
    print(message.content)
chevron-right5. “Missing Permissions” / “Missing Access”hashtag
Error
Causa
Solución

Missing Access

Bot no está invitado o falta permiso

Invitar de nuevo con permisos correctos

Missing Permissions

Acción prohibida por roles

Asignar permisos en el servidor

Forbidden (403)

Rol del bot por debajo del objetivo

Subir rol del bot en jerarquía

// JS
if (!message.guild.members.me.permissions.has('KICK_MEMBERS')) {
  return message.reply('No tengo permisos.');
}
# Py
if not ctx.guild.me.guild_permissions.kick_members:
    await ctx.send('Sin permiso para expulsar.')
chevron-right6. Rate Limit Exceeded (429)hashtag

Causa: Exceso de peticiones en corto tiempo. Solución:

chevron-right7. “Cannot send empty message”hashtag

Causa: Intentar enviar cadena vacía. Solución:

chevron-right8. Error en embed: objeto embed inválidohashtag

Causa: Estructura de embed mal formada. Solución:

chevron-right9. “Unhandled promise rejection” / excepción no capturadahashtag

Causa: Promesas fallidas sin .catch(). Solución:

chevron-right10. Conexión de voz sin reproducir audiohashtag

Causa: Falta FFmpeg o permisos. Solución:

chevron-right11. Argumentos de comando no capturan espacioshashtag

Causa: Firma de comando sin *. Solución:

chevron-right12. Error “Cannot read property ... of undefined”hashtag

Causa: Acceso a propiedad de objeto null/undefined. Solución:

chevron-right13. Eventos duplicados al recargar códigohashtag

Causa: Se añaden listeners cada vez. Solución: Registrar eventos una única vez y reiniciar el proceso al recargar.

chevron-right14. Memory leak por listeners dentro de loopshashtag

Causa: Añadir listener repetidas veces. Solución: Mover client.on(...) fuera de bucles.

chevron-right15. Error de permisos de roles al asignar/quitarhashtag

Causa: Bot sin “Manage Roles” o rol mal posicionado. Solución:

Asegúrate de que el rol del bot esté por encima en la jerarquía.

chevron-right16. “Shard timeout” al tener muchos servidoreshashtag

Causa: Bot superó límite sin sharding. Solución:

chevron-right17. Error de certificados SSL al hacer peticiones HTTPhashtag

Causa: Node.js no reconoce certificados. Solución:

chevron-right18. Error “Voice packet too large”hashtag

Causa: Fichero de audio muy grande. Solución: Reducir bitrate o fragmentar audio antes de reproducir.

chevron-right19. Dependency conflict al instalar versioneshashtag

Causa: Versiones incompatibles de librerías. Solución:

Verifica release notes de cada librería.

chevron-right20. Crash inesperado sin logshashtag

Causa: No se manejan excepciones globales. Solución:

chevron-right21. “Error: getaddrinfo ENOTFOUND gateway.discord.gg gateway.discord.gg:443”hashtag

Causa: La conexión a Internet se interrumpe o es inestable. Solución:

  • Verifica tu conexión a Internet y restáurala si está caída.

  • Considera alojar tu bot en un VPS o servicio de hosting con conexión estable.

  • Si usas una red corporativa o escolar, comprueba que no haya restricciones de firewall bloqueando Discord.

chevron-right22. “Unexpected end of input” (SyntaxError: Unexpected end of input)hashtag

Causa: Falta un paréntesis, llave, corchete o comilla de cierre en el código. Solución:

  • Emplea un editor de código que resalte pares de caracteres (por ejemplo VS Code, WebStorm).

  • Haz clic sobre un paréntesis, llave o comilla para ver su contraparte resaltada y ubicar dónde falta el cierre.

  • Revisa especialmente bloques if, function, objetos literales y arrays para asegurar que abren y cierran correctamente.

Última actualización