Scoreboards Documentation

Everything you need to create and manage Discord leaderboards

  1. Ajoute le bot — Invite Scoreboards sur ton serveur Discord avec le lien d'invitation de la page d'accueil.
  2. Lance l'assistant — Utilise /get started : un formulaire rapide pour nommer le leaderboard, choisir un type et éventuellement un salon de logs — et il est posté directement dans le salon. Les boards Point, Highscore et Time démarrent avec quelques entrées d'exemple, histoire de voir le board tourner ; elles disparaissent dès le premier vrai score.
  3. Attribue les rôles — Ouvre le dashboard pour définir le rôle <arg>bot permission</arg> (ceux qui peuvent gérer les leaderboards) et le rôle <arg>validator</arg> (ceux qui peuvent approuver les envois).
  4. Crée ton premier leaderboard — Utilise /scoreboard create pour le mettre en place : choisis un nom et un type, puis règle le reste dans le formulaire qui s'ouvre.
  5. Affiche-le — Utilise /scoreboard show dans un salon pour poster le leaderboard interactif, avec ses boutons d'envoi et de pagination.

Au moment de créer un leaderboard avec /scoreboard create, tu choisis parmi six types :

Classic

Ajoute ou retire des points d'un total qui court. Le format des jeux où les points s'accumulent.

Highscore

Ne garde que le record personnel de chaque joueur. Les scores plus faibles sont remplacés automatiquement.

Time (Speedrun)

Les temps s'envoient en 00:00:00 (centièmes) ou 00:00:000 (millisecondes) — le format d'affichage du board se règle dans le dashboard, et les nouveaux boards sont en millisecondes par défaut. Tri croissant si le plus rapide gagne, décroissant si c'est le plus long.

ELO - Ranked

Système de rating ELO compétitif, en 1v1 ou en équipes de 2v2 à 8v8. Tu envoies le résultat du match et le rating de chaque participant bouge tout seul.

Rating

Les membres envoient des images et la communauté les note en étoiles (1 à 10). La moyenne des votes fait le score. Parfait pour les concours d'art et les défis créatifs.

League

Classement aux points, match par match, pour le foot, le basket ou FIFA. Points par victoire/nul/défaite configurables (3/1/0 par défaut) et un score de match (3-1, par exemple).

Gérer les leaderboards

CommandeDescriptionPermission
/scoreboard createCrée un leaderboard : choisis un nom et un type, puis règle le tri et plus dans le formulaireAdmin / Bot Permission
/scoreboard showAffiche le leaderboard dans le salon courant, avec ses boutons interactifsAdmin / Bot Permission
/scoreboard settingsOuvre le dashboard pour régler ce scoreboard (tri, visibilité, en-têtes, mode d'affichage, config ELO, etc.)Admin / Bot Permission
/scoreboard deleteSupprime définitivement un leaderboard et toutes ses données (confirmation requise)Admin / Bot Permission
/scoreboard season endTermine une season en gelant le board — le classement reste comme archive permanente, et tu peux dégeler depuis le dashboard pour reprendreAdmin / Bot Permission
/importImporte des scores dans un leaderboard depuis un fichier CSV (migration depuis un autre bot ou un tableur)Admin / Bot Permission

Envoyer scores et matchs

CommandeDescriptionPermission
/submitEnvoie sur n'importe quel leaderboard. Le bot ouvre l'étape qui correspond au type — une fenêtre de score (Classic/Highscore/Time), un sélecteur joueur + vainqueur (ELO), un sélecteur joueur + score (League), ou une fenêtre de nom (Rating, avec l'image jointe à la commande). Sur un board en équipes, les sélecteurs demandent la composition complète de chaque camp.Tout le monde
/setFixe manuellement le score exact ou le rating ELO d'un joueurAdmin / Bot Permission
/adjustAjoute ou retire une valeur au score d'un joueur (valeur négative pour retirer)Admin / Bot Permission
/player removeRetire un joueur d'un leaderboardAdmin / Bot Permission

Configuration

CommandeDescriptionPermission
/get startedLance l'assistant de configuration initialeAdmin
/helpOuvre l'aide interactive, avec tous les sujets disponiblesTout le monde

Il y a deux chemins :

  • Lance /submit et choisis un leaderboard. Le bot ouvre le flux qui correspond au type — une saisie de score pour Classic/Highscore/Time, un sélecteur joueurs + vainqueur pour ELO, un sélecteur joueurs + score pour League, ou une saisie de nom pour Rating (avec l'image jointe à la commande). Sur un leaderboard en équipes, il te demande la composition complète de chaque camp au lieu d'un seul joueur.
  • Ou clique sur le bouton Submit du message du leaderboard — ça ouvre exactement le même flux.

La validation

  1. L'envoi est posté dans le salon de logs, si tu en as défini un.
  2. Un validateur ou un admin clique sur Approve ou Reject.
  3. En cas de refus, l'auteur reçoit un DM avec le motif.
  4. En cas d'approbation, le leaderboard se met à jour immédiatement.

Validation automatique

Chaque leaderboard peut approuver les envois tout seul après un certain délai : Off, Instant, 1 hour, 3 hours, 24 hours, 3 days ou 7 days. Les leaderboards ELO sont sur 24 heures par défaut.

Annuler un score

Admins et validateurs peuvent revenir sur un score déjà approuvé : clic droit sur le message de l'envoi, puis "Cancel Score/Match". Le score est rétabli comme avant et un motif d'annulation est demandé.

Le type de leaderboard ELO - Ranked classe les joueurs selon un rating ELO, en 1v1 ou en équipes allant jusqu'à huit joueurs par camp.

Comment ça marche

  • Tout le monde démarre au même ELO de départ, que tu choisis (1200 par défaut).
  • Un match se solde par une victoire, une défaite ou un nul.
  • Les ratings sont calculés avec un facteur K de 32.
  • Le rating de tous les participants bouge en même temps, dès que le match est approuvé.

Matchs en équipe (2v2 – 8v8)

Les leaderboards ELO et League peuvent être verrouillés sur une taille d'équipe fixe — choisis-la à la création, ou change-la plus tard sous Match format dans le dashboard. Sur un leaderboard 3v3, chaque match oppose alors trois joueurs par camp, et le classement reste individuel.

En ELO, le résultat attendu d'une équipe se calcule sur son rating moyen, et l'écart obtenu s'applique à chacun de ses membres — battre plus fort que soi rapporte donc autant à tous les vainqueurs. En League, tous les joueurs du camp gagnant touchent les points de la victoire, et toute l'équipe perdante ceux de la défaite.

Queue de matchmaking (bêta)

Si le bouton queue est activé sur le leaderboard, les joueurs s'y mettent en file d'un clic. Le système regroupe les joueurs de rating proche en élargissant petit à petit la fenêtre de recherche. Quand un match se forme, un fil est créé avec les boutons de vote de la communauté. Sans match trouvé au bout de 5 minutes, la place en queue expire.

Sur un leaderboard en équipes, la queue attend d'avoir de quoi remplir les deux camps — six joueurs pour un 3v3 — puis les répartit en deux équipes aux ratings moyens les plus proches possible, de sorte que les plus forts et les plus faibles se retrouvent face à face. Tout le monde doit cliquer sur Ready ; si quelqu'un ne le fait pas, il saute et les autres retournent en queue en gardant leur place.

Chaque équipe a son propre salon vocal, pour parler tactique sans que l'adversaire écoute — tu ne vois et ne rejoins que celui de ton équipe. Les deux salons disparaissent une fois le match finalisé. Un résultat n'est acté qu'à la majorité dans chaque équipe (deux sur trois en 3v3) : une équipe ne peut donc jamais s'auto-proclamer vainqueur. Tout le reste part en litige, qu'un validateur tranche.

La queue n'est plus réservée à ELO : un classement League peut aussi l'activer. Comme les points de League sont un cumul et non une estimation de niveau, les boards League apparient sur les points par match — jouer davantage ne suffit donc pas à vous faire monter dans la queue.

Équipes fixes

Un leaderboard ELO ou League avec taille d'équipe peut aussi tourner en mode fixed teams (à activer dans le dashboard, juste à côté de Match format). Des équipes nommées s'inscrivent une bonne fois via le bouton Team sign-up du leaderboard — un nom, puis l'effectif, qui peut compter jusqu'à deux remplaçants en plus de la taille d'équipe. Ce sont alors les équipes elles-mêmes qui sont classées : sur un board ELO, chacune a son rating et battre plus fort que soi rapporte davantage ; sur un board League, le tableau les classe aux points, exactement comme une vraie ligue. En League, les équipes fixes enregistrent leurs matchs avec /submit.

Dès qu'un seul membre clique sur Queue, c'est toute l'équipe qui part en file, et chacun reçoit un DM. Le matchmaking oppose les équipes selon leur rating, et le ready-check sert en même temps de composition : les premiers de chaque effectif à cliquer sur Ready entrent sur le terrain jusqu'à remplir l'équipe, les autres sont sur le banc pour ce match. Le résultat est voté par ceux qui ont joué, avec la même règle de majorité dans chaque camp.

Le type de leaderboard League classe les joueurs aux points accumulés au fil des matchs. C'est le format du foot, du basket, du futsal, du hockey et de toute compétition, en 1v1 ou par équipes, où c'est le tableau qui fait foi.

Comment ça marche

  • Enregistre un match avec /submit — le bot demande les deux camps et un score pour chacun (3 et 1, par exemple).
  • Le score le plus élevé l'emporte ; à égalité, c'est un nul.
  • Le camp vainqueur reçoit points_win, le perdant points_loss, et en cas de nul tout le monde touche points_draw. Dans une ligue par équipes, chaque joueur récupère les points de son camp.
  • Le leaderboard classe aux points totaux, et compte les victoires, nuls et défaites à côté.

Points par défaut

Les nouvelles ligues démarrent en 3 / 1 / 0 (la norme FIFA depuis 1994). Les trois valeurs se règlent leaderboard par leaderboard depuis le dashboard. Passe en 2 / 1 / 0 pour le hockey, 4 / 2 / 0 pour le rugby, ou invente le barème qui colle à ton sport.

Enregistrer un match

Sur le site, ouvre le leaderboard et clique sur Submit — saisis les deux camps et le score du match. La commande /submit ouvre exactement la même chose dans Discord. Les matchs où le même joueur figure des deux côtés et les scores négatifs sont refusés d'emblée.

Ligues par équipes

Un leaderboard League peut être verrouillé sur une taille d'équipe fixe, de 2v2 à 8v8, à la création ou plus tard sous Match format dans le dashboard. Le tableau continue de classer les joueurs un par un : tout le camp gagnant touche les points de la victoire, tout le camp perdant ceux de la défaite, et le score du match compte comme buts marqués et encaissés pour chacun d'eux.

Tu préfères un vrai tableau de ligue, où ce sont les équipes qui occupent les lignes ? Active Fixed teams à côté de Match format : des équipes nommées s'inscrivent via le bouton Team sign-up du leaderboard (jusqu'à deux remplaçants par effectif), les matchs s'enregistrent équipe contre équipe avec un score, et le tableau classe les équipes aux points.

Validation et annulation

Les matchs League passent par la même file de validation que les matchs ELO : un validateur approuve ou refuse chaque envoi, les points s'appliquent à l'approbation, et un match approuvé peut être annulé ensuite — ce qui retire exactement les points qui avaient été donnés.

Les leaderboards ELO et League n'ont pas besoin de deux camps. Dans un match chacun pour soi, tout le monde joue pour soi — de 3 à 8 joueurs — et le résultat est la place de chacun. Active-le avec l'option ffa_players à la création du leaderboard, ou plus tard dans Match format du dashboard. Il remplace les matchs en équipe : un leaderboard chacun pour soi ne peut pas avoir en plus une taille d'équipe ou des équipes fixes, et l'activer ne vaut que pour les nouveaux matchs — tout ce qui est déjà enregistré reste exactement en l'état.

Les types de résultat

RésultatELOLeague
Ordre d'arrivée complet — du 1er au dernier✓ Oui✓ Oui
Match nul pour tout le monde✓ Oui✓ Oui
Un vainqueur, tous les autres non classés— Non proposé✓ Oui

Le vainqueur seul est un mode League. Là, il ne demande rien de plus que ce qu'il dit : le vainqueur prend les points de victoire et le reste ceux de défaite. Un classement ne peut pas être aussi souple — si les perdants restent non classés, la seule chose qu'il puisse honnêtement dire d'eux, c'est qu'ils ont tous fait match nul, et alors un joueur mal classé gagne des points sur un match que son bilan compte comme une défaite. C'est pourquoi un chacun pour soi ELO demande l'ordre complet, ou un match nul général qui a vraiment eu lieu.

Signaler un résultat

Les leaderboards chacun pour soi portent un bouton Report result à la place de Submit result. Choisis d'abord tous ceux qui ont joué — de 3 jusqu'à la taille du lobby, pour qu'un leaderboard à 6 joueurs puisse quand même enregistrer la soirée où cinq personnes se sont présentées. Définis ensuite le résultat : un leaderboard League demande qui a gagné, avec Match nul pour tout le monde dans le même menu et Définir l'ordre complet si tu préfères classer tout le plateau ; un leaderboard ELO demande directement l'ordre, une place par clic, avec Annuler le dernier en cas de faux pas et un bouton Match nul pour tout le monde à côté. Envoyer reste grisé tant que le résultat n'est pas un résultat que le leaderboard sait noter. Ce bouton est le seul moyen de signaler un résultat chacun pour soi dans Discord : si ton leaderboard ne l'affiche pas, active-le dans le dashboard sous Affichage Discord → Bouton Submit, ou enregistre le match depuis la page du leaderboard sur le site.

Ensuite, un chacun pour soi est une soumission tout à fait ordinaire. Elle arrive dans la file de validation, un validateur l'approuve ou la refuse (ou l'approbation automatique s'en charge après le délai configuré), les classements et les points bougent à l'approbation, et annuler un match approuvé rend à chaque joueur exactement ce qu'il lui avait donné.

Comment le classement est calculé

Un chacun pour soi ELO est noté comme l'ensemble de ses confrontations directes d'un seul coup. Chaque paire de joueurs est comparée — la meilleure place bat la moins bonne, une place identique est un nul entre eux — et chacun de ces mini-résultats est calculé avec la même formule de score attendu qu'un 1v1. Finir devant des joueurs classés bien au-dessus de toi rapporte donc beaucoup plus que finir devant le bas du plateau. Le facteur K est ensuite divisé par le nombre d'adversaires, et c'est ce qui maintient un chacun pour soi à environ un match de mouvement de classement plutôt qu'aux sept duels que tu as techniquement joués.

L'ensemble est à somme nulle exacte : ce que le plateau perd est ce que les autres gagnent, au point près. Six joueurs de même niveau à K=32 repartent avec +16, +10, +3, −3, −10, −16. Le bilan suit la place — la première, même partagée, compte comme une victoire, tout ce qui est en dessous comme une défaite, et le match nul général comme un nul pour tout le plateau.

Points de place sur les leaderboards League

Un chacun pour soi League peut récompenser tout le plateau avec une table de points de place, façon F1 : tant de points pour le premier, tant pour le deuxième, et ainsi de suite jusqu'au bas du lobby. Tu l'édites dans le dashboard, sous les points de victoire, de nul et de défaite, sur tout leaderboard League qui joue en chacun pour soi. Les joueurs à égalité prennent chacun les points de la place qu'ils partagent, et ceux qui finissent au-delà de la fin de la table continuent de marquer sa dernière valeur.

La table ne s'applique qu'à un classement complet. S'il reste quelqu'un sans place — un signalement vainqueur seul, ou un ordre que tu as laissé à moitié — elle ne s'applique pas du tout : la première place prend les points de victoire du leaderboard et tous les autres ceux de défaite. C'est aussi ce que tu obtiens sans aucune table configurée, la table est donc optionnelle. Un match nul général verse les points de nul à tout le monde, quoi que dise la table.

Le chacun pour soi dans la file de matchmaking

Avec le bouton de file activé, un leaderboard chacun pour soi met des joueurs seuls en attente et se déclenche dès qu'il a exactement la taille du lobby — six joueurs sur un leaderboard à 6, jamais cinq ni sept. Il n'y a pas de camps à équilibrer, donc le plateau est simplement le groupe aux classements les plus proches que la file peut réunir. Tout le monde doit quand même cliquer sur Ready, et le match reçoit un seul salon vocal partagé : dans un chacun pour soi, il n'y a pas de coéquipiers à qui cacher quoi que ce soit.

Le résultat est signalé plutôt que voté — trois boutons de vote ne peuvent pas exprimer un ordre d'arrivée à huit joueurs. N'importe quel joueur du plateau définit le résultat sur le message du match et les autres cliquent sur Confirmer ; c'est acté dès qu'une majorité du plateau est d'accord (deux sur trois, cinq sur huit), celui qui a signalé comptant comme le premier d'entre eux. Contester confie le match à un validateur, qui définit le bon résultat et le confirme lui-même. Un match de la file se règle dans son propre fil, il ne passe donc pas par la file de validation.

Le type de leaderboard Rating laisse les membres envoyer des images et donner des étoiles à celles des autres.

Comment ça marche

  • On envoie une image avec /submit — joins l'image à la commande, puis écris un nom dans la fenêtre qui s'ouvre.
  • Les envois atterrissent dans le salon de logs, avec un menu de notation.
  • N'importe qui peut donner de 1 à 10 étoiles. Les votes deviennent une moyenne.
  • Chacun peut changer son vote quand il veut — mais un seul vote par personne et par envoi.
  • Le leaderboard classe les envois à la note moyenne.

Noter depuis le site

Sur le site, les envois se trouvent dans l'onglet Entries. Clique sur l'un d'eux pour voir l'image en grand et mettre tes étoiles directement. Tes votes sont retenus d'une visite à l'autre.

Tu décides qui voit tes leaderboards sur le site Scoreboards :

Public

Visible par tout le monde sur le site.

Caché

Visible uniquement par les membres de ton serveur Discord (connexion requise).

Privé

Visible uniquement par les membres qui ont un rôle Discord précis.

Désactivé

N'apparaît pas du tout sur le site.

Attribue automatiquement des rôles Discord aux joueurs selon leur place au classement. Tu peux par exemple donner un rôle « Champion » au top 3, un rôle « Vétéran » aux rangs 4 à 10, et ainsi de suite.

  • Les tiers se configurent depuis le dashboard web, dans les réglages de chaque leaderboard.
  • Choisis comment un tier se définit : par rank (les rangs 1 à 3), par percentile (les 10 % du haut) ou par score (tous ceux à 2000 points et plus). Tous les tiers d'un même leaderboard partagent le même mode.
  • Associe à chaque tier n'importe quel rôle Discord existant.
  • Les rôles sont donnés et retirés automatiquement à mesure que le classement bouge.
  • Le rôle Scoreboards doit se trouver au-dessus de tous les rôles qu'il attribue, dans Server Settings → Roles. Discord interdit aux bots de gérer les rôles situés à leur niveau ou plus haut, et le bot postera un avertissement dans le salon du leaderboard s'il tombe dessus.

Tu fais déjà tourner une compétition ailleurs ? /import prend un fichier CSV et remplit le leaderboard avec, pour t'éviter de tout retaper.

Deux chemins possibles : dans Discord, lance /import, choisis le leaderboard et joins le fichier ; ou sur le site, ouvre le dashboard, sélectionne un leaderboard et utilise Import from CSV. Les leaderboards personnels ne dépendent d'aucun serveur Discord : pour ceux-là, c'est le dashboard. Le fichier, lui, est le même dans les deux cas — un <arg>name,score</arg> par ligne :

name,score
Alex,120
"Cooney, EM",95
Sam,88
  • Une ligne d'en-tête est repérée et ignorée automatiquement.
  • Virgule, point-virgule et tabulation font tous office de séparateur — prends ce que ton tableur exporte.
  • Les noms qui contiennent une virgule passent s'ils sont entre guillemets, comme <arg>"Cooney, EM"</arg>.
  • Si le nom est un identifiant Discord, la ligne est rattachée au membre et affiche son pseudo. Tout le reste devient une entrée libre.
  • Le même nom deux fois garde la dernière valeur : tu peux réimporter un fichier corrigé par-dessus.
  • Les lignes illisibles sont sautées et listées avec leur numéro — le reste passe quand même, tu corriges deux ou trois lignes et tu relances.

Les temps acceptent <arg>mm:ss</arg>, <arg>hh:mm:ss</arg> et éventuellement une fraction : <arg>1:30</arg>, <arg>1:12:44.081</arg>. Un nombre seul est lu comme des millisecondes. Attention : trois nombres séparés par des deux-points valent <arg>heures:minutes:secondes</arg>, donc la précision sous la seconde s'écrit après un point.

Limites : 500 lignes et 100 Ko par fichier — découpe les exports plus gros et importe-les en plusieurs fois. Les leaderboards Image Rating ne s'importent pas : leurs entrées sont des images envoyées, pas des scores.

Les seasons permettent de clore une compétition sans rien perdre. Programme une fin (ou termine depuis le dashboard) et le board gèle : un podium est publié et le classement reste exactement tel quel.

  • Rien n'est réinitialisé ni supprimé — le board gelé est l'archive permanente de la season, visible par tous.
  • Un board gelé n'accepte plus d'envois, de matchs ni de votes ; un admin peut le dégeler à tout moment.
  • Tous les types de board peuvent avoir des seasons — y compris Rating, où geler un board à vote à l'aveugle révèle aussi les résultats.
  • Envie d'une nouvelle season ? Crée un nouveau board et laisse le board gelé comme archive.

Les récaps hebdomadaires postent chaque lundi un petit bilan dans le salon du leaderboard : le top 3, la plus grosse progression de la semaine, et le volume de parties. Seuls les boards avec au moins trois scores dans la semaine en reçoivent un — un leaderboard calme a le droit de rester calme. Tu peux couper les récaps leaderboard par leaderboard dans /scoreboard settings ou depuis le dashboard du site.