Levels (BETA) turns Scoreboards into a Discord leveling bot. Members earn XP for chatting and for talking in voice channels, their level follows from that XP, and the leaderboard ranks your server by it. Nobody submits anything: the bot does the counting.
It's the newest leaderboard type, so it's a beta while it settles. The Discord leveling bot page shows what it looks like; this guide covers the setup and the numbers behind it.
What Levels (BETA) does
A Levels (BETA) leaderboard is a live XP ranking of your server, posted in a channel like any other Scoreboards leaderboard.
- My rank, the button under the leaderboard, shows a member their level, their XP and what's left to the next level.
- The website shows each member's level, XP and progress bar, and a public leaderboard can be embedded on your own site.
- A weekly recap goes up every Monday with the top three, the biggest climber and how many members earned XP, in weeks where at least three did.
A server has one Levels (BETA) leaderboard at a time, next to whatever other leaderboards it runs. It's always a server leaderboard, never a personal one, because the XP comes from a server's chat.
Set it up in three steps
- Create the leaderboard. Invite Scoreboards, run
/leaderboard create, pick LEVELS (BETA) as the type and give it a name, such as "Server Levels". It's posted and starts counting XP. - Tune the numbers. Open the dashboard, pick the leaderboard and go to Levels (BETA): XP per message, cooldown, voice XP, the level curve, no-XP channels and roles, and the level-up message. The defaults are a sensible start, so you can skip this step.
- Add role rewards. Under Tier roles, choose the Level mode and give each milestone a role: one from level 5, another from level 10, and so on.
How members earn XP
Each message pays a random 15 to 25 XP, but only one message per member every 60 seconds counts. Ten quick messages in a row earn the same as one, so spamming doesn't pay. At the defaults, level 10 takes around 234 messages that earn XP.
Bots, webhooks and Discord's system messages (joins, boosts, pins) never earn. Neither do no-XP channels, including the threads inside them, or members with a no-XP role, such as a muted role. You can change every number, and a cooldown of 0 pays every message.
The bot never reads what members write. It doesn't use Discord's Message Content intent, and it never reads or stores the text of a message. Per member it stores their Discord ID and display name, total XP, how many messages and voice minutes earned XP, and when they last earned, plus a nightly snapshot of their rank for the rank-history chart. If your server's economy pays currency for levels, each level reached also adds an entry to the currency ledger.
Voice XP
Members earn 10 XP for every minute in a voice channel while they're unmuted and undeafened, outside the server's AFK channel, and with at least one other person who isn't a bot. A member alone with a music bot is idling, not talking. An hour of chatting in voice is worth 600 XP. Set voice XP anywhere from 0 (off) to 100 XP a minute.
The level curve
The default curve is the same one MEE6 uses: going from level L to the next costs 5L² + 50L + 100 XP. The total XP needed to reach a level:
- Level 1: 100 XP
- Level 5: 1,150 XP
- Level 10: 4,675 XP
- Level 20: 23,850 XP
- Level 50: 268,375 XP
- Level 100: 1,899,250 XP
The other option is a linear curve at 100L + 75 XP per level. It starts a little steeper (level 10 is 5,250 XP) but reaches high levels much sooner (level 50 is 126,250 XP). Switching curves keeps everyone's XP; only the level it works out to changes.
Role rewards for levels
Role rewards are tier roles in Level mode: one role from level 5, another from level 10, another from level 25, as many tiers as you need. With Keep lower tier roles on, members keep every role they've reached; with it off, only the highest. The Scoreboards role has to sit above every role it hands out in Server Settings → Roles.
If your server runs the Scoreboards economy, you can also pay currency for each new level, once per level, within the economy's daily cap.
Level-up messages
When a member reaches a new level, the bot posts a message that mentions them: in the channel where they last chatted (the default), in a fixed channel such as #level-ups, or nowhere.
You can write your own text, up to 200 characters, with {user}, {level} and {board} filled in, like GG {user}, you reached level {level}! It only ever pings the member who leveled up, even if the text says @everyone, and when more than three members level up in the same channel at once, they share one message.
Seasons and fresh starts
Ending a season freezes the leaderboard: XP stops counting and the standings stay as they finished. Unfreeze it and everyone carries on from the same XP. For a fresh start, create a new Levels (BETA) leaderboard and let the frozen one stand as the record. A frozen leaderboard doesn't count toward the one-per-server limit.
Moving from MEE6 or another leveling bot
Scoreboards can't import your levels from MEE6 automatically. MEE6's terms of service don't allow automated access to their service by robots, spiders or other automated tools, so we don't build one. You can bring the numbers over yourself, though. It's your own server's data, and it's a one-time job:
- Create your Levels (BETA) leaderboard, so there's something to import into.
- Copy each member's total XP from your server's leaderboard on MEE6, or on the bot you used. Copy the XP, not the level. If MEE6 shows a rounded figure such as 12.5k, write the full number (12500); the XP may then be slightly off.
- Copy each member's Discord user ID. Turn on Developer Mode in Discord (Settings → Advanced), then right-click a member and choose Copy User ID.
- Write a CSV file, one
name,xpper line, with the user ID as the name:123456789012345678,4675. Write the XP as plain digits:12500, not12,500or12.500. A row written either way is skipped and listed by its line number, so you can fix it and import again. - Import it. On the dashboard, open the leaderboard and use Import from CSV under General.
The user ID is what links a row to a member: a name of 17 to 20 digits is read as one, and the XP that member earns afterwards is added to it. Any other name, such as a username, becomes a custom entry that isn't linked to anyone and never grows.
Each row replaces that member's XP rather than adding to it, so import before members have earned much here. A corrected file can be re-imported at any time, and a file holds up to 500 rows, so split a big server into several.
Because the default curve is MEE6's, the same XP gives the same level: 4,675 XP is level 10 in both. The import posts no level-up messages and pays no level rewards, so nobody gets pinged fifty times. Role rewards don't carry over: set them up again as tier roles in Level mode, and members get their roles the next time the leaderboard redraws. Then switch off leveling in the old bot, so members don't get two level-up pings.
FAQ
Will members keep their MEE6 levels? Yes, if you import their XP. The default curve is MEE6's, so the same XP is the same level.
Can I give or take away XP by hand? Yes. Use /score in Discord, or Set XP and Adjust XP in a player's menu on the website. Changes made by hand post no level-up message and pay no level reward.
Can members submit XP? No. A Levels (BETA) leaderboard has no Submit button. XP comes from chat, voice and the changes admins make.
Can a server have two Levels (BETA) leaderboards? Not at the same time. To start a new season, freeze the old one and create a new one.
Add it to your server
Invite Scoreboards, run /leaderboard create and pick LEVELS (BETA). Every setting is described in the Levels & XP (BETA) section of the docs.
Want a competitive ladder next to it? The ELO rating guide covers ranked 1v1 and team matches.