=== Experience tracking

This feature contains the ability to track experience of users on the server and award roles based on the level they reach.
The experience is awarded once per minute and is calculated by asciimath:[`\text{rand}(\text{minExp}, \text{maxExp}) * \text{expScale}`].
Currently members only have their highest earned role assigned.

==== Necessary bot permissions
`MANAGE_ROLES` in order to award members with roles

==== Relevant system configuration
`minExp` The lower bound of the awarded base experience. Default: 10.

`maxExp` The upper bound of the awarded base experience Default: 25.

`expScale` The multiplier applied after the experience amount was determined. Default: 1.0.

==== Commands
Changing the experience scale of the server::
* Usage: `expScale <value>`
* Description: Changes the value of `expScale` on this server to `value`.

Showing the leaderboard of the server::
* Usage: `leaderboard [page]`
* Description: Shows the leaderboard of the server in a paginated format.
If no parameter is provided, it will show message count, level, experience and rank of the top 10 members.
Additionally, the same information for the executing user is shown, regardless whether or not the user is already shown on the given leader board page.
If a `page` is provided, it will display the leaderboard of the ranks `page * 10` until  `(page + 1) * 10` instead. If `page` is beyond the member count, the last members are shown.


Setting a role to be awarded at a certain level::
* Usage: `setExpRole <level> <role>`
* Description: Sets `role` to be awarded at the given `level`. If the role was previously assigned,
this will cause to remove this assignment and recalculate the roles for all users previously having this role.
A status image indicating the progress will be shown. It will not award this role to users which qualify for this, a `syncRoles` is necessary for this.  Requires you to confirm the command.
* Example: `setExpRole 50 @HighLevel` in order to award the role `HighLevel` at level `50` (the @HighLevel is a role mention)

Syncing the roles of the members with the configuration::
* Usage: `syncRoles`
* Description: Recalculates the appropriate levels for all users on the server and awards the roles appropriate for the level.
There will be a message indicating the current status of the progress, and it is highly advised to not execute this command while another instance is still processing. Requires you to confirm the command.
This command can run for a longer period of time, depending on the amount of members in the guild.

Remove a role from being awarded at a certain level::
* Usage: `unSetExpRole <role>`
* Description: Removes this role from the experience tracking, removes the role from all members previously owning it and recalculates their new role according to the configuration. Requires you to confirm the command.
This will provide a status update message displaying the process.

Disable experience gain for a certain role::
* Usage: `disableExpForRole <role>`
* Description: Disables any experience gain for members with this role. They will not gain any experience until the role is removed or it is possible for the role to gain experience again.
If a member has *any* role of the ones for which experience is disabled, the member will not gain experience.

Enable experience gain for a certain role::
* Usage: `enableExpForRole <role>`
* Description: Enables experience gain for `role`.

List roles for which experience gain is disabled::
* Usage: `listDisabledExperienceRoles`
* Description: Lists the roles for which experience gain is disabled in this server.
* Aliases: `lsDisEpRoles`

Disable experience gain for a specific member::
* Usage: `disableExpGain <member>`
* Description: Disables experience gain fpr `member`.

Enable experience gain for a specific member::
* Usage: `enableExpGain <member>`
* Description: Enables experience gain for `member`.

Show the currently configured experience roles in the server::
* Usage: `levelRoles`
* Description: Shows the current configured experience roles, and the level they are awarded at.