Earning XP
Text XP is a random amount between a minimum and a maximum - 15 and 25 out of the box - awarded at most once per cooldown, 60 seconds by default. Posting twenty single-word messages therefore earns exactly as much as posting one.
Voice XP is off by default. Switched on, it pays per minute spent in voice, 5 XP a minute unless you change it, with a minimum-participants requirement so sitting alone in a channel does not count and an option to ignore deafened members.
A server-wide multiplier scales both. Channels and roles can be excluded outright through the no-XP lists, which is how you keep the bot-commands channel from producing the top of the leaderboard.
Levels and caps
Levels are derived from total XP, and a level cap can be set - 100 by default, or 0 to remove it entirely. Once a member is at the cap they keep earning XP without gaining levels, so the leaderboard still moves.
Level-up announcements go to a channel you nominate, with a message template you write yourself. Leave the channel empty and the announcements stay quiet, which on a large server is the more popular choice.
Reward roles
A reward role is a level plus a role. When a member crosses the threshold the role is granted, and the stackRoles setting decides what happens to the one before it: keep every role earned, or hand out only the highest and remove the previous one.
Because the rewards are evaluated on every level change, a member who joins with XP already recorded, or has their XP adjusted by staff, ends up with the correct roles rather than the ones they happened to pass through.
Seeing where you stand
/rank shows a member their level, their XP against the next threshold and a progress bar, as an embed rather than a rendered image - the same information without a font and canvas dependency in the hot path.
/leaderboard ranks by XP and levels, by economy balance or by message count, and /msgtop and /vctop break out messages and voice time on their own.
- /rank - level, XP and progress for one member
- /leaderboard - XP, economy or messages
- /msgtop - message count ranking
- /vctop - voice time ranking
Keeping it honest
- Per-message cooldown against XP farming
- No-XP channels and no-XP roles
- Minimum participants before voice XP counts
- Optional exclusion of deafened members
- Server-wide multiplier, including 0 to freeze XP entirely