Guides
Levels and XP
Turn on built-in leveling. Members earn XP for chatting, level up, get roles, and see their rank card.
Leveling is built in. Turn it on and:
- Members get XP (experience points) for chatting.
- The bot posts a message when someone reaches a new level.
- Members get roles at the levels you choose.
/rankshows a member's rank card, and/leaderboardshows the top 10.
It works on every plan, and /rank and /leaderboard do not count toward your command limit.
1. Turn it on#
On the dashboard, open Leveling and switch it on. Changes save by themselves.
Then sync your commands, or let auto-sync do it, so /rank and /leaderboard show up in Discord.
2. Choose how fast members level up#
Under Earning XP:
| Setting | What it does | Starts at |
|---|---|---|
| XP per message | A random amount in this range, per message. | 15 to 25 |
| Wait before more XP | Messages sent during the wait give nothing, so spam does not help. | 10 seconds |
| Voice XP | XP for each minute in voice. Muted, deafened, alone or in the AFK channel earns nothing. | off, 10 a minute |
| Daily streak | A bonus on a member's first message each day: +10 XP per day in a row, up to +70. Missing a day starts over. Days follow your server's timezone. Premium. | off |
Under No XP, pick channels and roles that never earn XP. A thread counts as its channel.
When a member leaves the server, is kicked or is banned, their XP here is reset.
XP boosts#
Under XP boosts (premium), give a role or a channel more XP, from 1.1x to 3x. Add an event to give everyone more XP for a while, like a double XP weekend. You can add several. When more than one boost fits, the highest counts. Boosts don't add up, and they don't change the streak bonus.
How levels work#
Each level takes a bit more XP than the last, the same curve as MEE6:
| Level | Total XP |
|---|---|
| 1 | 100 |
| 2 | 255 |
| 5 | 1,150 |
| 10 | 4,675 |
| 50 | 268,375 |
3. The level-up message#
Under Level-up message, choose where it goes: the channel they chatted in, a channel you pick, their direct messages, or nowhere.
The message can use these placeholders:
| Placeholder | Becomes |
|---|---|
{user} | A mention of the member |
{user.name} | Their display name |
{level} | The level they reached |
{previous_level} | Their level before |
{rank} | Their place on the leaderboard |
{server} | The server name |
Turn on Add their rank card to send the member's card with the message.
4. Role rewards#
Under Role rewards, add a role for a level, like @Regular at level 5. Members get it when they reach that level, and anyone who skipped a level still gets it.
Switch off Keep lower rewards to keep only the highest reward role.
The bot needs a role higher than the reward roles, and reward roles cannot have staff permissions.
Role rewards need premium. If premium ends, your rewards are kept, but members don't get them until you upgrade again.
Top chatter#
Under Top chatter, pick a role. Every Monday, in your server's timezone, it goes to the member who earned the most XP last week, and the last holder loses it. Free.
5. The commands#
| Command | Starts | Who can use it |
|---|---|---|
/rank [member] | on | everyone |
/leaderboard [page] [period] | on | everyone |
/give-xp member amount | off | Manage Server |
/remove-xp member amount | off | Manage Server |
/set-level member level | off | Manage Server |
/reset-xp member | off | Manage Server |
On the Commands tab, turn each one on or off, rename it, or change its description. To reset everyone's XP, use Reset XP on the Leaderboard tab.
period is All time, This week or This month. Weeks start on Monday and months on the 1st, in your server's timezone. The Leaderboard tab and the public page have the same three.
6. Design your own cards#
/rank and /leaderboard draw our cards until you pick your own. Under Cards, press Design to start from our card in the image template editor, or pick any image template you have.
Backgrounds are free. Designs, ready-made or your own, need premium. If premium ends, your picks are kept, and the cards go back to ours with your background.
A design can use these values (see the full list on the Leveling page):
| Value | Becomes |
|---|---|
{user.name}, {user.avatar} | The member |
{level}, {rank}, {xp_short} | Their level, place and XP |
{level_xp_short}, {next_level_xp_short} | XP into this level, and what it needs |
{progress} | 0 to 1, for a progress bar |
{streak} | Days in a row they chatted |
{var.coins}, {member_var.bio} | Your server and member variables |
A leaderboard design repeats one row per member over the items list, with {item.name}, {item.avatar}, {item.level}, {item.xp_short} and {rank} (11, 12… on page 2). {period} is All time, This week or This month.
7. Do more with level-ups#
- Automations: use the Levels up trigger. It can fire on every level or at one level, and gives you
{level.new},{level.previous}and{level.xp}. - Scripts: make a Level up event. It gets
user,level,previous_levelandxp. - Your own commands: read and change XP with
get_level,add_xpand the rest. See Leveling.
Moving from the old Mongo version#
This guide used to build leveling from a Message event and a Mongo database. To move your members' XP over, run this once from any command, then delete the old event:
levels = SlashMongo("levels")
moved = 0
for doc in await levels.find({"moved": {"$ne": True}}):
if moved >= 100:
break
set_xp(int(doc["_id"]), int(doc.get("xp", 0)))
await levels.update_one({"_id": doc["_id"]}, {"$set": {"moved": True}})
moved += 1
set_content(f"Moved {moved} members.")A run can change XP 100 times, so run it again until it says it moved 0. Each run skips members it already moved. Our curve is a little different, so some levels will change.