Logging
Route messages, members, roles, channels, voice, invites, emojis and moderation events to their own channels, and the one rule that trips everyone up.
Righteous can log eight categories of server activity (messages, members, roles, channels, voice,
invites, emojis & stickers, and moderation) each to its own channel, each independently narrowed to
specific events. ,log (and /log) is the whole surface, and it needs Administrator: the
permission is declared once on the parent command and covers every subcommand under it.
An empty event list means EVERY event, not none
This is the single most counter-intuitive line in the whole feature, so it goes first: point a
category at a channel with ,log add and stop there, and you get full coverage of that
category, not silence. Narrowing which events post is something you opt into with ,log events:
until you do, everything logs. It's a deliberate exception to how gates normally work here: most
things fail closed by default, this one fails open on purpose, because "add a channel and get
nothing" would look like the feature was broken.
Route a category to a channel
Syntax
,log add <#channel> [categories...]
Example
,log add #mod-log members roles
Naming no categories routes every category to that channel. Categories are: messages,
members, roles, channels, voice, invites, emojis, moderation. Voice is the chattiest of
the eight (every join, leave, move, mute, deafen and stream change goes through it) so it's usually
the first one worth narrowing.
Syntax
,log remove <#channel> [categories...]
Example
,log remove #mod-log
Naming no categories un-routes the channel entirely: every category currently pointed at it stops. Naming specific categories clears only those, and only where they actually point at that channel; a category routed elsewhere is left alone.
Narrow what a category logs
Syntax
,log events <category> [event] [on|off]
Example
,log events voice voicejoin off
Run with just a category to see its current sub-events and which are on. Toggle a single event off and Righteous quietly expands the stored list to "everything except that one" behind the scenes: you never see the mechanics, but it's why turning the last remaining event back on collapses the list back down to "all events" rather than leaving an equivalent-but-explicit list sitting there.
Tip
Voice is the worked example for this: turn off voicejoin and voiceleave (by far the noisiest
pair) and keep voicemove, voicemute, voicedeafen and voicestream logging normally.
See and clear your routing
Syntax
,log list
One line per category: which channel it's routed to, how many of its events are enabled, and whether webhook delivery is on.
Syntax
,log reset
Clears every category, channel and ignore entry at once. There's no per-category form of this: for
one category, use ,log remove instead.
Exempt a channel, role or member
Syntax
,log ignore <member|channel|role>
Example
,log ignore #staff-chat
Syntax
,log ignore list
Syntax
,log ignore remove <target>
Example
,log ignore remove #staff-chat
The ignore list is guild-wide, not per-category: one list suppresses a channel, member or role from every logged category at once, not just the one you were looking at when you added it. It's the only piece of this feature that fails open by design in the other direction too: an ignore entry only ever suppresses something a reader could already see, so an uncertain match errs toward "not ignored" rather than silently dropping a log line that should have gone out.
Turn on webhook delivery
Syntax
,log webhook <#channel|default> <on|off|name|avatar> [value]
Example
,log webhook #mod-log on
Delivering through a webhook instead of a plain bot message is free: ,log webhook #channel on
reuses one webhook per channel even when several categories share it. Customizing that webhook's
name or avatar is Server Premium, checked at the moment you try to set one rather than
declared up front, because the same command handles both the free toggle and the paid customization.
Syntax
,log webhook default <name|avatar> <value>
Example
,log webhook default name Righteous Logs
The word default targets a server-wide fallback identity rather than one channel: set with
Server Premium the same way. Identity resolves in this order for any given category: its own
name/avatar override, if it has one; then the server-wide default, if that's set; then the webhook's
own built-in identity if neither is. Setting a name doesn't blank out the avatar, and vice versa:
they're two independent overrides, not one "custom identity" toggle.
Restore a deleted role or channel
Every logged role or channel deletion carries a Restore button on its log line, good for one click, ever, per snapshot. It's the most heavily gated control in the system for exactly that reason:
- The click is a race-safe one-time claim: two admins hitting Restore on the same deletion within the same second cannot both succeed. Whoever loses the race is simply told someone beat them to it.
- It's permission-checked against fake permissions the same way every other role/channel action here is, and for a role restore, checked against the role's position at the moment it was deleted: not against anything currently in the server, since the role doesn't exist yet to compare.
- On failure (missing permission, failed hierarchy check, the bot itself lacking the needed permission) the claim is released, so a legitimate admin coming along after a refused attempt can still use the button.
Restore recreates the role or channel with its recorded settings: name, colour, permissions, topic, overwrites, and so on. It does not restore what the object contained: a restored role gets nobody's membership back, and a restored channel starts with no message history. It's a fresh object built from the old settings, not the same object come back to life.
Deleting a logged channel clears its routing, not its row
If you delete a channel a category is logging to, that category's channel pointer clears. Logging
to it simply stops, but its own settings (which sub-events are on, any webhook name override)
aren't lost. Point ,log add back at a new channel and those settings are still there, rather than
needing to be reconfigured from scratch.
Open the config panel
Syntax
,log panel
A dedicated panel with its own page per category, an Overview and a Webhooks page, everything the
commands above can do without typing subcommand names. It's not a page bolted onto the general
,config panel: logging has too many categories and
sub-event toggles to fit inside that panel's page budget.
Common issues
A category I only pointed at a channel is logging everything, including things I didn't want. By
design. See the callout at the top. Use ,log events to narrow it.
Webhook delivery works, but the name/avatar I set never shows up. That half is Server Premium;
the toggle itself is free but the customization isn't. ,donate covers what unlocks it.
I deleted the channel a category logged to, and now nothing posts, but ,log list still shows the
category configured. That's expected: the row survives, only the routing clears. Run ,log add
again pointing it somewhere new.
Restore says someone already used it, but I don't see who. It's a one-time claim per snapshot; once anyone succeeds, or a legitimate attempt fails and releases the claim to nobody, the next click either confirms it's done or works. Check the log line's own text for who restored it.
Nothing here fixed it. The shared common issues page works the same ground from the symptom end.