serenity

Leveling

XP for talking and for time in voice, with level roles and leaderboards.

Replace [prefix] with your server's prefix.

Turning It On

// Syntax
[prefix]level enable

// Example
;level enable

Needs Manage Server. From then on members earn XP for talking; voice XP is a separate switch.

;level disable    // asks for confirmation, keeps nothing

How XP Works

Per message15 – 25 XP, at random
Cooldown60 seconds per member
To leave level n5n² + 50n + 100 XP

The cooldown is what stops spam from being a strategy: one message a minute earns the same as fifty. The formula means each level takes longer than the last — level 1 needs 155 XP, level 10 needs 1,100, level 50 needs 15,100.

Voice LevelsA second XP track for time spent in voice channels.

Checking Levels

;rank            // your rank card
;rank @member
;level           // the same as an embed
;level leaderboard
The rank card with level, XP progress and server rank

The Level Up Message

// Syntax
[prefix]level message [text]

// Example
;level message Good job, {user}! You reached **Level {level}**
;level variables    // what you can put in it
;level test         // send yourself a preview
;level channel #levels

Without a channel the message goes to wherever the member levelled up. Setting one collects them all in one place, which is the polite option for a busy server.

The message accepts full embed code, so a level up can be a proper embed rather than a line of text.

Writing Embed CodeHere, you can learn about how to script embeds for commands that support this feature.

Adjusting and Resetting

// Syntax
[prefix]level set [member] [level]

// Example
;level set @member 20
;level reset @member    // one member back to zero
;level reset            // everyone, with a confirmation
;level config           // every setting at a glance

Ignoring

Not every channel should count. Bot spam and command channels usually shouldn't:

;level ignore channel #bot-commands
;level ignore user @member
;level ignore role @Muted
;level ignore list
;level ignore remove #bot-commands

Ignoring a role stops everyone holding it from earning XP anywhere. It's meant for punishment roles — using it on a normal member role quietly switches leveling off for most of your server.