Skip to main content

Getting started

XP tracking is off until you turn it on. Nothing else on this page has any effect until you do.
Run ,level lock to pause tracking without losing anyone’s progress.
Members earn 15–25 XP per message, at most once a minute. Very short messages and emoji-only messages don’t count. Levels go up to 100.

Ignoring channels and roles

Do this before members start earning. Any channel or role on the ignore list earns nothing, and threads follow their parent channel.
Syntax
Example

Reward roles

Assign a role to a level and members receive it when they get there.
Syntax
Example
Levels run from 1 to 100. ,level update behaves identically to add. Roles with dangerous permissions can’t be rewards.
Remove a reward by its level, not its role:
Syntax
Example
,level roles lists every reward.

Stacking

With stacking on, members keep every role they’ve earned along the way. With it off, they only hold the role for their current tier.
Syntax
Example

Backfilling existing members

If your server already had XP before you set up rewards, ,level sync walks every member and applies the roles their current level entitles them to.
Run this after adding a new reward role so existing members at that level pick it up immediately.

Level-up messages

Syntax
Example
Full embed syntax works — start with {embed} for a rich embed. See Scripting. Besides the usual variables, you can use {level.new_rank} and {level.user_xp}. ,level message view shows what’s currently set.

Where it posts

Syntax
Example
If you use pm, include {guild.name} in your message. Otherwise members get a DM with no indication which server it came from.

XP rate

Syntax
Example
Must be between 0.1 and 10.

Viewing progress

Running ,level on its own shows your level, server rank, XP toward the next level, and a progress bar. Add a member to see theirs:
,level leaderboard ranks your top earners. You can rename the leaderboard heading:
Syntax
Example

Admin tools

When a member leaves, their XP is kept for 3 days in case they come back. After that it’s removed automatically.