Settings reference
Level settings, XP curve, and reward fields.
| Setting | Type | Default | Meaning |
|---|---|---|---|
LevelConfig.enabled | boolean | false when no row exists | Master switch. The bot grants no XP unless a config row exists and this is true. |
xpMultiplier | number | 1.0 | Scales text and voice XP. API range is 0.1–5; each grant is rounded with minimum 1. |
alertMode | CHANNEL | DM | DISABLED | CHANNEL | Where level-up messages go. DISABLED sends no alert. |
alertChannelId | snowflake or null | null | Used for CHANNEL alerts. If missing, the bot falls back to the triggering text channel when available, but the dashboard API requires a channel for CHANNEL saves. |
cardColor | hex color | #6366f1 | Seeds card layout accents. Must be #rrggbb. |
rankCardLayout | JSON string or null | null | Validated layout for /level rank. |
leaderboardLayout | JSON string or null | null | Validated layout for /level leaderboard. |
UserLevels.xp | integer | 0 | Cumulative total XP. |
UserLevels.level | integer | 0 | Stored derived level, guarded against stale concurrent writes. |
lastTextXpAt | date or null | null | Text XP cooldown marker. |
voiceXpTime | date or null | null | Last persisted voice XP marker. Runtime throttling also uses an in-memory map. |
LevelReward.levelRequired | integer | required | Reward threshold from 1 to 1000; unique per guild. |
LevelReward.roleId | snowflake | required | Role granted when a member reaches at least that level. |
| Level reached | Cumulative XP needed |
|---|---|
| 1 | 100 |
| 2 | 255 |
| 3 | 475 |
| 4 | 770 |
| 5 | 1,150 |
| 6 | 1,625 |
| 7 | 2,205 |
| 8 | 2,900 |
| 9 | 3,720 |
| 10 | 4,675 |
Cumulative rewards
On every level-up, the bot fetches all rewards with levelRequired <= newLevel and tries to add any missing roles. Members can receive older rewards later if a reward is added after they passed that level and they level up again.
