Botun hız sınırı hatalarıyla karşılaşıyorsa endişelenme; bu, doğru yaklaşımla çözülebilecek yaygın bir sorundur. Bu makale Discord'un hız sınırlandırma sistemini anlamana yardımcı olacak ve pratik çözümler sunacaktır.
İçerik
Discord'un Hız Sınırı Türlerini Anlama
Hız Sınırı Sorununu Nasıl Belirlersin
Hız Sınırlarıyla Başa Çıkma İçin En İyi Uygulamalar
Ağ Geçidi Hususları ve Parçalama
Discord'un Hız Sınırı Türlerini Anlama
Discord, API'yi korumak için çeşitli hız sınırları uygular. Karşılaştığın sorunun türünü belirlemek, doğru çözümü bulmak için çok önemlidir:
Global Hız Sınırları
Sınır: Çoğu uç nokta için saniyede 50 istek
Kapsam: Tüm uygulamana uygulanır
Belirleme: Yanıt başlıklarında X-RateLimit-Scope: global öğesini ara
Yol Bazlı Hız Sınırları
Sınır: Uç noktaya göre değişir
Kapsam: Bireysel API yollarına özgü
Belirleme: X-RateLimit-Scope: user öğesini ara
Kaynak Bazlı Hız Sınırları
Not: Kaynak bazlı hız sınırlarına çeşitli kaynaklar (diğer kullanıcılar, botlar, webhooklar vb.) tarafından ulaşılabilir ve uygulamanın tek başına sorumlu olduğu anlamına gelmeyebilir.
Sınır: Belirli loncalar, kanallar veya webhooklar için bağımsız sınırlar
Kapsam: Belirli kaynaklardaki eylemlere uygulanır.
Belirleme: Başlıklarda X-RateLimit-Scope: shared öğesini ara
Geçersiz İstek Sınırları
Sınır: 10 dakikada 10.000 geçersiz istek
Genel Neden: İstek artışlarına neden olan işlenmemiş hatalar (401, 403 veya 429). X-RateLimit-Scope: shared ile döndürülen 429 hatalarının geçersiz istek sınırlarına dahil edilmediğini lütfen unutma.
Sonuç: Geçici Cloudflare yasağı
Hız Sınırı Sorununu Nasıl Belirlersin
Hangi sınıra ulaştığını belirlemenin en güvenilir yolu, 429 durum kodunu aldığında HTTP yanıt başlıklarını incelemektir. Kontrol edilmesi gereken anahtar başlıklar:
X-RateLimit-Limit: Bu uç nokta için hız sınırı tavanı
X-RateLimit-Remaining: Mevcut aralıkta kalan istek sayısı
X-RateLimit-Reset: Hız sınırı aralığı sıfırlandığında (Unix zaman damgası)
X-RateLimit-Reset-After: Sınırın sıfırlanmasına kalan saniye
X-RateLimit-Scope: Hız sınırının türünü (global, kullanıcı veya paylaşımlı) belirtir
retry_after: Başka bir istekte bulunmadan önce beklenmesi gereken milisaniye
Hız Sınırlarıyla Başa Çıkma İçin En İyi Uygulamalar
Uygun Geri Çekilme Stratejilerini Uygula
Hız sınırı yanıtlarında retry_after değerine her zaman saygı göster. Bu, yeniden denemeden önce ne kadar beklemen gerektiğini tam olarak söyler.
Mümkün Olduğunda Etkileşimleri Kullanmayı Düşün
Uygulama komutları ve mesaj bileşenleri, kanallardaki aşırı API isteklerini ve mesajlarını önleyebilecek, ön ek komutlarına mükemmel bir alternatiftir.
Bonus ipucu: Etkileşim Yanıtlarını ve takip mesajlarını geçici hale getir çünkü bunlar hız sınırlarına dahil edilmez.
Verileri Etkili Şekilde Önbelleğe Al
Sık erişilen verileri önbelleğe alarak API çağrılarını azalt, örneğin:
- Lonca bilgisi
- Kanal detayları
- Kullanıcı Profilleri
- Rol verisi
İstek Kısıtlaması Kullan
Kısıtlama (throttling), sınıra ulaşmadan önce isteklerinin hızını kontrol ederek hız sınırlandırmalarını önlemenin proaktif bir yaklaşımıdır.
Örneğin, botunun 200 yeni üyeye hoş geldiniz mesajı göndermesi gerekiyorsa, 200 mesajın tamamını hemen göndermek yerine, her 100 milisaniyede 4 istek gönderen bir kuyruğa yerleştir. Bu, saniyede 40 isteklik sabit bir hızı koruyarak 50 istek sınırının güvenlice altında kalırken, tüm mesajların yaklaşık 5 saniye içinde gönderilmesini sağlar.
Global Hız Sınırları
Global hız sınırlarına ulaşıyorsan, programında ele alınması gereken temel bir sorun olabilir.
Kodunu sınırlar içinde kalması için şu şekilde optimize edebilirsin:
- Uygun önbelleğe alım uygulamak
- Etkileşim tabanlı özelliklere geçiş yapmak
Bu çözümler global hız sınırı sorunlarını çözmezse, Discord Geliştirici Sunucusu #api-help kanalına veya Geliştirici Desteği'ne ulaşmanı öneririz.
Ağ Geçidi Hususları ve Parçalama
Discord'un ağ geçidi (web soketi bağlantısı) üzerinden gerçek zamanlı olayları yöneten botlar için, botun büyüdükçe parçalama (sharding) olmazsa olmazdır.
Parçalama nedir?
Parçalama (sharding), botunu her biri loncaların bir alt kümesini yöneten birden fazla örneğe böler. Bu, yükü birden fazla web soketi bağlantısına dağıtır ve hız sınırları içinde kalmana yardımcı olur.
2.000 loncaya yaklaşıldığında parçalama uygulamasının planlanmasına başlanması önerilir, çünkü 2.500+ loncada parçalamanın etkinleştirilmesi gerekir. En iyi performansı elde etmek adına, her 1.000 lonca için yaklaşık 1 parça bulundur.
Unutma, hız sınırları tüm Discord kullanıcıları için istikrarlı bir deneyim sağlamak amacıyla var. Bu en iyi uygulamaları takip ederek, bu sınırlara saygı duyarken etkili bir şekilde büyüyen bir bot oluşturabilirsin.