Owen / Portfolio

Télémétrie en temps réel

01%

Calibration des systèmes

Aller au contenu
Retour aux projetsiReaz Bot

Projet web

Mission / 02

iReaz Bot

Bot Discord / Tournoi esport

Un bot Discord qui orchestre un tournoi League of Legends de 80 joueurs, de la vérification des Riot ID jusqu’au bracket et aux résultats.

Rôle
Conception et développement back-end
Année
2026
Équipe
Développement solo
iReaz Bot // Control panel
Panneau de contrôle administrateur de iReaz Bot
80
joueurs
16
équipes
5
joueurs par équipe
15
matchs jusqu’à la finale

Technologies

  • Node.js
  • TypeScript
  • discord.js
  • Prisma
  • PostgreSQL
  • Supabase
  • Riot API
  • Vitest

02.01

Faire de Discord un véritable outil d’organisation

Organiser 80 participants à la main implique de vérifier les identités, suivre les désistements, respecter les duos, répartir les niveaux puis créer les espaces de jeu. À cette échelle, une erreur de saisie ou une information publiée trop tard peut rapidement bloquer tout le tournoi.

J’ai conçu le bot autour d’un parcours unique dans Discord. Les joueurs restent dans leur environnement habituel, tandis que les organisateurs disposent de commandes, de panneaux et de messages synchronisés pour piloter l’événement sans tableur parallèle.

02.02 / Process

Piloter tout le tournoi depuis un panneau unique

Le panneau d’administration rassemble les actions critiques dans une interface persistante : création et suppression d’un tournoi, ouverture ou fermeture des inscriptions, consultation du statut, lancement des équipes et gestion du bracket. Les organisateurs n’ont pas à mémoriser une suite de commandes pour suivre le bon déroulement de l’événement.

Les inscriptions peuvent être ouvertes progressivement selon les rôles du serveur. Les phases IC, Sub, Prio et Booster donnent la priorité aux communautés prévues, tandis que les modes All et Custom permettent une ouverture générale ou ciblée.

  1. 01Création et suppression sécurisée
  2. 02Phases IC, Sub, Prio, Booster, All et Custom
  3. 03Fermeture et suivi des inscriptions
  4. 04Lancement des équipes et gestion du bracket

02.03 / Visual

Une inscription guidée, en solo ou en duo

Le panneau public affiche en permanence l’état des inscriptions, la restriction de rôle éventuelle et le remplissage du tournoi. Le joueur choisit son mode, renseigne son Riot ID dans une modale et reçoit une réponse privée sans encombrer le canal.

Les contrôles empêchent les doublons, les auto-duos et les associations contradictoires. Une liste d’attente prend automatiquement le relais lorsque les 80 places approuvées sont occupées.

Panneau Discord des inscriptions au tournoi sur ordinateur
Panneau public / inscriptions ouvertes01 / 02

02.04 / Visual

Suivre immédiatement le statut des joueurs et des duos

Chaque inscription validée génère une fiche structurée avec le compte Discord, le Riot ID, le rang, le niveau du compte et le score utilisé pour l’équilibrage. Les organisateurs disposent ainsi d’une vue lisible sans rechercher les informations dans plusieurs canaux.

Le statut du duo évolue de la demande en attente vers une association mutuelle lorsque les deux joueurs se choisissent. Cette réconciliation évite les duos unilatéraux ou contradictoires avant la composition des équipes.

Fiches Discord confirmant une inscription et la formation d’un duo

02.05 / Process

Vérifier les profils sans ralentir les inscriptions

À chaque inscription, le bot normalise le Riot ID puis interroge l’API Riot pour récupérer le compte, le rang, les LP et l’activité classée. Ces données servent à calculer un score de niveau commun à tous les participants.

Un contrôle configurable signale les profils atypiques aux modérateurs : compte récent, faible nombre de parties, rang élevé ou taux de victoire inhabituel. Le bot n’exclut pas automatiquement le joueur ; il prépare les éléments nécessaires à une décision humaine.

  1. 01Normalisation et unicité des Riot ID
  2. 02Rang, division, LP et activité classée
  3. 03Signalement privé des profils suspects
  4. 04Approbation ou refus par un organisateur

02.06 / Visual

Donner le bon contexte aux organisateurs

Les alertes sont isolées dans un canal de modération. L’organisateur retrouve le joueur, son Riot ID, son rang et les raisons du signalement avant de l’approuver ou de le refuser depuis Discord. Un accès direct à OP.GG permet de compléter rapidement la vérification.

Rapport Discord de vérification d’un profil suspect

02.07

Équilibrer 16 équipes sans casser les duos

L’équilibrage traite chaque duo confirmé comme une unité indivisible. Les participants sont d’abord distribués selon leur score, puis le système compare les équipes les plus fortes et les plus faibles pour rechercher des échanges qui réduisent l’écart à la moyenne.

Chaque équipe conserve exactement cinq joueurs. Le bot choisit un capitaine, publie les compositions, crée les salons vocaux nécessaires et génère un lien Multi.GG pour consulter les cinq profils ensemble. Un mode de simulation avec profils générés permet de tester les scénarios équilibrés, très forts ou très faibles avant un événement réel.

02.08 / Visual

Des équipes prêtes à jouer dès le lancement

La publication réunit les 16 compositions, identifie les capitaines et rend visible la répartition obtenue. Les joueurs reçoivent en parallèle leurs informations de tournoi et accèdent à leur salon vocal.

Compositions équilibrées publiées par le bot dans Discord

02.09 / Process

Sécuriser chaque transition du tournoi

Le tournoi suit une machine à états explicite. Chaque commande vérifie l’étape courante avant d’agir, ce qui évite par exemple de lancer les équipes pendant les inscriptions ou de publier un tournoi qui n’est pas prêt.

  1. 01Création et configuration
  2. 02Ouverture puis fermeture des inscriptions
  3. 03Équilibrage et validation des équipes
  4. 04Lancement, bracket puis clôture

02.10 / Visual

Faire progresser le bracket depuis Discord

Les 16 équipes entrent dans un bracket à élimination directe de 15 matchs. Les capitaines déclarent une victoire ou une défaite depuis leur thread privé ; le résultat alimente automatiquement le tour suivant et met à jour la vue publique.

Les déclarations concurrentes sont protégées et les contradictions sont remontées aux modérateurs. Un panneau d’administration reste disponible pour vérifier ou corriger le résultat sans manipuler directement la base.

Bracket du tournoi mis à jour dans Discord
Vue publique / bracket en cours01 / 02

02.11

Conserver une source de vérité fiable

PostgreSQL conserve la configuration du serveur, les tournois, les participants, les liens Discord–Riot, les équipes et les matchs. Prisma encadre les relations et les écritures afin que les messages Discord restent une représentation de l’état métier, et non l’unique endroit où cet état existe.

Les messages publics sont mis à jour plutôt que recréés, les permissions manquantes sont diagnostiquées, et les opérations sensibles sont limitées aux rôles prévus. Les tests couvrent notamment l’équilibrage et les conflits de duos, deux zones où une régression aurait un impact direct sur les joueurs.

02.12

Un tournoi piloté sans sortir de Discord

Le résultat est un outil unique pour les joueurs, les capitaines et les organisateurs. Les tâches répétitives sont automatisées, les décisions sensibles restent humaines et chaque étape du tournoi s’appuie sur un état persistant, contrôlé et visible par le bon public.