Rate limit di Discord: perché i bot vengono rallentati
Un rate limit è il limite che Discord impone a quante richieste un bot o un utente possono inviare in poco tempo. Quando un bot supera il limite, Discord risponde con un errore HTTP 429 e un tempo di attesa, e il bot deve fermarsi prima di riprovare.
Come vengono applicati i limiti
Ogni azione di un bot è una richiesta all'API di Discord: inviare un messaggio, aggiungere un ruolo, modificare un canale. Discord conta le richieste in gruppi, di solito per percorso e a volte per server o canale. Esiste anche un limite globale di circa 50 richieste al secondo per ogni bot.
Le risposte includono intestazioni che indicano quante richieste restano e quando il gruppo si azzera. Un bot ben scritto legge queste informazioni e rallenta prima di essere bloccato. Se supera comunque il limite, la risposta 429 contiene un valore Retry-After che indica quanti secondi attendere.
Perché te ne accorgi
- Le azioni di massa, come eliminare molti messaggi o modificare molti ruoli, sono rallentate apposta.
- Cambiare più volte in poco tempo il nome o l'argomento di un canale è limitato per canale.
- Aggiungere molte reazioni o inviare raffiche di messaggi causa brevi pause.
Per un membro sembra un bot che risponde in ritardo, non un errore. È il sistema che fa il suo lavoro.
La versione seria: blocchi temporanei
Se un'app fa troppe richieste sbagliate, per esempio migliaia di risposte 401, 403 o 429 in dieci minuti, Discord può bloccare il suo indirizzo IP per un certo periodo a livello Cloudflare. Un bot ospitato su una macchina condivisa può quindi smettere di funzionare anche se nel tuo server non c'è nulla che non va. In quel caso l'unica soluzione è aspettare.
Non provare mai ad aggirare i rate limit con account extra o script. Esistono per proteggere la piattaforma, e aggirarli rischia un ban.
Cosa puoi fare come proprietario
- Distribuisci i lavori grandi invece di eseguirli tutti insieme.
- Evita di rinominare i canali a intervalli regolari.
- Preferisci bot che mettono in coda le richieste e rispettano i limiti.
Rate limit e Noxyr
I log del server di Noxyr vengono pubblicati al massimo ogni pochi secondi per canale e dieci alla volta, così un raid o una pulizia massiccia non sommergono il canale dei log, come descritto nella documentazione sui log del server. Anche l'invio dei messaggi della chat dal vivo di Noxyr è limitato per evitare flood. I bot personalizzati hanno una regola correlata: ogni spostamento su un nuovo host è un nuovo accesso a Discord, quindi tra uno spostamento e l'altro c'è un'attesa di cinque minuti, vedi hosting dei bot personalizzati.
I rate limit spingono anche i bot grandi a dividersi su più connessioni, vedi sharding. Se il tuo bot sembra bloccato, controlla prima la pagina stato e ping.
Domande frequenti
Cosa significa HTTP 429 su Discord?
Troppe richieste. Discord dice al bot di aspettare il tempo indicato nel valore Retry-After prima di riprovare.
Un rate limit è un ban?
No. È una breve pausa. Solo gli abusi ripetuti possono portare a un blocco temporaneo più lungo.
Perché il mio bot risponde lentamente durante una grande pulizia?
Le azioni di massa sono soggette ai rate limit di Discord, quindi il bot deve distribuirle nel tempo.