Lancer le moteur
1. Préparer un serveur de test
Créez un serveur Discord dont le nom contient bucketmap : le moteur refuse de toucher à un serveur qui ne porte pas ce marqueur. Invitez-y votre bot en administrateur, ainsi que quatre comptes qui serviront d'utilisateurs de test.
2. Installer
go install github.com/FCAgreatgoals/bucketmap/cmd/bucketmap@latest
3. Lancer
export TOKEN=votre-jeton-de-bot
bucketmap run -guild GUILD_ID -users USER1,USER2,USER3,USER4
La série dure dix minutes, affiche un résumé et écrit le rapport complet dans bucketmap.json. Tout ce qu'elle crée est supprimé à la fin.
Ce que donne une série
- Chaque requête et sa réponse : le statut, la latence et les en-têtes de limite de débit envoyés par Discord.
- Chaque bucket rencontré : sa limite, le temps qu'il met à se recharger, et s'il se recharge une requête à la fois ou d'un coup. Les buckets partagés par plusieurs routes sont signalés.
- Chaque échec : une étape qui n'a pas répondu comme prévu, et chaque 429, qui ne devrait jamais arriver puisque le moteur ne pousse jamais un bucket jusqu'au bout.
Les chiffres sont propres à votre bot : les limites de Discord varient d'une application à l'autre et changent avec le temps.
Options de bucketmap run
-guild: identifiant du serveur de test ;-users: identifiants des quatre utilisateurs de test, séparés par des virgules ;-token: jeton du bot, sans le préfixeBot(par défaut, la variableTOKEN) ;-api: racine de l'API à tester, Discord par défaut (https://discord.com/api/v10), ou votre proxy ;-report: fichier du rapport (par défautbucketmap.json) ;-duration: durée sur laquelle étaler la série (par défaut10m) ;-marker: texte que le nom du serveur doit contenir (par défautbucketmap).
Ce que touche le moteur
Le moteur ne travaille que dans le serveur dont le nom porte le marqueur. Il étale environ 270 requêtes sur la durée de la série, attend qu'un bucket épuisé se recharge, et ne réessaie jamais après un 429. Chaque requête porte une raison dans les logs d'audit qui nomme son étape, et tout ce qu'il crée s'appelle bucketmap et est supprimé à la fin.
Ce qui ne peut pas être annulé pendant une série n'arrive que si vous le demandez :
-allow-kick: expulse l'utilisateur de test 3 ;-allow-ban: bannit puis débannit l'utilisateur de test 4, un par un puis en masse ;-allow-prune: exclut les membres inactifs depuis trente jours qui n'ont aucun rôle ;-allow-global-commands: crée puis supprime une commande globale, visible un instant sur tous les serveurs du bot.
Les utilisateurs expulsés ou bannis reviennent par l'invitation affichée à la fin. Les étapes qui demandent un serveur communautaire (salons d'annonces et de conférence, écran d'accueil, filtrage des membres) s'exécutent quand le serveur a la fonctionnalité COMMUNITY.
Couverture
bucketmap coverage
Affiche les routes que le moteur exerce : 179 à chaque série, et 24 de plus avec une option ou sur un serveur communautaire. Les autres demandent une interaction lancée par un utilisateur, un jeton OAuth2, ou modifieraient quelque chose qu'une série ne peut pas rétablir : chacune explique pourquoi dans ses notes.
bucketmap version affiche la version installée.