Docs/Plugins/Auto Level
Auto Level
XP, levels, role rewards, rank cards, and a public web leaderboard.
Auto Level awards XP for activity, turns it into levels along a configurable curve, and hands out role rewards. Members get image rank cards; the server can publish a public web leaderboard.
plugins:
autolevel:
enabled: true
seconds_per_point: 60
levels:
1000: 669626417461289002 # 1,000 POINTS, not level 10
5000: 674638268135047186
public_leaderboard: true
Setup checklist
- Open Levels and enable Auto Level. Begin with one
maintrack and the default curve. - Choose message and voice sources. Exclude staff, bot channels, and other places where activity should not earn XP.
- Leave display delay and cooldown jitter at their defaults for normal use. Set them to zero only for a short private test if instant numbers are needed.
- Add one low test reward below the bot's highest role. Decide whether earlier
earned rewards stay with
keep_previous. - Choose an announcement destination or leave announcements off for the first test.
- Send qualifying messages as a regular member, respecting the message cooldown. Inspect the dashboard XP overview for live values.
- Cross the reward threshold and confirm the role plus announcement. Use an XP admin command to move back below it and confirm explicit adjustments reconcile rewards as intended.
- Enable the public leaderboard or rank-card customization only after checking the corresponding feature grants and privacy expectations.
How XP works
- Message and voice activity earn points (
weighttunes the mix,seconds_per_pointis the per-member cooldown between message awards). - Include/exclude lists scope earning by role, channel, and category
(
include_roles,exclude_channels,include_voice, and friends). multiplierandmultiplier_rolesboost earning globally or per role.- Multiple tracks (
tracks,category) let separate areas of your server level independently, each with its owndefault_curveor fullycustomcurve.
Keeping XP hard to game
Two built-in defenses stop members from reverse-engineering your XP rates and farming to them:
- Randomized awards and cooldowns. Each message earns a random amount in
your configured range, and the cooldown between awards is randomized too
(
cooldown_jitter_secondson a track's message source, default 15 - so the default window lands anywhere between 45 and 75 seconds). Neither the award nor the window can be timed. - Delayed readouts. Rank cards,
!ranktext,!leaderboardpages, and the public web leaderboard refresh on a randomized delay (display_delay_seconds, default 180) instead of live - so sending a message and re-checking a card never reveals the exact award. Level-ups always show immediately; only progress within a level lags. Set it to 0 if you prefer live numbers.
Because of the delay, an xp give/xp take/xp set you issue can take a
few minutes to appear on the member's card - the dashboard's XP overview
always shows live values.
Rewards and announcements
levels maps a points threshold to a role, so 1000: <role id> grants
that role at 1,000 points rather than at level 10. (If you would rather work
in levels, the newer tracks.<id>.rewards form is keyed by level and the
dashboard's Levels page converts for you.) keep_previous controls whether earlier reward
roles stay on promotion. Reward roles also come OFF when the XP that earned
them goes away - xp take, xp set, or a reset below a threshold removes
the roles that threshold granted. Rewards you add after members already have
XP are settled automatically: anyone owed a role receives it the next time
they earn XP, so setting up rewards late (or importing levels first) just
works - no recheck command needed. Announcements go to the channel where it happened, a
fixed channel (announce_chan), or DM (announce_dm), with a templated
announce_msg. When announcing in the channel where it happened, turn on
the track's announce.reply option (also a toggle on the Levels page) and
the bot replies directly to the message that earned the level-up instead of
posting a loose line - if that message is gone by then, it posts normally.
Rank cards and the leaderboard
!rank renders an image card (server accent via card_theme, a default
background via background_url). Members can personalise their own card with
the rankcard commands - rankcard background takes a direct image upload
as well as a URL (static images: png, jpg, or webp);
card_background_min_level can gate custom backgrounds behind a level. card_full_numbers: true (also on the dashboard
Levels page) shows exact XP numbers on cards instead of the 12.3k shorthand.
Card customizations are per server: the background, accent color, bio,
title, and level-up message a member sets in your server show only in your
server, and the rankcard commands change the server they are run in. Bio,
title, and custom level-up message text must pass your censor filter - a rank
card is not a way around the word list. The filter is enforced when a member
sets the text and again every time a card or level-up message renders, so text
that predates a filter addition is simply hidden. Mods can inspect any member's
card customizations (background included) with rankcard view, and wipe them
with rankcard modreset. public_leaderboard: true publishes a shareable
web leaderboard for your server at /leaderboard/<server id>. If your games
economy publishes its richest-members board too, the two pages link to each
other.
Custom backgrounds (the server default and per-member ones) require the
LEVELS_PRO feature; image cards at all require RANK_CARDS - without it,
rank commands answer in text.
A member's own background beats the server default, so background_url is
the fallback rather than an override. Rank cards show up to six badge icons.
If a member holds any HepBoat badges (supporter tiers, staff and
community badges - the same ones !info lists), their icons render on the
rank card automatically, under the avatar. Badges are platform-wide, so the
same icons show on every server's cards.
The dashboard's Levels page includes a full structured editor for tracks, curves, XP sources and rewards, with live previews of the curve maths.
Troubleshooting
- Messages never award XP: check the track source, include and exclude lists, member role, channel, category, and randomized cooldown.
- The dashboard changed but
ranklooks old: member-facing readouts may be delayed bydisplay_delay_seconds; the dashboard overview is live. - A reward role does not grant: check role hierarchy and threshold units. The
legacy
levelsmap uses points, not displayed levels. - Rank is text instead of an image: the server needs
RANK_CARDS. - Custom backgrounds are refused: they need
LEVELS_PROand may be gated bycard_background_min_level. - The public page is unavailable: turn on
public_leaderboardand use the server's leaderboard URL.
Commands
Arguments in {curly braces} are required. Arguments in [square brackets] are optional.
| Command | What it does |
|---|---|
/rank [user] [track] |
Show your level and rank card. |
/profile [user] [track] |
Show a leveling profile card. |
/leaderboard [window] [track] [page] |
XP leaderboard - all-time, weekly, or monthly. |
/top [window] [track] [page] |
XP leaderboard (alias of leaderboard). |
/rewards [track] |
List the level-up role rewards for a track. |
/rankcard background [url] [image] |
Set your rank-card background image (premium). |
/rankcard color [hex] |
Set your rank-card accent color. |
/rankcard bio [text] |
Set your rank-card bio. |
/rankcard title [text] |
Set your rank-card title. |
/rankcard message [text] |
Set your custom level-up message. |
/rankcard reset |
Reset your rank-card customizations. |
/rankcard modreset {user} [scope] |
Reset a member's rank-card background or all customizations (mod). |
/rankcard view {user} |
Inspect a member's rank-card customizations, background shown as an image (mod). |
/xp give {user} {points} [track] |
Grant XP to a user (admin). |
/xp take {user} {points} [track] |
Remove XP from a user (admin). |
/xp set {user} {points} [track] |
Set a user's XP to an exact value (admin). |
/xp reset [user] [track] |
Reset XP for a user or the whole guild (admin). |
/xp sync-roles {user} [track] |
Re-apply a user's earned reward roles (admin). |
/xp show [user] |
Show a user's XP across all tracks (mod). |
/xp level {level} [track] |
Show the XP required to reach a level (mod). |