🪄 Pixie Docs
Overview Commands Blog Status Invite
Engagement & Rewards

Message Rewards

Give a role or an XP boost for hitting a message count in a time window - temporary or permanent, as many separate reward rules as you want.

The commands you'll actually use

Manage Guild for toggle/addreward/removereward
$msgs toggle
$msgs [@member]
$msgslb [week|month]
$msgs addreward <@role or xp> <on> <in> <expire> [message]
$msgs removereward <id>

Also $msgs enable/disable, and /msgs for all of these. The reward rule syntax is the one part worth slowing down for:

$msgs addreward @Active 500 1h 1d
$msgs addreward chatxp1.5x 100 alltime 30m

First example: 500 messages in 1 hour gives @Active for 1 day. Second: 100 messages ever gives 1.5x chat XP for 30 minutes. $msgs rewards lists every rule's ID (needed for removereward), and $msgs active [@member] shows whether a specific member currently has a temporary reward live and how long it has left - handy for checking the first example actually fired before its 1-day expiry runs out.

Everything else

Every command below needs Manage Guild unless noted.

CommandDoes
$msgs setrewardmsg <id> [message]Set or reset one reward rule's announcement text
$msgs purgerewardsRemove every reward rule at once
$msgs autodetectmsgrolesAuto-create rules from existing roles named like 500 Messages
$msgs setnotify [#channel] / togglenotifyWhere reward announcements post, and whether they post at all
$msgs excludechannel #channel / removeexcludechannel / listexcludedchannelsStop a channel's messages from counting toward message rewards at all - e.g. a bot-commands or spam channel
$msgs toplbpanelUI for giving a role to whoever currently leads the week/month/alltime leaderboard, live - updates continuously as the lead changes. Role picker plus a separate Shoutout Settings screen (channel + message). (addtoplbreward/removetoplbreward both still work as aliases straight into this panel)
$msgs lasttoplbpanelUI for giving a role to last period's #1 chatter once it fully ends, held for the whole next period - decided once, unlike the live version above. Role, a re-earn cooldown (e.g. 30d/1mo, so the same person can't win every single period), and its own separate Shoutout Settings screen. (leaderpanel/setlastperiodleader/removelastperiodleader all still work as aliases straight into this panel)
$msgs active [@member]Show a member's currently-active temporary rewards and time left
$msgs resetAdministrator - wipes all message data for the entire server
$msgs autolb <#channel> [period] / autolbremoveA leaderboard message that refreshes itself every 10 minutes
$msgs lbhistory [week|month]Browse a past week/month's leaderboard (last 12 kept)
$msgs rolling [period] [@member]No permission needed - a rolling message count over a period (e.g. $msgs rolling 7d @user), defaults to 7 days, capped at 90. Shows the member's top channels for that window too.
$msgs peakhours [period]No permission needed - which hours of the day (UTC) are busiest/quietest here, averaged over a period (defaults to 1 week, capped at 2 months)

The "top leaderboard" reward and the "last period leader" reward sound similar but behave differently: the top-leaderboard one moves in real time as the current period's lead changes; the last-period-leader one only gets decided once a period fully ends, then stays fixed for the entire next period. Both can optionally shout out the new role-holder in a channel you pick (with their avatar color/picture, via each panel's Shoutout Settings screen) - that's deliberately tucked away on its own screen rather than part of the main setup, since most servers won't want an announcement every time the live leaderboard's lead flips, only (if at all) for the once-a-period version. A shoutout never fires the moment you first set up a role either way - only once a real change happens after that.