«La aplicación no ha respondido» en tu bot de Discord: Unknown interaction y cómo arreglarlo
Usas un comando de tu bot y Discord contesta «La aplicación no ha respondido» o, en un botón, «Esta interacción ha fallado» (el texto cambia un poco según el idioma y la versión de Discord). Y en la consola puede salir Unknown interaction. Casi siempre es lo mismo: tu bot ha tardado más de 3 segundos en contestar. Aquí ves cómo saber cuál es tu caso y cómo arreglarlo en discord.py y discord.js.
Por qué sale
Discord le da a tu bot 3 segundos para dar la primera respuesta a un comando, un botón o un menú. Si no llega a tiempo, enseña el aviso al usuario e invalida esa interacción, aunque el bot siga en línea y su respuesta salga un segundo más tarde.
Da igual que tu código esté bien: basta con que consulte una web o una base de datos lenta antes de contestar. Por eso suele pasar a veces sí y a veces no, y por eso en tu PC puede ir y en otro sitio no.
¿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.
Mira la consola: cada caso dice una cosa
Lanza el comando con la consola delante y busca qué aparece justo después:
Unknown interaction (código 10062): tu bot ha contestado tarde. En discord.py sale como discord.errors.NotFound: 404 Not Found (error code: 10062): Unknown interaction, y en discord.js como DiscordAPIError[10062]: Unknown interaction. Sigue en la siguiente sección.
Interaction has already been acknowledged (código 40060): se ha contestado dos veces a lo mismo. Lo explicamos más abajo, y muchas veces es que tienes el bot encendido dos veces.
InteractionResponded en discord.py, o The reply to this interaction has already been sent or deferred. en discord.js: lo mismo, pero lo ha parado tu librería antes de llegar a Discord.
Nada de nada: tu código no llega a contestar. Puede que el bot esté apagado, que el comando siga registrado pero ya no exista en tu código, o que falle antes de responder sin que nadie lo apunte.
Si tarda: contesta primero y termina después
Lo que hay que hacer es decirle a Discord que has recibido el comando y luego tomarte tu tiempo. Es el mensaje «… está pensando». Desde ahí tienes 15 minutos para dar la respuesta final. Tiene que ser lo primero que haga el comando, antes de cualquier cosa lenta:
@bot.tree.command(name="informe", description="Genera el informe")
async def informe(interaction: discord.Interaction):
await interaction.response.defer(thinking=True) # lo primero de todo
texto = await leer_datos() # esto ya puede tardar
await interaction.followup.send(texto)client.on(Events.InteractionCreate, async (interaction) => {
if (!interaction.isChatInputCommand()) return;
if (interaction.commandName === "informe") {
await interaction.deferReply(); // lo primero de todo
const texto = await leerDatos(); // esto ya puede tardar
await interaction.editReply(texto);
}
});Si la respuesta es privada, dilo al principio
Lo de que solo lo vea quien usa el comando se decide al aplazar:
defer(ephemeral=True)en discord.py ydeferReply({ flags: MessageFlags.Ephemeral })en discord.js.Contesta con el método que toca
Después de aplazar ya no vale responder de la forma normal: usa
followup.send()en discord.py yeditReply()en discord.js.Las ventanas son la excepción
Un formulario (modal) tiene que ser la primera respuesta: no se puede aplazar y abrirlo después. Muéstralo antes de hacer nada lento.
Si se bloquea: el fallo que no se ve
Un bot hace todo por turnos. Si una operación lo deja parado, ninguna otra interacción avanza, y por eso fallan también comandos que no tienen nada que ver con el lento.
En Python, los culpables habituales son time.sleep() y requests.get(). Cambia el primero por await asyncio.sleep(), usa aiohttp en vez de requests y, si una función no tiene versión asíncrona, lánzala con await asyncio.to_thread(funcion). La pista es este aviso en la consola: heartbeat blocked for more than 10 seconds.
En Node.js, lo mismo con bucles enormes o con funciones acabadas en Sync sobre datos grandes, como fs.readFileSync o execSync.
Si sale «already been acknowledged»: dos respuestas
Busca si tienes el bot encendido dos veces
Es lo primero que hay que mirar. Si dejaste una copia abierta en tu PC y otra en un hosting, las dos reciben el mismo comando y las dos contestan. Una gana y la otra da el error. Cierra una y prueba otra vez.
Mira tus try/except y try/catch
Si contestas bien, algo falla justo después y el bloque de errores intenta contestar otra vez, salta el 40060. En el bloque de errores, comprueba primero si ya contestaste:
interaction.response.is_done()en discord.py einteraction.replied || interaction.deferreden discord.js.No atiendas lo mismo en dos sitios
Dos
client.ono dos colectores para el mismo botón contestan dos veces. Deja uno.
Si solo pasa de vez en cuando
Si tu código aplaza bien y aun así falla alguna vez, mira dónde corre. En las plataformas que duermen los programas, el primer comando después de un rato llega con el bot despertando (por qué pasa). Y si la máquina va justa de memoria o de procesador, 3 segundos se pasan rápido.
Si el aviso sale y el bot está apagado, no es un fallo del código: el comando sigue registrado en Discord aunque no haya nadie para contestar. Mi bot no responde repasa ese caso y los demás.
Si tu bot está en NapNodes
Mira la «Consola»
Lanza el comando y lee qué sale. Con eso sabes en cuál de los casos de arriba estás.
Mira «Rendimiento»
Si la memoria o el procesador van al tope cuando falla, el bot se queda sin margen. El bot gratis tiene 256 MB; si se te queda corto, los planes Mini (512 MB) y Plus (1 GB) dan más.
Deja una sola copia
Si lo tienes aquí encendido, cierra el que dejaste en tu PC: dos copias con el mismo token dan el error 40060.
Pulsa «Reiniciar»
Hazlo después de cada cambio en el código: un bot lo lee al arrancar.
Preguntas frecuentes
¿Por qué mi bot dice «La aplicación no ha respondido»?
Porque no ha contestado en 3 segundos, o no ha contestado nada. Si tiene trabajo lento, aplaza la respuesta nada más empezar: interaction.response.defer() en discord.py e interaction.deferReply() en discord.js.
¿Qué significa Unknown interaction (10062)?
Que tu bot ha contestado cuando la interacción ya había caducado: pasaron los 3 segundos sin una primera respuesta. Se arregla aplazando la respuesta al principio.
¿Qué significa «Interaction has already been acknowledged» (40060)?
Que se ha contestado dos veces a lo mismo. Mira si tienes el bot encendido dos veces (en tu PC y en un hosting) y si tu bloque de errores contesta después de haber contestado bien.
¿Cuánto tiempo tiene un bot para responder?
3 segundos para la primera respuesta y, si la aplaza, 15 minutos para la final.
¿Por qué mis botones dejan de funcionar al reiniciar el bot?
Porque los atendía algo en memoria. Usa vistas persistentes en discord.py, o atiende el botón por su customId en InteractionCreate en discord.js.
¿Puede salir este error con el bot apagado?
Sí. El comando sigue registrado en Discord aunque tu programa no esté en marcha, y al no contestar nadie sale el aviso.
¿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.
Sigue leyendo
- 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.
- «Missing Access» y «Missing Permissions» en tu bot de Discord: errores 50001 y 50013
Qué significan Missing Access (50001) y Missing Permissions (50013) en un bot de Discord, en qué se diferencian y cómo arreglarlos en discord.py y discord.js.
- 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.