Limit żądań Discorda: dlaczego boty zwalniają
Rate limit to ograniczenie Discorda, które określa, ile żądań bot lub użytkownik może wysłać w krótkim czasie. Gdy bot przekroczy limit, Discord odpowiada błędem HTTP 429 i czasem oczekiwania, a bot musi się wstrzymać, zanim spróbuje ponownie.
Jak nakładane są limity
Każde działanie bota to żądanie do API Discorda: wysłanie wiadomości, dodanie roli, edycja kanału. Discord liczy żądania w kubełkach, zwykle osobno dla każdej trasy, a czasem dla serwera lub kanału. Istnieje też globalny limit około 50 żądań na sekundę dla bota.
Odpowiedzi zawierają nagłówki mówiące, ile żądań zostało i kiedy kubełek się resetuje. Dobrze napisany bot je czyta i zwalnia, zanim zostanie zablokowany. Jeśli mimo to przekroczy limit, odpowiedź 429 zawiera wartość Retry-After z liczbą sekund do odczekania.
Dlaczego to zauważasz
- Działania masowe, takie jak usuwanie wielu wiadomości czy zmiana wielu ról, są celowo spowalniane.
- Wielokrotna zmiana nazwy lub tematu kanału w krótkim czasie jest ograniczana osobno dla każdego kanału.
- Dodawanie wielu reakcji lub seryjne wysyłanie wiadomości wywołuje krótkie pauzy.
Dla członka wygląda to jak bot, który odpowiada z opóźnieniem, a nie jak błąd. To system robi swoją pracę.
Poważniejsza wersja: tymczasowe blokady
Jeśli aplikacja wysyła zbyt wiele błędnych żądań, na przykład tysiące odpowiedzi 401, 403 lub 429 w ciągu dziesięciu minut, Discord może na jakiś czas zablokować jej adres IP na warstwie Cloudflare. Bot hostowany na współdzielonej maszynie może wtedy zawieść, mimo że z twoim serwerem jest wszystko w porządku. Jedynym rozwiązaniem jest czekanie.
Nigdy nie próbuj obchodzić limitów żądań dodatkowymi kontami ani skryptami. Istnieją po to, by chronić platformę, a obchodzenie ich grozi banem.
Co możesz zrobić jako właściciel
- Rozkładaj duże zadania zamiast uruchamiać je wszystkie naraz.
- Unikaj zmieniania nazw kanałów według harmonogramu.
- Wybieraj boty, które kolejkują żądania i respektują limity.
Limity żądań a Noxyr
Logi serwera Noxyr są publikowane co kilka sekund na kanał i najwyżej po dziesięć naraz, więc nalot ani duże czyszczenie nigdy nie zalewają kanału logów, co opisuje dokumentacja logów serwera. Wysyłanie czatu na żywo w Noxyr też jest ograniczone, aby zapobiec zalewaniu. Własne boty mają pokrewną zasadę: każda zmiana hosta to nowe logowanie do Discorda, więc między przeniesieniami jest pięciominutowe oczekiwanie, zobacz hosting własnych botów.
Limity żądań skłaniają też duże boty do podziału na kilka połączeń, zobacz sharding. Jeśli twój bot wydaje się zawieszony, najpierw sprawdź stronę statusu i pingu.
Częste pytania
Co oznacza HTTP 429 na Discordzie?
Zbyt wiele żądań. Discord każe botowi poczekać czas podany w wartości Retry-After przed ponowną próbą.
Czy limit żądań to ban?
Nie. To krótka pauza. Dłuższą tymczasową blokadę może spowodować tylko powtarzające się nadużycie.
Dlaczego mój bot odpowiada wolno podczas dużego czyszczenia?
Działania zbiorcze są ograniczane przez Discord, więc bot musi je rozłożyć w czasie.