Levelling and XP
How members earn XP from chat and voice, level rewards, announcements, leaderboards and streaks.
Levelling awards XP for chatting and for time in voice, turns it into levels, and can hand out roles as members pass thresholds. Tracking is on from the start; the configuration commands need the XP addon, so run /enable xp first (Administrator). /disable xp stops tracking.
Three levels per member
Every member has a text level, a voice level and a total level, from text XP, voice XP and the two added together. All three use the same table, from level 0 to 100.
| Level | XP needed |
|---|---|
| 1 | 100 |
| 5 | 1,000 |
| 10 | 3,250 |
| 25 | 17,500 |
| 50 | 66,250 |
| 100 | 257,500 |
How text XP is awarded
A message earns XP for its length. Mentions, links and emoji are removed before counting, a message with no letters or numbers earns nothing, and no more than 120 characters of one message count.
A message earns 1 XP, plus 0.1 XP for each counted character after the eighth, rounded down. Messages shorter than nine counted characters earn nothing; a full 120-character message earns 12.
There is no fixed cooldown between messages. The anti-spam filter controls the pace instead, and it is on by default:
- Messages under five counted characters are ignored.
- A message at least 80% similar to one of your recent messages (the last ten, within 90 seconds) earns nothing.
- Messages under nine characters are limited to five every five minutes, and each counts as half a message.
- Each member gets a budget of 20 messages and 500 counted characters per minute. Messages over the budget earn nothing.
/anti-spam counter off (needs Administrator) turns off all four checks, for XP and for the message count. The 120-character limit per message still applies.
| Rate | Default |
|---|---|
| XP per counted character | 0.1 |
| Characters counted per message | 120 |
| Characters per minute (anti-spam) | 500 |
| Messages per minute (anti-spam) | 20 |
No slash command changes these rates; Epix AI can, for someone with Manage Server. Winning a mini-game round can also award XP, added to text XP.
How voice XP is awarded
Members in a voice channel are credited every minute: 1 XP a minute, scaled by their own mute and deafen state and by how many other members share the channel. Bots are not counted, and stage channels earn no voice XP.
| State | XP per minute |
|---|---|
| Muted and deafened | 0.5 |
| Muted, alone | 1 |
| Muted, with others | 1.25 |
| Unmuted, alone | 1.5 |
| Unmuted, with one other member | 2 |
| Unmuted, with two or more | 2.5 |
An hour of talking with two friends is worth 150 voice XP.
Exceptions and multipliers
/xpexceptions (needs Manage Server) marks channels and roles as ignored or exclusive.
- Ignored channels earn nothing. A member holding an ignored role earns nothing anywhere. Bot-command and spam channels belong here.
- Exclusive: as soon as one exclusive channel or role exists, XP is earned only in exclusive channels, or by members who hold an exclusive role.
- Ignored wins over exclusive.
- Bots never earn XP, so they do not need an entry.
/xprates (needs Manage Server) sets XP multipliers for roles and channels, from 0.01 to 100. Values above 1 boost XP and values below 1 reduce it. Multipliers combine by multiplying, so a member with a 1.5× role in a 2× channel earns 3×. They apply to both text and voice XP.
Level rewards
/levelsettings (needs Manage Server) opens a panel for reward roles and level-up messages. A reward rule is a role plus a required text level and a required voice level, each 0 to 100 (0 means not required, and at least one must be above 0). When both are set, the mode decides whether a member needs both (and) or either (or).
- Stacking is the default: members keep every reward role they have earned.
- If you turn stacking off, or turn on "remove previous rewards", the rule replaces lower rewards instead. When it is granted, Epix removes any reward role whose text and voice requirements are both at or below this rule's.
Rewards come back to returning members. If a member qualifies for a reward but no longer has the role (for example, after leaving and rejoining), they get it back the next time they chat, along with a "reward restored" message.
Level-up messages
Announcements are switched on by default, but they have no channel until you pick one. Out of the box, the only messages are DMs to members who earn a reward role or get one back. Announcements are triggered when a member's text level or voice level goes up.
- Fixed channel: announcements are posted there.
- Source channel: a text level-up is announced in the channel where the member was chatting. Voice level-ups have no source channel, so they use the fixed channel if one is set.
- DM on reward: the member gets a DM when a level-up earns a reward role, or when a reward is restored. Level-ups without a reward are never sent by DM.
There are three templates: level-up, reward earned and reward restored. Each can be up to 1,900 characters. Until you write your own, Epix uses built-in wording.
{user} reached text level {user.levelText} and earned {roles}!Leaderboards and member commands
| Command | What it shows |
|---|---|
/rank [user] | A card with the member's voice, text and gaming levels in this server. |
/top [type] [period] [page] | The server leaderboard: voice hours, text XP, messages, combined, streak or games, for today, this week, this month or all time. XP boards include a chart of the last seven days. The streak board is Premium. |
/engagement [type] | The server's messages, text or voice activity over the last seven days, as a chart. |
/profile [user] | The member's global profile: global XP, level, streak, games and world ranking. |
/globalstreak [user] | The member's global streak (see below). |
/streak [user] | The member's server streak, multiplier and tier. Premium. |
/xpcolor (needs Manage Server) sets the chart color. /xpresettime (needs Manage Server) sets when the daily, weekly and monthly boards reset, in UTC: by default midnight, Monday at midnight, and midnight on the 1st. The monthly day can be 1 to 27, so it falls in every month.
Resetting XP
Only the server owner can use /resetxp. It resets voice XP, voice hours, text XP or messages for a period (daily, weekly, monthly or all time), for every member at once. An all-time reset of text or voice XP also resets that level.
Server streaks (Premium)
A streak counts the consecutive UTC days on which a member meets the server's daily requirement: by default 5 messages and 10 minutes in voice, both required (switch the mode to OR to accept either). Missing a day ends the streak unless a break covers it, and the next qualifying day starts again at 1.
/streaksettings (needs Manage Server) opens the streak panel: turn streaks on (they start off), set the requirements and mode, add tiers, and choose where streak notifications go (the channel where the member qualified, a fixed channel, or a DM; they start off).
Multiplier tiers
When the multiplier is on (it starts off), a member's server XP, both text and voice, is multiplied by the highest tier their streak has reached. The default tiers are 1.1× at 5 days, 1.2× at 10, 1.35× at 20 and 1.5× at 30. A server can have up to 20 tiers, and each must be above 1× and no more than 3×. Use /streaktier list, add, remove or clear to manage them.
Breaks and restores
A break freezes streaks for 1 to 90 days, for the whole server, one role or one member. If a member still qualifies during a break, that day counts as normal. Days they miss inside the break are frozen, not lost. Breaks are set with the text form of the command, and ! is the default prefix:
!streaksettings break server today 7 Holiday week
!streaksettings break @Staff 2026-11-02 3
!streaksettings break list
!streaksettings break remove <id>To repair a streak after the fact, use !streaksettings restore @member, which opens a panel. restore @member 3 covers the last three days, and restore @member auto covers the current gap or the most recently lost streak. A restore can reach back no more than 90 days.
Global streak
The global streak is free and separate from any server's streak. It counts consecutive UTC days on which a member sends 15 messages or spends 30 minutes in voice, adding up activity across servers. Server settings do not affect it and server admins cannot freeze it; /globalstreak shows it.
XP milestones (Premium)
/xpmilestones (needs Manage Server) announces when a member's daily, weekly or monthly stats pass a round number. You can track messages (an interval of at least 100), text XP (at least 500), voice XP (at least 500) and voice minutes (at least 30). Each period has its own on/off switch and channel, and each metric has its own interval and message.