Aller au contenu

Leveling / XP

Octavius propose un système XP avancé avec embed level-up immersif (avatar large + message d'encouragement personnalisable) et rôles auto par palier.

Commandes universelles

Commande Description
/rank [membre] (alias /rang, /level) Carte XP perso
/top (alias /leaderboard, /classement) Top 10 du serveur

Configuration admin

Salon des level-ups

/rankconfig channel salon:#level-up

Tous les level-ups seront annoncés ici (sinon, fallback dans le salon où l'utilisateur a posté le message qui a triggered le level-up).

Message d'encouragement custom

/rankconfig message texte:Bravo {user} ! Tu as atteint le niveau {level} 🎉

Placeholders supportés : {user} (mention), {level} (niveau atteint). Si non configuré, message aléatoire parmi 10 défauts.

Rôles auto par palier (Silver+)

/rankconfig levelrole add niveau:5 role:@Bronze
/rankconfig levelrole add niveau:15 role:@Silver
/rankconfig levelrole add niveau:30 role:@Gold
/rankconfig levelrole list           # tous les paliers configurés
/rankconfig levelrole remove niveau:5

Mode stack : un membre garde tous les rôles atteints (Bronze + Silver + Gold) à mesure qu'il monte. Pas de remplacement.

Voir la config

/rankconfig show

Algorithme XP

Formule de progression standard (cubique modérée) :

xp_to_next_level(L) = 5 * L² + 50 * L + 100
Niveau XP cumulé XP à gagner
1 100 100
5 1150 475
10 6300 1075
25 47125 4400
50 308750 14600

Gain XP par message : aléatoire 15-25 XP. Cooldown 60 secondes par user et par guild (anti-farm).

Caps mémoire conversationnelle (différent !)

Note : la mémoire IA (/ia) a un cap séparé selon le plan :

Plan Cap mémoire IA
🆓 Free 10 messages
🥉 Bronze 20
🥈 Silver 35
🥇 Gold 75

Ce cap est indépendant des XP/levels qui sont per-message sans limite supérieure.

Anti-spam XP

  • Messages ≤ 3 caractères → pas d'XP (anti-emoji-only)
  • Commandes-préfixe (!ping, etc.) → pas d'XP (anti-farm bot)
  • Cooldown 60s par user par guild

Multi-tenant

Les XP sont per-(guild, user). Le même user a des XP séparés sur chaque serveur Discord. Aucune fuite cross-guild possible (PK composite (guild_id, user_id) + filtre WHERE guild_id = $1 dans toutes les queries leveling).