Social/EXP Ranking
The Social module tracks users' activity in a server (and globally) and rewards a certain number of experience points on each message. A server and a global leaderboards exist, making users aware of how much they are engaging with the community.
Warning
These limitations are applied to avoid users manipulating their EXP:
- EXP is calculated on the amount of messages that are sent by the user. Message length doesn't change the amount of EXP earned on each message.
- Each message is given a random EXP value, ranging from 10 to 20 EXP.
- A cooldown is applied after each EXP gain to avoid users spamming messages to power level their profile.
If the level up notifications are enabled on a server, users may be notified by DM or in the current channel as soon as they level up. Global level ups are never notified.
The EXP-to-level and level-to-EXP formulas are:
Lv = (1 + sqrt(1 + (8 * EXP) / 50)) / 2
EXP = ((Lv^2 - Lv) * 50) / 2 For reference, EXP starts at level 1. From there, levelling up follows this pattern:
- Level 1: 50 EXP needed to reach level 2
- Level 2: 100 more EXP needed to reach level 3
- Level 3: 150 more EXP needed to reach level 4
- Level 3: 200 more EXP needed to reach level 4
- etc.
In other words, the progression table is as follows:
- Level 1: 0 EXP to 49 EXP
- Level 2: 50 EXP to 149 EXP
- Level 3: 150 EXP to 299 EXP
- Level 4: 300 EXP to 499 EXP
- etc.
/profile
Command Syntax
/profile [user:{user}] [scope:(server|global)] Command Description
Shows the profile (including the EXP status) of a user. By default, it shows the profile of the user that runs the command for the current server. Provide user to check someone else's profile, and scope:global for their global profile instead.
Note
scope (defaults to server) picks whether you get the server or the global profile.
Permissions Needed
- User: None - open to everyone by default (see the Permissions System)
Examples
/profile /profile user:@cycloptux /profile user:@cycloptux scope:global
/leaderboard exp
Command Syntax
/leaderboard exp [scope:(server|global)] [days:{1-99}] [role:{role}] [min:{minimum score}] [page:{page #}] Command Description
Prints the social leaderboard. scope (defaults to server) picks between the server and global leaderboard. Use days to look at the leaderboard limited to the latest X days (up to 99). Use role to filter to users having that role (server scope only). Use min to filter to users whose gained EXP is greater than or equal to that value.
Note
The role filter only applies to the server-scope leaderboard, and days is capped at 99 for both scopes.
Permissions Needed
- User: None - open to everyone by default (see the Permissions System)
Examples
/leaderboard exp /leaderboard exp page:2 /leaderboard exp days:30 role:@Players /leaderboard exp scope:global days:30 min:10000
/exp edit
Command Syntax
/exp edit user:{user} amount:{amount} Command Description
Adds or removes a certain amount of server EXP to a member of the server. amount can be from -10,000 to 10,000 (and cannot be 0). In order to increase or decrease someone's EXP by more than that, you must run the command multiple times.
Use positive values to increase EXP. Use negative values to decrease EXP.
Editing someone's EXP will not trigger EXP role assignments for any level in between the start level and end level.
Permissions Needed
- User: Manage Server
Examples
/exp edit user:@cycloptux amount:-2000 /exp edit user:@cycloptux amount:5000
/exp reset
Command Syntax
/exp reset user:{user} Command Description
Resets the server EXP and level of a member of the server.
Any EXP role that the user had when running the command will be preserved and may need to be removed manually.
Permissions Needed
- User: Manage Server
Examples
/exp reset user:@cycloptux
/exp roles
Command Syntax
/exp roles
Command Description
Lists all of the EXP roles that are currently set in the current server.
Permissions Needed
- User: None - open to everyone by default (see the Permissions System)
- Bot: Manage Roles
Examples
/exp roles
/exp reapply
Command Syntax
/exp reapply
Command Description
Recalculates the EXP role(s) each server member is entitled to have, and applies the correct set of roles to each user. This can take a while on a large server.
The command will apply the highest EXP tier role(s) and every "persistent" role below the current user level.
Note
This command will not remove any previously acquired role(s) from server members, even if the role in question is set as EXP role and no longer available to the user based on the current EXP roles chain.
Permissions Needed
- User: Manage Roles
- Bot: Manage Roles
Examples
/exp reapply
/settings levelup-dm
Command Syntax
/settings levelup-dm
Command Description
Toggles whether you personally receive level-up notifications via DM on the current server, even if the server-wide notifications are active. Run the command again to re-enable them.
Note
This is a general per-user preferences command (under /settings), not a Social-module-specific one.
Permissions Needed
- User: None - open to everyone by default (see the Permissions System)
Examples
/settings levelup-dm
EXP and Levels Configuration (dashboard)
Note
The EXP Boost Multiplier, the No-EXP Role, No-EXP Channels, level-based role rewards, and the level-up notification settings (in-server and/or DM, custom channel, custom messages, and the notification channel blacklist/whitelist) are configured from your server's EXP and Levels page on the dashboard. The concepts below still apply - only where you configure them has changed.
EXP Boost Multiplier: applied to the default rates of gaining EXP to increase or decrease the amount of gained server EXP when messaging. The lower hard limit is -50% (0.5x EXP per message), the upper hard limit is 100% (2x EXP per message), and the default is 0% (1x, the normal rate).
No-EXP Role: users with this role don't gain any experience from their messages.
No-EXP Channels: messaging in these channels never grants experience.
Level-based role rewards: existing roles can be granted as a reward for reaching a certain EXP level. By default, an obtained role is removed once a higher-tier reward is reached - a role can instead be marked persistent (kept forever) or volatile (removed as soon as the immediate next level is reached).
Note
Example: a server has "Rookie" (level 5, volatile), "Known Member" (level 5, persistent), "Junior" (level 7) and "Senior" (level 10). A user reaching level 5 gets Rookie and Known Member; reaching level 6 loses Rookie; reaching level 7 gets Junior and keeps Known Member; reaching level 10 gets Senior, loses Junior, and keeps Known Member.
Level-up notifications: can post in-server (in a fixed channel or the channel the level-up happened in), send a DM, or both. The in-server message can be scoped to a channel blacklist or whitelist. Custom messages for both the in-server and DM notification are plain text only (no embed support) and support dynamic placeholders (e.g. the level reached, the user, the server) with a live preview on the dashboard.
See also
Full migration mapping for these commands: Migration Guide.