XP & Leveling System
1. Feature Brief
Section titled “1. Feature Brief”The XP & Leveling System is a fully guild-normalized engagement tracker that rewards genuine participation in both text and voice channels. Rather than giving flat XP per message, the system evaluates the quality of activity within rolling 2-minute windows and applies a proprietary dynamic curve against each server’s own activity patterns - meaning spammers are naturally penalized without any manual tuning, and every server self-calibrates over time.
- Proprietary dynamic curve - XP multiplier is determined by a dynamic curve that peaks for consistent, genuine participation and drops for both low-effort spam and abnormal activity bursts
- Activity windows - each user’s messages are grouped into rolling 2-minute windows; the window closes and awards XP when it expires or the user goes idle
- Effort scoring - each window accumulates an effort score from message count, word count (filtered for real words), and replies; all three signals are capped per window to prevent farming
- Guild baseline - a per-server adaptive baseline self-calibrates the curve over time; new servers use a sensible default until enough data is collected
- Text XP & Voice XP - tracked independently with separate leaderboards, levels, and rank card bars; the two pipelines never interfere
- Progressive level formula - XP required per level scales progressively, giving a natural difficulty ramp (Level 5 ≈ 3 hrs, Level 50 ≈ 2 weeks, Level 100 ≈ 2 months)
- Level-up announcements - configurable channel, custom message with
{user}/{level}placeholders, and a choice of plain-text or embed format - Role rewards - assign roles at specific levels; supports both stacking (keep all past rewards) and replacement (only highest role) modes
- Canvas rank card - a generated 934×282px image showing text level, voice level, both progress bars, and both server ranks side-by-side
- Reaction bonuses - reactions on a message within 24 hours grant the original author 30 bonus XP seconds, capped at 3 reactions per message
2. Sub-Systems
Section titled “2. Sub-Systems”The bot uses a dynamic system to calculate XP, rewarding genuine, consistent participation while naturally ignoring spam and artificial activity bursts.
- Chatting naturally yields the best XP returns
- Sending large volumes of short, low-effort messages yields diminishing returns
- The system adapts continuously to your server’s own activity patterns without any manual configuration
Voice XP is tracked separately from text XP and uses an independent tracking system. Voice level and rank appear as a second bar on the rank card.
Eligibility requirements - a user must meet all of the following to earn voice XP:
- Be in a voice channel (not AFK)
- Not self-muted, server-muted, self-deafened, or server-deafened
- At least 2 non-bot members present in the same channel (prevents solo AFK farming)
Session lifecycle:
- Joining an eligible channel starts a session timer
- Leaving, muting, or deafening commits the elapsed seconds and ends the session
- Unmuting or undeafening restarts a fresh session timer
- Moving between channels re-evaluates eligibility against the new channel’s member count
Crash protection - the system periodically saves elapsed time to prevent data loss. On a crash, at most ~60 seconds of voice XP is lost. On graceful shutdown, all active sessions are committed before the process exits.
Anti-dupe guarantee - the system precisely tracks time segments to ensure no double-counting occurs during saving or disconnecting.
XP is stored as total seconds earned. The seconds required to reach each level follow a progressively steeper curve, making early levels accessible while higher levels represent a meaningful long-term commitment.
Representative milestones:
| Level | Approx. time |
|---|---|
| 5 | ~3 hours |
| 10 | ~11.5 hours |
| 25 | ~3 days |
| 50 | ~2 weeks |
| 75 | ~1 month |
| 100 | ~2 months |
Progress within a level is shown on the rank card as a bar filling from the current level threshold to the next, along with the raw seconds earned and remaining.
The /rank command generates a 934×282px canvas image (PNG) and replies with it as an attachment. Rank checks on other users have no cooldown; self-rank checks have a 5-second cooldown per user to prevent spam.
Role rewards are configured per level via /xp rewards. When a user’s level increases, the system checks for any rewards in the range (oldLevel, newLevel] and applies them.
Stack mode (default on): all role rewards the user has ever qualified for are kept. Every newly reached level’s role is added.
Replace mode: only the highest qualified reward role is kept. All lower reward roles are removed from the member when a higher one is granted.
In both modes, the bot silently skips any reward role that:
- No longer exists in the server (deleted roles are skipped, not errored)
- Is positioned at or above the bot’s own highest role in the role hierarchy
Level-up announcements and role reward applications are handled seamlessly in the background as soon as a level-up is detected.
3. Setup
Section titled “3. Setup”-
Open the settings panel - run
/xp settingsto open the interactive configuration dashboard. The panel expires after 5 minutes of inactivity. -
Enable the system - the XP system is enabled by default for all servers. Toggle it off per-server with the Toggle XP button if needed.
-
Set a level-up channel Optional - click Set Channel and select a text channel from the dropdown. If no channel is set, level-up events are silent (role rewards still apply).
-
Customise the level-up message Optional - click Set Message and enter a custom message. Supported placeholders:
{user}(mention),{level}(new level number). Toggle between plain-text and embed format with the message type button. -
Configure role rewards Optional - run
/xp rewardsor click Manage Rewards to add level-gated roles. Set the level threshold and target role. Toggle Stack Rewards in the settings panel to control whether lower rewards are kept or replaced. -
Configure blacklists Optional - click Configure Blacklists to exclude specific channels or roles from earning XP. Blacklisted channels and roles earn no text XP; blacklisted roles also earn no voice XP.