Si votre bot rencontre l'erreur de nombre d'actions limité (Rate Limit), ne vous inquiétez pas : Il s'agit d'une difficulté courante qui peut être surmontée en adoptant une approche adéquate. Cet article vous aidera à comprendre le système de limitation du nombre d'actions de Discord et vous fournira des solutions pratiques.
Contenu
Comprendre les différentes sortes de limite du nombre d'actions de Discord
Limites du nombre d'actions globales
Limites du nombre d'actions par chemin
Limites du nombre d'actions spécifiques aux ressources
Limites du nombre d'actions invalides
Comment identifier votre problème de limite du nombre d'actions
Bonnes pratiques pour traiter les limites du nombre d'actions
Limites du nombre d'actions globales
Considérations sur la passerelle et le Sharding
Comprendre les différentes sortes de limite du nombre d'actions de Discord
Discord utilise plusieurs types de limite du nombre d'actions pour protéger son API. L'identification du type de limitation que vous rencontrez est cruciale pour réussir à trouver la bonne solution :
Limites du nombre d'actions globales
Limite : 50 demandes par seconde sur la plupart des points de terminaison
Portée: S'applique à l'ensemble de votre application
Identification : Recherchez X-RateLimit-Scope: global dans les en-têtes de réponse
Limites du nombre d'actions par chemin
Limite : Varie selon le point de terminaison
Portée : Spécifique à chaque chemin d'API
Identification: Recherchez X-RateLimit-Scope: user
Limites du nombre d'actions spécifiques aux ressources
Remarque : Les limites du nombre d'actions spécifiques aux ressources peuvent être atteintes par plusieurs sources (d'autres utilisateurs, des bots, des webhooks, etc.) et peuvent ne pas indiquer que votre application est la seule responsable.
Limite : Limites indépendantes pour des guildes, des salons ou des webhooks spécifiques.
Portée : S'applique aux actions sur des ressources spécifiques.
Identification : Recherchez X-RateLimit-Scope: shared dans les en-têtes
Limites du nombre d'actions invalides
Limite : 10 000 actions invalides par tranche de 10 minutes
Cause commune : Erreurs non gérées (401, 403 ou 429) provoquant des pics de requête. Veuillez noter que les erreurs 429 retournées avec X-RateLimit-Scope: shared ne sont pas comptées dans votre limite de requêtes invalides.
Résultat : Interdiction temporaire de Cloudflare
Comment identifier votre problème de limite du nombre d'actions
La manière la plus fiable de déterminer quelle limite vous avez atteinte est d'examiner les en-têtes de réponse HTTP lorsque vous recevez un code d'état 429. Vérifiez les en-têtes clés :
X-RateLimit-Limit : Plafond de limite du nombre d'actions pour ce point de terminaison
X-RateLimit-Remaining : Nombre de requêtes restantes dans l'intervalle actuel
X-RateLimit-Reset : Lorsque l'intervalle de limite du nombre d'actions se réinitialise (horodatage Unix)
X-RateLimit-Reset-After : Secondes jusqu'à la réinitialisation de la limite
X-RateLimit-Scope: Indique le type de limite du nombre d'actions (global, utilisateur ou partagé)
retry_after : Millisecondes à attendre avant de faire une autre requête
Bonnes pratiques pour traiter les limites du nombre d'actions
Mettre en œuvre les stratégies de retour arrière appropriées
Respectez toujours la valeur retry_after dans les réponses de limite du nombre d'actions. Cela vous indique exactement combien de temps attendre avant de réessayer.
Envisagez d'utiliser des interactions lorsque cela est possible
Les commandes d'application et les composants de message sont une excellente alternative aux commandes par préfixe qui peuvent empêcher des demandes excessives à l'API et des messages dans les salons.
Astuce supplémentaire : Rendez les réponses d'interaction et les messages de suivi éphémères sachant qu'ils ne sont pas pris en compte par la limitation du nombre d'actions.
Mettre en cache les données de manière efficace
Réduisez les appels API en mettant en cache les données fréquemment consultées, comme :
- Informations de guilde
- Détails du salon
- Profils d'utilisateur
- Données de rôle
Utiliser le ralentissement (throttling) des requêtes
Le "throttling" est une approche proactive pour éviter la limitation du nombre d'actions en contrôlant le rythme de vos demandes avant d'atteindre la limite.
Par exemple, si votre bot doit envoyer des messages de bienvenue à 200 nouveaux membres, au lieu d'envoyer immédiatement les 200 messages, placez-les dans une file d'attente qui libère 4 requêtes toutes les 100 millisecondes. Cela permet de maintenir un nombre constant de 40 requêtes par seconde, restant bien en dessous de la limite de 50 requêtes tout en garantissant que tous les messages sont envoyés en 5 secondes approximativement.
Limites du nombre d'actions globales
Si vous atteignez les limites du nombre d'actions globales, votre programme pourrait avoir un problème sous-jacent qui doit être résolu.
Voici comment optimiser votre code pour respecter les limites :
- Mettre en place le cache approprié
- Migrer vers des fonctionnalités basées sur l'interaction
Si ces solutions ne permettent pas de résoudre vos problèmes de limite du nombre d'actions globale, nous vous encourageons à demander de l'aide sur le serveur Discord des développeurs dans le salon#api-help ou à contacter le support des développeurs.
Considérations sur la passerelle et le Sharding
Pour les bots gérant des événements en temps réel via la passerelle de Discord (connexion websocket), le partitionnement ou "sharding" est essentiel à mesure que votre bot se développe.
Qu'est-ce que le Sharding ?
Le sharding divise votre bot en plusieurs instances, chacune gérant ensuite un sous-ensemble de guildes. Cela répartit la charge sur plusieurs connexions websocket, vous aidant à respecter les limites du nombre d'actions.
Il est conseillé de commencer à planifier la mise en place du sharding lorsque l'on s'approche de 2 000 guildes, car le sharding doit absolument être activé à 2 500 guildes ou plus. Pour des performances optimales, suivez la bonne pratique consistant à maintenir environ 1 shard par tranche de 1 000 guildes.
N'oubliez pas que si les limites du nombre d'actions existent, ce n'est que pour garantir une expérience de stabilité à tous les utilisateurs de Discord. En suivant ces bonnes pratiques, vous pourrez créer un bot qui évolue efficacement tout en respectant ces limites.