🎚️

Activité & niveaux

Système d'XP gagné par messages et activité vocale. Les membres montent de niveau, débloquent des rôles automatiques par palier, et se comparent via leaderboard et carte de rang.

Activer : /setup → bouton Activité, ou /config module nom:activity actif:true

Privileged Intent requis : Message Content Intent pour le comptage XP messages.

Comment l'XP est gagnée

Messages

  • Cooldown 60 secondes par user et par channel — un message dans le même salon dans la minute = pas d'XP supplémentaire
  • Pondération par longueur avec plafond — un message long donne plus, mais pas linéairement
  • Aucun XP pour les bots ni pour les commandes slash

Vocal

  • Compté en continu tant que l'user est :
    • Connecté à un vocal (pas AFK channel)
    • Pas mute / pas deafened (auto-coupe l'XP si ça change)
    • Avec ≥1 autre humain dans le salon (pas d'XP en solo)

Streak

Un compteur séparé streak enregistre les jours consécutifs d'activité (au moins 1 message ou 1 minute de vocal par jour). Reset à 0 après 1 jour d'inactivité.

Commandes membres

/rank [membre]

Affiche le profil d'un membre :

  • Niveau, XP, barre de progression
  • Rang messages, rang vocal, total messages, total vocal
  • Streak en cours

Premium : la commande génère une carte de rang en image (PNG via Canvas) avec avatar, niveau, barre, et background custom uploadable côté dashboard.

/leaderboard [type]

Classement paginé (10 par page) :

  • messages (défaut) — top par nombre de messages
  • voice — top par durée vocale

Boutons ◀ / ▶ pour naviguer, et boutons Messages/Vocal pour switcher.

Commandes admin

/levels list

Liste les paliers configurés et leur rôle associé.

/levels top [limit]

Top XP du serveur (1–25, défaut 10).

/levels set palier role

Associe un rôle à un palier de niveau :

/levels set palier:5  role:@Niveau-5
/levels set palier:10 role:@Niveau-10
/levels set palier:25 role:@Vétéran

Permission requise : Manage Server.

⚠️ Le rôle du bot doit être plus haut que le rôle à attribuer, sinon le bot ne pourra pas l'assigner.

/levels remove palier

Retire le rôle associé à un palier.

/levels channel [salon]

Définit le salon où poster les annonces de level-up. Vide = annonce dans le salon où le level-up survient.

/levels announce actif

Active/désactive les annonces de level-up.

Formule de level

xp_pour_niveau(N) = floor(C * sqrt(N))

Calculée incrémentalement pour rester rapide. Voir src/services/xp.js pour le détail.

Dashboard

  • /servers/<guildId>/levels — gestion des paliers, salon d'annonce, toggle annonces
  • /servers/<guildId>/rank-card — upload du background custom (Premium)
  • /servers/<guildId>/analytics — heatmap activité, top users
  • /servers/<guildId>/members/<userId> — fiche détaillée d'un membre

Reset / saisons

Pas encore de reset saisonnier automatique (à venir). En attendant, l'XP cumule à vie.