Cada petición que hace tu bot cuenta contra un presupuesto. Si te pasas, Discord empieza a rechazar, luego a retrasar, y si sigues, a vetar al bot de la API un rato.
Lo que estás viendo
429 Too Many Requestsen la consola.- Mensajes que salen tarde, a ráfagas o desordenados.
- Un comando que va bien solo pero falla cuando lo usan varios a la vez.
You are being rate limiteden un bot que ayer iba bien.
Por qué pasa
Casi siempre un bucle que habla con Discord una vez por elemento. Editar un mensaje dentro de un for sobre cien entradas, renombrar canales con un temporizador, o mandar un mensaje por miembro es la forma que tiene. La librería normalmente encola en vez de fallar, y eso esconde el problema hasta que la cola dura minutos.
Qué hacer
- Encuentra el bucle
Busca cualquier cosa que envíe, edite o consulte dentro de una iteración. Esa es casi siempre la fuente.
- Agrupa en su lugar
Un mensaje con diez líneas en vez de diez mensajes. Una edición del embed al final en vez de una por paso.
- Usa los endpoints masivos donde existan
El borrado masivo quita hasta cien mensajes en una llamada. Pedir la lista de miembros una vez gana a pedir cada miembro.
- No renombres un canal con un temporizador corto
Las actualizaciones de canal y de servidor tienen un límite mucho más estricto: un puñado cada diez minutos. Los bots contador que actualizan el nombre de un canal cada minuto son el caso clásico, y no hay forma de que funcione.
Añadir una espera hace el bot lento y además acaba limitado igual, porque el presupuesto es por ventana, no por hueco. El arreglo es enviar menos; enviar lo mismo más despacio solo mueve el muro.
Tanto discord.js como discord.py leen las cabeceras de límite y esperan lo justo por su cuenta. Escribir tu propio reintento encima suele empeorarlo, porque añade peticiones durante el enfriamiento.