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).