Every request your bot makes counts against a budget. Go over it and Discord starts refusing, then delaying, then — if you keep going — banning the bot from the API for a while.
What you are seeing
429 Too Many Requestsin the console.- Messages sending late, in bursts, or out of order.
- A command that works alone but fails when several people use it at once.
You are being rate limitedon a bot that was fine yesterday.
Why it happens
Almost always a loop that talks to Discord once per item. Editing a message inside a for over a hundred entries, renaming channels on a timer, or sending one message per member is the shape of it. The library usually queues rather than failing, which hides the problem until the queue is minutes long.
What to do
- Find the loop
Look for anything that sends, edits or fetches inside an iteration. That is nearly always the source.
- Batch instead
One message with ten lines rather than ten messages. One embed edit at the end rather than one per step.
- Use bulk endpoints where they exist
Bulk delete removes up to a hundred messages in one call. Fetching a member list once beats fetching each member.
- Never rename a channel on a short timer
Channel and guild updates have a much stricter limit — a handful per ten minutes. Counter bots that update a channel name every minute are the classic case, and there is no way to make it work.
Adding a delay makes the bot slow and still eventually limited, because the budget is per window, not per gap. Sending less is the fix; sending the same amount more slowly only moves the wall.
discord.js and discord.py both read the rate-limit headers and wait the right amount automatically. Writing your own retry on top usually makes it worse by adding requests during the cooldown.