> For the complete documentation index, see [llms.txt](https://discortics.com/llms.txt). A consolidated single-file corpus is available at [llms-full.txt](https://discortics.com/llms-full.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://discortics.com/guides/level.md).

# Levels

Message XP and voice XP are separate tracks, each with its own levels and rewards. Both start off.

## Before you begin

- You need **Administrator** for `/xp settings` and `/xp set`.
- Discortics needs **Send Messages** and **Embed Links**, plus **Attach Files** for `/rank`.
- Role rewards need **Manage Roles** and a Discortics role above them. Integration roles can't be used.

## Set up an XP track

### Dashboard Setup

1. Open **Dashboard → Levels**.
2. Open **Message** or **Voice** and enable the track.
3. Set its **XP rate** multiplier.
4. Choose where level-up messages appear.
5. Under **Role Rewards**, select **Add reward**, then edit the role and level directly in its row.
6. Save, then test with a normal member.

### Discord Command Setup

1. Run `/xp settings`.
2. Select **Message** or **Voice**.
3. Enable the track.
4. Set its multiplier and announcement channel.
5. Add a reward role.
6. Select **Go Back**, then test with a normal member.

Use **Message → Multipliers** for role and channel multipliers. Use **Restrictions** for ignored roles, users, and channels; these restrictions affect both tracks. Each track has its own **Reset stats** action at the bottom, with confirmation before deleting XP. The other track and settings stay intact.

## Limits

| Resource               | Public | Prime | Custom |
| ---------------------- | -----: | ----: | -----: |
| Role rewards per track |     20 |    35 |    100 |
| Ignored users          |      5 |    10 |     20 |
| Ignored roles          |      5 |    10 |     20 |
| Ignored channels       |      5 |    10 |     20 |
| Role multipliers       |      5 |    10 |     20 |
| Channel multipliers    |      5 |    10 |     20 |

If your plan changes, existing entries stay, but you can't add more over the limit.

## How members earn XP

**Message XP**

- Messages need at least five characters.
- Each message earns a random amount, with a small bonus for length.
- A cooldown stops rapid messages earning XP each time.
- Global, role, and channel multipliers apply.

**Voice XP**

- Each eligible minute earns 1 to 10 XP.
- Only the voice global multiplier applies.

## Multipliers

Each is a number from `0.1` to `5.0`. Use `1.0` for normal XP. Set a track's global multiplier to `2.0` for a Double XP event, and change it back afterwards.

| Multiplier  | Where to set it                                | Example              |
| ----------- | ---------------------------------------------- | -------------------- |
| **Global**  | **Global** on Message, **Multiplier** on Voice | `2.0`                |
| **Role**    | **Message → Multi → Role → Add**               | `@Booster 1.5`       |
| **Channel** | **Message → Multi → Channel → Add**            | `#introductions 1.5` |

Role and channel multipliers only affect message XP. If a member has several multiplier roles, the saved policy chooses the highest value or their average. Channel multipliers and vote boosts apply on top.

## Level-up announcements

In the dashboard, open **Message** or **Voice** and choose **Level-up announcements**. In Discord, open the track’s **Announcement** settings.

| Mode               | Where it posts                               |
| ------------------ | -------------------------------------------- |
| **Channel**        | One channel you choose                       |
| **Active Channel** | Where the member next sends a normal message |
| **DM**             | The member's DMs                             |
| **Silent**         | Nowhere                                      |

In the dashboard, select **Edit message** to open the separate embed builder. Choose **Embed V1** or **Embed V2**, edit text and media in the preview, then save. V2 counters sit beside the format picker, with mention permissions in the sidebar. You can open the editor before choosing a destination; unsaved Levels settings remain when you return. Each track has its own message. Media and link URLs must be direct HTTP(S) URLs; level variables are supported in text.

In Discord, **Edit** sets a plain-text message and replaces a saved dashboard layout for that track.

| Variable              | What it shows               |
| --------------------- | --------------------------- |
| `{{user.mention}}`    | Mentions the member         |
| `{{user.username}}`   | Username                    |
| `{{user.id}}`         | Member ID                   |
| `{{user.tag}}`        | Username and discriminator  |
| `{{guild.name}}`      | Server name                 |
| `{{channel.mention}}` | Mentions the channel        |
| `{{type}}`            | `message` or `voice`        |
| `{{level.current}}`   | New level                   |
| `{{level.next}}`      | Next level                  |
| `{{xp.current}}`      | Current total XP            |
| `{{xp.nextLevel}}`    | Total XP for the next level |
| `{{xp.needed}}`       | XP still needed             |

## Role rewards

Each reward belongs to one track. In the dashboard, open **Message** or **Voice → Role Rewards**. Select **Add reward** to start with an available role and the next unused level, then edit either value directly in the row. Each level can have one reward; use the trash button to remove it. Save your changes with the dashboard save bar.

1. Open `/xp settings`.
2. Select **Message** or **Voice**, then **Rewards**.
3. Select **Add**.
4. Choose the role and a level from 1 to 999.

**Stack** decides what members keep. **On** keeps every reward, and **Off** keeps only the highest. Roles change when a member levels up, so editing rewards doesn't update existing members straight away.

## Ignore users, roles, or channels

Ignored entries never earn message or voice XP. Use this for bot-command channels.

1. Run `/xp settings`.
2. Select **Ignores**.
3. Choose **Users**, **Roles**, or **Channels**, then select the entries.

## Rank cards

Run `/rank` or `/rank user:@member` to see both tracks on one card. At least one track must be on, and the member must have earned XP.

## Reward messages

Open **Message** or **Voice → Role Rewards → Edit reward message** to create one common announcement for that track's role rewards. Use the same Embed V1/V2 builder as the normal level-up message.

When a member earns a milestone role, this template replaces their normal announcement and uses the track's existing delivery setting. Without a saved reward template, the normal level-up message continues to be used.

| Variable             | Value                           |
| -------------------- | ------------------------------- |
| `{{level.current}}`  | Current level                   |
| `{{reward.level}}`   | Highest earned reward milestone |
| `{{reward.mention}}` | Earned role mentions            |
| `{{reward.name}}`    | Earned role names               |

A jump across several milestones includes all earned roles that the track's stacking setting awards. Mention permissions still decide whether role mentions ping.

## Set or reset XP

| Goal             | Command                                      |
| ---------------- | -------------------------------------------- |
| Set XP           | `/xp set user:@member xp:1200 track:Message` |
| Set a level      | `/xp set user:@member level:10 track:Both`   |
| Reset one member | `/xp set user:@member xp:0 track:Both`       |

Use `xp:` or `level:`, not both. `track:` defaults to **Both**. Resetting doesn't change your rewards or settings.

## Reset settings or XP

Open `/xp settings` and select **Reset**.

- **Message**, **Voice**, **Rewards**, **Ignores**, and **Multipliers** reset that configuration.
- **Wipe Message** and **Wipe Voice** remove every member's XP on that track.

Use **Reset message stats** or **Reset voice stats** at the bottom of the matching dashboard tab. Each requires a typed confirmation and resets only that track.

> [!WARNING]
> A data wipe can't be undone. It removes member progress, not your settings.

## Commands

| Command                           | What it does               | Permission    |
| --------------------------------- | -------------------------- | ------------- |
| `/xp settings`                    | Open the Levels menu       | Administrator |
| `/xp set user: xp: level: track:` | Set a member's XP or level | Administrator |
| `/rank user:`                     | View a rank card           | None          |

## Troubleshooting

**A member isn't gaining message XP.** Check that the track is on, the message has five or more characters, they aren't on cooldown, and nothing is ignored.

**A member didn't get a reward role.** Check it belongs to the track they levelled up on, and that Discortics has **Manage Roles** and a higher role.

**An announcement didn't appear straight away.** It's sent when the member next sends a normal message. For DM mode, they must allow DMs. For Channel mode, Discortics needs access to the channel.

Prefer one-line commands? See [Direct Commands](/guides/command-arguments).
