// leveling
Leveling
kesarAI tracks activity XP per server and renders it as image-based rank cards. Members earn XP by chatting, sitting in voice, and reacting; admins shape the curve, hand out role rewards at level milestones, and tune individual balances. Every command here is a slash command — see the slash commands reference for the full list.
Overview
Leveling is off until an administrator runs /leveladmin setupand enables it. Once on, the bot awards XP from three sources, each with its own cooldown so a wall of one-word messages can’t farm levels:
- Text— a random amount per message, gated by a per-user cooldown.
- Voice— XP per minute spent in voice, sampled on an interval.
- Reactions— XP for reacting, on a separate cooldown.
The default curve is exponential: each level costs more XP than the last, so high levels are a real achievement. Other curves (linear, decay) are selectable in the setup wizard.
How XP works
XP accumulates into a level according to the configured curve. The exponential mode grows the per-level cost quadratically; linear keeps every level the same cost; decay slowly removes XP from inactive members on a sleep-immunity cycle so overnight idling isn’t punished. The mode is chosen once during setup and applies server-wide.
Rank cards
/rank viewrenders a member’s rank card: level, XP-into-level progress, server rank, and any prestige or seasonal badges they’ve earned. It defaults to you, accepts a user argument, and also takes a raw user_id — so you can pull up a card for someone who has already left the server. /rank leaderboard posts an image of the top members and links the full, paginated standings on the web.
Role rewards
Map a Discord role to a level with /leveladmin roles. When a member crosses that level the role is granted automatically; the setup wizard can also generate a themed ladder of milestone roles for you. Roles can either stack (keep every reward earned so far) or replace (only the highest), chosen during setup.
Multipliers & ignored channels
Two channel-level controls shape where XP comes from:
/leveladmin ignore— toggle a channel so messages there earn no XP. Run it again on the same channel to re-enable./leveladmin bonus— set an XP multiplier for a channel (for example2.0for double XP). A multiplier of0or1.0clears the bonus.
Prestige
When prestige is enabled, a member who reaches the maximum level can run /prestigeto reset to Level 1 in exchange for a permanent badge tier (roman numerals I–V) and a small standing XP boost. It’s a one-way action confirmed in-chat, aimed at members who’ve maxed the normal curve and want a fresh climb plus bragging rights. Members who’d rather not be pinged on every level-up can toggle DM notifications with /levelnotify.
Seasonal ELO
Seasonal ELO is an experimental, opt-in rating mode that replaces the default curve with a zero-sumsystem. Instead of XP only ever going up, a daily cycle taxes everyone’s rating and redistributes it as dividends weighted by relative activity — so your standing moves up or down depending on how active you are compared with everyone else. Members are sorted into tiers, top finishers earn permanent season badges, and ratings compress at each season rollover.
/season info— show the current season’s state and when it ends./season history— list past season winners./season config— administrators set the season length and announcement channel.
Public leaderboards
Each guild gets a public, shareable leaderboard page on the web at a tokenised kesarai.ch/leveling/… URL. Rank cards and the /rank leaderboard output link out to it, so members can browse the full standings in a browser without running a command.
Importing from other bots
Migrating from another leveling bot? /leveladmin import pulls existing XP across. MEE6 imports read its public leaderboard API; Amari imports prompt for your Amari API token. Each source can only be imported once — re-importing requires a /leveladmin reset first.
Admin commands
The /leveladmin group (Administrator-gated) owns configuration:
/leveladmin setup— open the interactive setup wizard (enable, mode, announcements, role ladder)./leveladmin roles— set or remove a role reward./leveladmin ignore— toggle a no-XP channel./leveladmin bonus— set a channel XP multiplier./leveladmin import— import from MEE6 or Amari./leveladmin status— view the configuration./leveladmin reset— reset XP for one member or the whole server.
The /xpgroup (also Administrator-gated) tunes a member’s balance directly:
/xp add— add XP to a member./xp remove— remove XP from a member./xp set— set a member’s XP to an exact amount./xp transfer— move allof one member’s XP to another; the source is set to 0. Each side accepts a mention, raw ID, or name, so it works even when a user has left the server.