> For the complete documentation index, see [llms.txt](https://zoomiescore.gitbook.io/zoomiescore-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zoomiescore.gitbook.io/zoomiescore-docs/docs/features/levels.md).

# levels

XP-based leveling with role rewards.

## XP curve

Total XP required to reach level L:

```
5·L² + 50·L + 100
```

* Level 1 = 155 XP
* Level 10 = 1,100 XP
* Level 50 = 15,100 XP

## How XP is earned

* **Text** — per message you send, subject to a 60-second per-user cooldown to prevent spam farming.
* **Voice** — per minute spent in a voice channel (deafened / muted members skipped).

Both amounts are configurable per guild in Dashboard → **Levels**.

## Configurable knobs

| Setting                 | Default                     |
| ----------------------- | --------------------------- |
| XP per message          | 15                          |
| Text cooldown (seconds) | 60                          |
| XP per voice minute     | 5                           |
| Announce channel        | Same channel as the message |
| Ignored channels        | (none)                      |
| Ignored roles           | (none)                      |
| Level-up announcement   | On                          |

## Role rewards

Configure a ladder like:

* Level 5 → `Chatter` role
* Level 20 → `Regular` role
* Level 50 → `Dedicated` role

The bot grants the corresponding role when a member hits that level. Previous rewards are kept (additive), unless you configure `keep_latest` mode which strips older reward roles.

## Slash commands

```
/rank user?     → your (or another member's) level, XP, and rank
/leveltop       → top 10 in this server
```

## Dashboard

* Full leaderboard with pagination.
* Bulk-edit role rewards.
* Reset a single user's XP or the whole guild's leaderboard.
