Auto Level
Plugin name: autolevel
The AutoLevel plugin provides a guild leveling system that can reward roles to members for participating in text and voice channels.
The HepBoat autoleveling system also provides a means to have multiple guild leveling systems running at the same time, since each category can be set up with its own levelling system.
Commands
Arguments in {} are required. Arguments in [] are optional.
| Name | Description | Default Level | Usage |
|---|---|---|---|
!level OR !rank | Shows the calling user's current points and levels in the guild. This level is not calculated based on the assigned levels in the configuration. | Default | !level OR !rank |
!top [index] | Shows the guild's top 10 ranked users overall or in the given index in addition to the calling user's current ranking. | Default | !top |
!alevel show [user] OR !alevel ls [user] | Shows all the indexes that the calling or given user is currently collecting points in. | Moderator | !alevel show 76685590585671680 OR !alevel ls 76685590585671680 |
!alevel level [rank] OR !alevel rank [rank] | Shows how many points are required to reach a specific rank. This rank is not calculated based on the assigned levels in the configuration. | Moderator | !alevel level 6 |
!alevel give {user} {points} [index] OR !alevel add {user} {points} [index] | Adds the given number of points to the given user in the given index. If no index is specified, it will use the default base configuration 0:0 index. | Administrator | !alevel give 76685590585671680 10000 0:0 |
!alevel take {user} {points/all} [index] OR !alevel rm {user} {points/all} [index] | Removes the given number of points to the given user in the given index. If no index is specified, it will use the default base configuration 0:0 index. | Administrator | !alevel take 76685590585671680 10000 0:0 |
!alevel reset [index] | Deletes all guild data for the given index. If no index is specified, it will use the default base configuration 0:0 index. | Administrator | !alevel reset 579304983896391681:0 |
!alevel import {type} {guild_id} [index] | Imports Mee6 or Tatsumaki points into the current guild in the given index. If no index is specified, it will use the default base configuration 0:0 index. Available types: Mee6, Tatsumaki | Global Administrator | !alevel import tatsumaki 76685590585671680 0:0 |
The import command is only available to Global Admins. Please join our support guild to ask for assistance.
Configuration Options
Levelling indexes are assigned based on base and category configurations.
A default base configuration uses the index 0:0. A base configuration that enables include_roles and not include_channels uses the index 0:role. A base configuration that enables include_channels uses the index 0:channel.
Similarly, a default category configuration uses the index {category_id}:0. A category configuration that enables include_roles and not include_channels uses the index {category_id}:role. A category configuration that enables include_channels uses the index {category_id}:channel.
| Option | Description | Type | Default |
|---|---|---|---|
| include_roles | A list of whitelisted roles. If empty, all roles are included by default. | list(snowflake) | empty |
| exclude_roles | A list of excluded roles. | list(snowflake) | empty |
| include_channels | A list of whitelisted channels. If empty, all channels are included by default. If set, only whitelisted channels (text or voice) will be counted. | list(snowflake) | empty |
| exclude_channels | A list of excluded channels. | list(snowflake) | empty |
| include_voice | A list of whitelisted voice channels. Voice channels need to be explicitly whitelisted, or they will not be counted. | list(snowflake) | empty |
| include_voice_category | A list of whitelisted categories with child voice channels. Voice channels need to be explicitly whitelisted, or they will not be counted. | list(snowflake) | empty |
| include_category | A list of whitelisted categories. | list(snowflake) | empty |
| exclude_category | A list of excluded categories. | list(snowflake) | empty |
| multiplier | A multiplier configuration that decides how many points are awarded for each message or period of voice activity. A multiplier must be manually set or the levelling system will not award any points. | dict | None |
| multiplier_roles | A mapping of roles to an additional multiplier. Format of values is roleid: 3 | dict | empty |
| weight | A weight configuration that will randomize the multiplier point value. | dict | None |
| levels | A mapping of number of points to a role ID that will be assigned. | dict | None |
| keep_previous | Whether or not to keep previous level roles when a new level is reached. | bool | False |
| announce_msg | Message to post when a user reaches a new level role. | str | None |
| announce_chan | The channel the announce message will be posted to | snowflake | None |
| announce_dm | Whether or not to DM the announce_msg to the user when they reach a new level role. | bool | False |
| seconds_per_point | Number of seconds before more points are awarded to a user. | int | 60 |
| category | A mapping of category IDs to category autolevel configurations. | dict | None |
| level_footer_url | An image URL for the level footer. If unset, it will default to the guild icon. | str | None |
Blacklists are respected over whitelists in a conflict.
Multiplier Configuration
| Option | Description | Type | Default |
|---|---|---|---|
| message | Number of points to assign per message. | int | 25 |
| voice | Number of points to assign per seconds_per_point period. | int | 25 |
If no multiplier configuration is set in a category configuration, it will inherit values from the parent base configuration.
Weight Configuration
| Option | Description | Type | Default |
|---|---|---|---|
| message | +/- the number of points to the multiplier message value. | int | 5 |
| voice | +/- the number of points to the multiplier voice value. | int | 5 |
| seconds | +/- the number of seconds to the seconds_per_point value. | int | 15 |
If no weight configuration is set in a category configuration, it will inherit values from the parent base configuration.
Category AutoLevel Configuration
| Option | Description | Type | Default |
|---|---|---|---|
| include_roles | A list of whitelisted roles. If empty, all roles are included by default. | list(snowflake) | empty |
| exclude_roles | A list of excluded roles. | list(snowflake) | empty |
| include_channels | A list of whitelisted channels. If empty, all channels are included by default. | list(snowflake) | empty |
| exclude_channels | A list of excluded channels. | list(snowflake) | empty |
| include_voice | A list of whitelisted voice channels. Voice channels need to be explicitly whitelisted, or they will not be counted. | list(snowflake) | empty |
| include_voice_category | A list of whitelisted categories with child voice channels. Voice channels need to be explicitly whitelisted, or they will not be counted. | list(snowflake) | empty |
| multiplier | A multiplier configuration that decides how many points are awarded for each message or period of voice activity. A multiplier must be manually set or the levelling system will not award any points. | dict | None |
| multiplier_roles | A mapping of roles to an additional multiplier. Format of values is roleid: 3 | dict | empty |
| weight | A weight configuration that will randomize the multiplier point value. | dict | None |
| levels | A mapping of number of points to a role ID that will be assigned. | dict | None |
| keep_previous | Whether or not to keep previous level roles when a new level is reached. | bool | False |
| announce_msg | Message to post when a user reaches a new level role. | str | None |
| announce_chan | The channel the announce message will be posted to | snowflake | None |
| announce_dm | Whether or not to DM the announce_msg to the user when they reach a new level role. | bool | False |
| seconds_per_point | Number of seconds before more points are awarded to a user. | int | 60 |
announce_msg Message Tokens
The following tokens can be used in the announce_msg contents to dynamically generate content when a new role is assigned.
| Token | Description |
|---|---|
{user} | Will mention the awarded user. |
{server} | Will include the server name. |
{channel} | Will mention the current channel. |
{new_role} | Will mention the newly assigned role. |
{r<snowflake>} | Will mention the specified role. |
{c<snowflake>} | Will mention the specified channel. |
{u<snowflake>} | Will mention the specified user. |
Configuration Example
plugins:
autolevel: # base configuration uses index 0:0, no voice channels enabled.
seconds_per_point: 1
keep_previous: true
multiplier:
message: 8
levels:
1000: 536728628680196126
2000: 536728691795951619
3000: 536728730714898442
category:
9843950989345098345: # uses index 9843950989345098345:role
include_roles:
- 3245098734095345980340
- 239045823094823094823
include_voice_category: # will give points for voice channels in this category.
- 9843950989345098345
multiplier:
message: 12
voice: 25
multiplier_roles:
536728691795951619: 2
weight:
message: 2
voice: 10
seconds: 4
levels:
500: 2385947349805897345
1500: 3245987345987345987
3000: 34534509834509340598
10000: 324590834509853450985
keep_previous: true
seconds_per_point: 15
announce_msg: '{user} has leveled up!! yeet!'
announce_chan: 3454908448974987444
2394823904823487897: # uses index 2394823904823487897:0
exclude_channels:
- 238945723472384234987
- 2354987324598734598755
multiplier:
message: 100
levels:
10000: 3458973458937534598
25000: 23458974328974234984
50000: 3459083450983458738
seconds_per_point: 30
keep_previous: true