Rank System
How XP, levels, and XP boosts work, and everything that earns XP.
The basics
- Per server. Your XP and level are tracked separately in every server. Being level 40 in one server has no effect on your level anywhere else.
- Off by default. A server admin turns it on with
/rank enable(and off again with/rank disable). While it is off, nothing earns XP there. - One earn every 5 seconds. Messages and commands share a single 5-second cooldown, so you cannot stack both to earn faster.
- Check your progress with
/rankor/level. See the whole server with/leaderboard.
What earns XP
Two things give XP, both only in a server where ranking is enabled:
| Action | Base XP | Bonus |
|---|---|---|
| Sending a message | 18–32 (random) | Up to +15 for longer messages |
| Message with a file attached | 18–32 (random) | +5, plus the length bonus |
| Using a CITY slash command | 25–38 (random) | None |
- Message length bonus. Messages of 20 characters or fewer get only the base roll, so "lol", a single emoji, or spam is worth the least. Past 20 characters a bonus is added that grows with length but is capped at +15, so a very long message is not worth much more than a normal sentence.
- File attachments. Posting an image, video, GIF, or any other attachment adds a flat +5 on top of the message roll, so it is worth a little more than a plain message but still less than running a command. A caption still earns its own length bonus.
- CITY commands. Only CITY's slash commands earn XP, not commands from other bots. Any CITY slash command you successfully run in the server counts once, on the shared cooldown. The command roll is a little higher than the message roll, but there is no length bonus.
- The 5-second cooldown is shared between messages and CITY commands and is per server. It only exists to block copy-paste and macro spam. Normal chatting earns XP on essentially every message.
- Hard cap. No single message or command can ever award more than 200 XP, even with boosts applied.
- Bot messages, system messages, and anything sent in DMs never earn XP.
Levels
The XP needed to go from one level to the next follows this curve:
XP to next level = 0.3 × level² + 50 × level + 250
Your level is recalculated from your total XP every time you earn. It is never a separate counter that only goes up, so the level shown on your card is always exactly what your total XP is worth.
| Level | XP for that level alone | Total XP to reach it |
|---|---|---|
| 1 | 250 | 250 |
| 5 | 455 | 1,759 |
| 10 | 724 | 4,836 |
| 20 | 1,308 | 15,242 |
| 30 | 1,952 | 31,818 |
| 50 | 3,420 | 85,880 |
| 100 | 8,140 | 371,010 |
As a rough sense of scale, a normal message is worth about 30 XP, so reaching level 100 is roughly a couple months of steady, active chatting rather than a multi-year grind. Early levels come quickly and the climb gets meaningfully harder as you go, but the gap between level 1 and level 100 is much smaller than it used to be.
XP boosts
A server admin can attach an XP boost to a role with /rank boost-role add, anywhere from +1% to +200%. /rank boost-role list shows what is set, and /rank boost-role remove clears one.
- Boosts stack additively. If you hold a +20% role and a +30% role, you earn at +50%, not +56%. The support-server boosts below all add into the same total.
- The total is capped at +200%. That is the most boost anyone can ever have. Three +200% roles is still only +200%, and +200% from a role plus the +50% booster boost plus the +20% tag boost is still only +200%. Anything past that does nothing.
- At the +200% cap, every message and command is worth triple its roll, up to the 200 XP hard cap.
- When a boost is active, your level-up message and rank card show a 🔥 +X% XP Boost active note.
- Boosts only ever help. There is no way to configure a negative multiplier.
Boosting CITY's support server
Anyone currently boosting CITY's support server gets a flat +50% XP in every server that has the leveling system on. It applies the whole time you are boosting, stacks on top of any local /rank boost-role boosts in that server, and stops as soon as your boost ends.
Boosting also unlocks a cosmetic perk: /rank color, which lets you set a personal background and accent color for your rank card that overrides every server's default, everywhere CITY is. Clear it with /rank color set to reset.
Displaying CITY's server tag
Anyone displaying CITY's support server as their Discord profile's server tag (the small badge next to your name, set from Discord's own User Settings) gets a flat +20% XP in every server that has the leveling system on. This does not require boosting, just wearing the tag, and stacks with the booster boost above and any local /rank boost-role boosts.
This checks the actual server behind the tag, not how the tag looks. Another server setting an identical tag name and badge icon does not qualify - only the tag pointing at CITY's real support server does.
Level-up rewards
Leveling up can hand out roles, if the server has set them up (on the CITY dashboard or with /rank):
- Level roles. A server can tie roles to specific levels. In the default exclusive mode you only keep the single highest role you qualify for, and lower ones are removed as you pass them. In stack mode you keep every role you have reached.
- Leaderboard roles. A server can set a "Top 10" role and a "First Place" role. These are kept in sync with the live XP leaderboard automatically, so they move to whoever currently holds those positions.
- The Movin' Up award. Reaching level 30 in any single server earns Movin' Up, then again at level 69 and level 100. It shows as a badge on your
/profile.
When you level up, CITY posts a level-up card in the channel where it happened (or a short level-up message if the level came from a command).
Checking your rank
/rankand/levelboth show your rank card: current level, progress into the level, your position on the server leaderboard, and any active boost. Add auserto check someone else./leaderboardshows the full standings. It has a server scope and a global scope; global adds up a user's XP across every server they share with CITY.