Using it on Discord
Commands, automatic XP, alerts, and rewards.
Members earn text XP by chatting. The bot ignores messages outside servers and does nothing when Levels is disabled. A member can receive text XP at most once per 60s; messages inside that cooldown do not reply or announce anything.
Voice XP is checked every 60s by a ticker, but each member can receive a voice grant only every 180s. The channel must not be the guild AFK channel, must contain at least 2 non-bot humans, and the member must not be deafened or self-deafened.
/level rank [user] shows a member's level, total XP, progress toward the next level, and server rank. If the user has no XP, it replies that they have not earned any XP yet. /level leaderboard renders the top 10 members by XP, or says no one has earned XP yet.
On a level-up, PaulCLI emits an internal workflow event, grants cumulative rewards, and sends an alert unless alert mode is DISABLED. DM sends the member a direct message. CHANNEL sends to the configured alert channel or, for text-triggered XP, the triggering channel if no target channel can be resolved.
Role hierarchy still applies
Reward grants are best-effort. If Discord rejects a role because it is above the bot or missing, the bot logs a warning or skips it and continues.
