«Missing Access» y «Missing Permissions» en tu bot de Discord: errores 50001 y 50013
Tu bot funciona hasta que intenta hacer algo y en la consola sale Missing Access o Missing Permissions. Parecen lo mismo y no lo son: el primero (50001) dice que tu bot no llega a ese sitio, y el segundo (50013) que llega, pero no le dejan hacer eso. Aquí ves cómo distinguirlos, las causas de cada uno y cómo comprobar los permisos desde el código, en discord.py y discord.js.
Cuál de los dos tienes
Los dos son un 403 de Discord. En discord.py salen como discord.errors.Forbidden: 403 Forbidden (error code: 50001): Missing Access y discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions. En discord.js, como DiscordAPIError[50001]: Missing Access y DiscordAPIError[50013]: Missing Permissions.
Missing Access (50001): tu bot no alcanza lo que pides. No ve el canal, no está en ese servidor o no tiene acceso a esa parte.
Missing Permissions (50013): ve el sitio, pero le falta el permiso para esa acción, o la persona o el rol sobre el que actúa están por encima.
Busca también la línea de tu código que sale en el error: dice qué estaba intentando hacer, y eso casi siempre señala el permiso que falta.
¿Prefieres no montarlo tú? Hosting de bots de Discord desde 1,50 € al mes, sin permanencia y con devolución íntegra en 72 horas. O crea un bot de Discord gratis, sin tarjeta.
Missing Access: las causas de siempre
Si en tus registros un canal sale como ___hidden___, es esta familia de errores: tu bot no lo ve. Desde el 16 de noviembre de 2026 pasa con todos los canales que no ve (qué cambia). Estas son las causas, de la más común a la menos:
No ve el canal
Es la más común. Sin «Ver canales», el bot no puede hacer nada ahí, ni siquiera escribir. Mira en «Editar canal» → «Permisos» que su rol lo tenga. Si el canal está dentro de una categoría privada, revisa también la categoría.
Registras comandos sin el permiso de comandos
Si el error sale al arrancar, al sincronizar los comandos en un servidor, puede que uses el id de un servidor donde no está, o que la invitación no incluyera
applications.commands. Discord dice que el scopebotya lo incluye; aun así, si te sale este error, invítalo otra vez con los dos. Lo tienes en los comandos de barra no aparecen.Usas un id de otro sitio
Un canal o un servidor de pruebas que se quedó puesto en el .env, en un servidor donde el bot ya no está. Comprueba los ids que usas.
Es un hilo privado
Incluso si le han añadido, para ver cualquier hilo el bot necesita
VIEW_CHANNELen el canal donde está el hilo.
Missing Permissions: qué permiso falta
Cada acción pide el suyo. Los que más faltan:
Mandar mensajes: «Enviar mensajes», y «Enviar mensajes en hilos» dentro de un hilo. Mandar una tarjeta (embed): «Insertar enlaces». Mandar una imagen o un archivo: «Adjuntar archivos». Poner una reacción nueva: «Añadir reacciones».
Borrar mensajes de otros: «Gestionar mensajes». Dar o quitar roles: «Gestionar roles». Cambiar apodos: «Gestionar apodos». Echar a alguien: «Expulsar miembros». Banear: «Banear miembros». Aislar a alguien un rato: «Aislar temporalmente».
Si no sabes cuáles pedir, márcalos en la calculadora de permisos de bot: te da el enlace de invitación ya hecho, y abrirlo no obliga a echar al bot antes.
Si tiene el permiso y sigue fallando
Tres cosas pueden quitarle un permiso que parece tener.
La jerarquía de roles. Un bot solo puede expulsar, banear o cambiar el apodo a quien tenga su rol más alto por debajo del rol más alto del bot. Y solo puede dar los roles que estén por debajo del suyo. Al entrar, el rol del bot se queda abajo del todo: en «Ajustes del servidor» → «Roles», arrástralo por encima de los que tiene que gestionar.
Los permisos del canal. Lo que permite un rol lo puede quitar un canal concreto. Discord aplica primero los del servidor y después, por este orden, los del canal: @everyone, los roles y por último el miembro concreto. Mira si en ese canal hay algo denegado.
Quién es la otra persona. Al dueño del servidor no se le puede echar ni cambiar el apodo, tenga el bot el rol que tenga. Tampoco se puede aislar al dueño ni a quien tenga «Administrador».
Compruébalo desde el código
En vez de dejar que el error llegue a la consola, puedes mirar antes qué falta y decírselo a quien usa el comando:
@bot.tree.command(name="aviso", description="Publica un aviso")
async def aviso(interaction: discord.Interaction, canal: discord.TextChannel, texto: str):
permisos = canal.permissions_for(interaction.guild.me)
if not (permisos.view_channel and permisos.send_messages):
await interaction.response.send_message(
f"No puedo escribir en {canal.mention}: dame «Ver canales» y «Enviar mensajes».",
ephemeral=True,
)
return
try:
await canal.send(texto)
except discord.Forbidden as error:
await interaction.response.send_message(f"Discord no me deja: {error.text}", ephemeral=True)
return
await interaction.response.send_message("Publicado.", ephemeral=True)const { MessageFlags, PermissionFlagsBits } = require("discord.js");
// Dentro de tu comando «aviso»
const canal = interaction.options.getChannel("canal");
const faltan = canal
.permissionsFor(interaction.guild.members.me)
.missing([PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages]);
if (faltan.length > 0) {
await interaction.reply({
content: `No puedo escribir en ${canal}. Me falta: ${faltan.join(", ")}`,
flags: MessageFlags.Ephemeral,
});
return;
}
await canal.send(interaction.options.getString("texto"));
await interaction.reply({ content: "Publicado.", flags: MessageFlags.Ephemeral });Por qué no darle «Administrador» y olvidarte
Quita casi todos estos errores de golpe, y por eso se recomienda tanto. Pero si alguien consigue el token de tu bot, tendrá el servidor entero en sus manos (qué hacer si se filtra). Y tampoco lo arregla todo: la jerarquía sigue valiendo, así que un bot administrador con el rol abajo del todo tampoco puede expulsar a quien está por encima.
Dale solo lo que usa. Si mañana hace falta otro permiso, el error te lo dirá.
Errores que se parecen
50007 (Cannot send messages to this user): esa persona tiene cerrados los mensajes directos o no comparte servidor con el bot. No lo puedes arreglar tú: captura el error y sigue.
10008 (Unknown message): el mensaje ya no existe; por ejemplo, alguien lo borró antes de que tu bot lo tocara.
50035 (Invalid Form Body): lo que has mandado está mal formado, como un mensaje demasiado largo o un campo vacío en una tarjeta. No es un problema de permisos.
401 Unauthorized: el token no vale (mi bot no responde explica cómo sacar otro). Y el 429: estás haciendo demasiadas peticiones.
Si tu bot está en NapNodes
Lee el error en la «Consola»
Copia la línea entera. Con el código y la línea de tu programa sabes qué permiso buscar.
Cambia los permisos en Discord
Los roles y los canales se tocan en tu servidor de Discord, no en el panel.
Sube el arreglo y pulsa «Reiniciar»
Los permisos valen al momento y no hay que reiniciar por ellos. Solo si cambias el código, súbelo en «Archivos» y reinicia.
Preguntas frecuentes
¿Qué diferencia hay entre Missing Access y Missing Permissions?
Missing Access (50001) es que el bot no llega a ese canal o servidor. Missing Permissions (50013) es que llega, pero le falta el permiso para esa acción o lo impide la jerarquía de roles.
¿Por qué mi bot no puede dar un rol si tiene «Gestionar roles»?
Porque solo puede dar los roles que estén por debajo del suyo. En «Ajustes del servidor» → «Roles», arrastra el rol del bot por encima.
¿Por qué sale Missing Access al registrar los comandos?
Normalmente, porque el id no es de un servidor donde esté el bot o porque la invitación no incluyó applications.commands. Revisa el id y vuelve a invitarlo con los scopes bot y applications.commands.
¿Debería darle Administrador a mi bot?
Mejor no. Si se filtra el token, se llevan el servidor entero, y tampoco se salta la jerarquía de roles. Dale solo los permisos que use.
¿Por qué mi bot no puede expulsar a un administrador?
Porque solo puede expulsar a quien tenga su rol más alto por debajo del rol más alto del bot. Al dueño del servidor no lo puede expulsar nunca.
¿Hay que reiniciar el bot después de cambiar sus permisos?
No. Los permisos valen al momento. Solo hay que reiniciarlo si cambias su código.
¿Te ha servido esta guía?
¿Lo montamos?
Hosting de bots de Discord desde 1,50 € al mes, sin sobreventa: tu RAM es solo tuya. Y si quieres empezar sin pagar, tienes un bot de Discord gratis, sin tarjeta.
Herramienta gratis: Permisos de un bot de Discord. Marca los permisos de tu bot en castellano y sal con el número y el enlace de invitación; o pega un número y mira qué permisos da.
Sigue leyendo
- Mi bot de Discord no responde (o sale desconectado): causas y soluciones
Tu bot de Discord no contesta o sale desconectado: token, Message Content Intent, permisos, error 429… Cada error y su arreglo en discord.py y discord.js.
- Canales «___hidden___» en tu bot de Discord: qué cambia el 16 de noviembre de 2026
Desde el 16 de noviembre de 2026 Discord oculta a los bots los canales que no pueden ver: nombre ___hidden___ y fuera de la API. A quién afecta y qué cambiar.
- Canales de voz temporales en Discord: un bot «Crear sala» en Python que los borra al vaciarse
Haz tu bot de canales de voz temporales para Discord en Python: entras en «Crear sala», te hace una para ti y la borra cuando se vacía. Código completo.