Skip to main content
Leveling tracks XP per member from the messages they send (and, optionally, time spent in voice channels), converts that into a level using a curve you control, and gives every member a rank card via /level rank. It’s entirely free - the only premium-gated piece is customizing the rank card’s background image (see Rank cards below).

Enabling it

Run /level config. If leveling isn’t enabled yet, you’ll only see an enable toggle - everything else (XP pacing, rewards, restrictions, the card) appears once it’s turned on, so you’re not looking at a wall of settings for a feature you haven’t turned on.

Earning XP

Every message in a server with leveling enabled has a chance to earn XP, subject to:
  • A per-member cooldown (60 seconds by default) - only one message per cooldown window earns XP, so spamming doesn’t inflate XP faster than chatting normally.
  • Restrictions - ignored roles, required roles, and ignored channels, configured on the Roles and Channels pages. An ignored role always blocks XP, even if the member also has a required role.
  • Multipliers - optional per-role or per-channel XP boosts. If more than one applies to a message (e.g. two boosted roles, or a boosted role in a boosted channel), only the highest one is used - they don’t stack.

Voice XP

Off by default - set Voice XP (General page) to a non-zero XP-per-minute rate to turn it on. Once enabled, a member earns XP for every full minute they spend unmuted (not self-muted or server-muted) in a voice channel that isn’t on the ignored-channels list. The same role/channel restrictions and multipliers that apply to message XP apply here too - an ignored voice channel (an AFK channel, say) never earns XP, and a channel or role multiplier applies to voice time the same way it applies to messages. Time is tracked continuously: switching between two non-ignored channels while staying unmuted doesn’t reset anything, it’s still one session. Muting, leaving voice, or moving into an ignored channel pays out whatever was earned and ends the session. A session abandoned for more than 2 days straight (bot restart, connection drop, whatever) without a proper stop forfeits its unclaimed time rather than crediting it later.

The level curve

Level 1 costs a fixed amount of XP (Level 1 cost, 50 by default), and each subsequent level costs a fixed amount more than the last (Cost increase per level, 15 by default) - a straightforward ramp, not an exponential curve. Both are editable on the General page, so you can tune how fast or slow leveling feels. A level is never stored - it’s always calculated from a member’s total XP, so changing these values re-levels everyone immediately and consistently, with no migration step.

Rank cards

/level rank always renders an image card - avatar, level, server rank, and a progress bar to the next level - for every server, free or premium. embed:Yes switches to a plain text version instead, useful if you’d rather not have an image posted. The card’s background has two layers, both requiring premium (any tier):
  • A guild-wide default, uploaded by an admin on the Card settings page. Applies to every member’s card unless overridden.
  • A per-member override, which admins can allow via the Let members set their own card toggle. When it’s on, any member can run /level card to upload their own background, which takes priority over the guild default on their card only.
Free servers, and any card without a configured background, use a built-in default look. Uploaded backgrounds are capped at 2MB and automatically compressed.

Level-up role rewards

Configured on the Roles page: give one or more roles when a member reaches a specific level. Stack rewards controls what happens as members pass multiple thresholds - on, they keep every role they’ve earned; off, only the most recently earned reward’s roles are kept, and earlier ones are removed.

Level up messages

If enabled (Channels page), a message is sent whenever a member levels up - to a fixed channel if one’s set, otherwise the channel the level-up happened in. The message supports the same templating as tickets and applications (see Variables), plus {{level}}. See Commands for every command’s exact options, and Leveling settings for a full field-by-field reference.