🎧

Blindtest

Quiz musical vocal avec lobby, mode équipes, daily challenge, presets de gameplay et 18 catégories curées. Score persistant en DB.

Activer : /setup → bouton Blindtest, ou /config module nom:blindtest actif:true

Le bot a besoin de Connect + Speak dans les vocaux, et de Manage Messages pour l'anti-spoiler.

Commandes

/blindtest [options]

Lance un blindtest. Tu dois être dans un salon vocal au moment de lancer la commande.

OptionTypeDéfautDescription
categoriechoixCatégorie curée (rap-fr, années 80, anime openings, etc.)
themestringRequête YouTube libre (alternative à categorie)
modechoixbothScoring : both (titre+artiste), title ou artist
dureeint15Durée d'extrait en secondes (5–30)
nombreint10Nombre de morceaux (1–30)
lobbyboolfalsePhase de lobby de 60s avec bouton "Rejoindre"
dailyboolfalseCatégorie du jour, commune à tous les serveurs
stylechoixPréset : speed, marathon, hardcore
teamsboolfalseMode équipes 🔴 vs 🔵 (force le lobby)
eliminationint💀 N rounds consécutifs sans point = éliminé (1–5, force le lobby)

Catégories

rap-fr, rap-us, pop-fr, pop-us, rock, metal, electro, reggae, annees-80, annees-90, annees-2000, annees-2010, anime-openings, disney, jeux-video, k-pop, jazz, classique.

Presets de style

PresetDuréeNombreIndices
speed5s15Oui
marathon8s25Oui
hardcore5s20Non (pas d'indice à mi-temps)

Les presets overridenent duree et nombre.

Exemples

/blindtest categorie:rap-fr
/blindtest theme:"jingles télé années 90" duree:8 nombre:20
/blindtest categorie:annees-80 lobby:true
/blindtest categorie:k-pop teams:true
/blindtest daily:true                  # joue le daily du jour
/blindtest style:hardcore              # 5s × 20, sans indices
/blindtest categorie:rock elimination:3 # 3 rounds vides = éliminé

/stopblindtest

Arrête le blindtest en cours sur le serveur. Réservé à toute personne qui peut lancer la commande (à terme : restreint aux modérateurs).

/btstats profile [membre]

Profil blindtest d'un membre + top serveur des cinq premiers.

/btstats daily

Catégorie du jour, top du jour pour ce serveur, et catégorie de demain en preview.

Scoring

  • Titre seul trouvé : 1 pt
  • Artiste seul trouvé : 1 pt
  • Combo titre + artiste dans le même message : 3 pts
  • Cooldown 2s entre 2 réponses d'un même user
  • Anti-paste : si le message contient le titre brut YouTube collé tel quel, la réponse est rejetée et un avertissement est posté

Mécanique d'un round

  1. Phase de devinette — durée configurée. Le bot joue l'extrait audio dans le vocal.
  2. Indice à mi-temps (sauf en hardcore) — nombre de mots et première lettre du titre, première lettre de l'artiste.
  3. Bouton Skip — vote de skip avec seuil dynamique (≥ 50 % des participants en lobby, ou 2 votes hors lobby).
  4. Reveal — embed avec titre + artiste + thumbnail, et résumé du scoring.

Lobby

  • 60 secondes pour rejoindre via bouton
  • L'hôte peut Lancer prématurément ou Annuler
  • En mode teams, choix entre 🔴 Rouge et 🔵 Bleu — il faut au moins 1 joueur par équipe pour démarrer
  • Hors lobby, tout le monde dans le salon peut répondre

Mode élimination

  • Active avec elimination:N (1 à 5)
  • Un participant qui passe N rounds consécutifs sans marquer un point est éliminé : ses messages ne comptent plus
  • Les éliminés sont annoncés dans le salon entre les rounds
  • En mode teams, l'élimination ne vide jamais une équipe : le dernier joueur d'un camp est protégé
  • À la fin, l'embed des résultats liste les éliminés et désigne le dernier survivant s'il en reste un seul

Daily challenge

Une catégorie est tirée au sort chaque jour, identique pour tous les serveurs. Permet de comparer les top scoreurs entre communautés (à venir : leaderboard global cross-guild).

Anti-triche

  • Anti-paste (copier-coller du titre YouTube)
  • Cooldown réponses
  • Restriction aux participants du lobby si lobby:true
  • En mode équipes : seuls les membres assignés à une équipe peuvent répondre

Dashboard

  • /servers/<guildId>/blindtest-stats — statistiques de sessions, parties par catégorie, top scoreurs
  • /servers/<guildId>/daily — daily du jour, top du jour, preview demain

Limites

  • Quota gratuit : 3 blindtests par jour et par serveur en free (remise à zéro à minuit UTC). Illimité dès premium.
  • Cap global : le bot n'exécute qu'un nombre borné de blindtests simultanés tous serveurs confondus (chaque session = une connexion vocale + du ffmpeg). Au-delà, un lancement renvoie « trop de blindtests en cours, réessaie dans quelques minutes ». Réglable via l'env BLINDTEST_GLOBAL_LIMIT (défaut 10).
  • 1 seul blindtest à la fois par serveur (activeBlindtests).
  • blindtest_max_count : 10 morceaux/session en free, 30 en premium/pro.
  • ffmpeg doit être disponible côté hébergeur ; les extraits proviennent des previews Deezer (30s).
  • Si un morceau est inaccessible, le bot passe au round suivant et logge l'erreur.