Discord rate limit: proč boti zpomalují
Rate limit je Discordem stanovený strop na počet požadavků, které může bot nebo uživatel odeslat za krátký čas. Když bot tento strop překročí, Discord odpoví chybou HTTP 429 a dobou čekání a bot musí před dalším pokusem chvíli počkat.
Jak se limity uplatňují
Každá akce bota je požadavek na API Discordu: odeslání zprávy, přidání role, úprava kanálu. Discord počítá požadavky v kbelících, obvykle podle trasy a někdy podle serveru nebo kanálu. Pro bota platí také globální strop zhruba 50 požadavků za sekundu.
Odpovědi obsahují hlavičky, které říkají, kolik požadavků zbývá a kdy se kbelík resetuje. Dobře napsaný bot je čte a zpomalí dřív, než ho Discord zablokuje. Pokud limit přesto překročí, odpověď 429 obsahuje hodnotu Retry-After, která udává, kolik sekund počkat.
Proč si jich všimnete
- Hromadné akce, jako je mazání mnoha zpráv nebo změna mnoha rolí, se záměrně zpomalují.
- Opakovaná změna názvu nebo tématu kanálu v krátkém čase je omezena pro každý kanál zvlášť.
- Přidávání mnoha reakcí nebo odesílání dávek zpráv vyvolá krátké pauzy.
Člen serveru to vidí jako bota, který reaguje pozdě, ne jako chybu. Systém tak dělá svou práci.
Vážnější verze: dočasné blokace
Pokud aplikace posílá příliš mnoho chybných požadavků, například tisíce odpovědí 401, 403 nebo 429 za deset minut, Discord může na nějakou dobu zablokovat její IP adresu na vrstvě Cloudflare. Bot běžící na sdíleném stroji pak může selhávat, i když s vaším serverem není nic v nepořádku. Jediným řešením je počkat.
Limitům se nikdy nevyhýbejte pomocí dalších účtů nebo skriptů. Slouží k ochraně platformy a obcházení může vést k banu.
Co můžete jako vlastník udělat
- Velké úlohy rozložte, místo abyste je spustili všechny najednou.
- Nepřejmenovávejte kanály podle časovače.
- Dávejte přednost botům, které řadí své požadavky do fronty a limity respektují.
Rate limity a Noxyr
Serverové logy Noxyru se odesílají nejvýše každých několik sekund na kanál a po deseti zprávách najednou, takže nájezd nebo velké mazání nikdy nezahltí logovací kanál, jak je popsáno v dokumentaci k serverovým logům. Také odesílání živého chatu v Noxyru je omezeno, aby se zabránilo záplavám. Vlastní boti mají související pravidlo: každé přesunutí na nového hosta je nové přihlášení do Discordu, takže mezi přesuny je pětiminutová pauza, viz hostování vlastních botů.
Rate limity také nutí velké boty rozdělit se mezi více připojení, viz sharding. Pokud váš bot působí zaseknutě, nejdřív zkontrolujte stránku stav a ping.
Časté otázky
Co znamená HTTP 429 na Discordu?
Příliš mnoho požadavků. Discord botovi říká, aby před dalším pokusem počkal dobu uvedenou v hodnotě Retry-After.
Je rate limit ban?
Ne. Je to krátká pauza. K delší dočasné blokaci může vést jen opakované zneužívání.
Proč můj bot během velkého čištění reaguje pomalu?
Hromadné akce Discord omezuje, takže je bot musí rozložit.