logging.
a written record of what happened, routed where you want it.
routes, not one global destination
logging is built from routes. each route pairs one event with one text channel, so the same server can send moderation records to a private staff channel and routine joins to a quieter activity channel. creating and changing routes requires manage guild. havoc also needs view channel, manage webhooks, and embed links in every destination because it delivers records through a webhook.
,log add #mod-log moderation
,log add #message-log message_delete
,log add #message-log message_edit
,log add #server-log member_join
/log add channel: #server-log event: member_leave,log lists the routes already saved, including their channel, event, and colour. add one event at a time, or use all when a single channel really should receive every supported event.
records include member and channel ids, and moderation activity may expose staff decisions. deny ordinary members access to the destination before adding a route. havoc cannot deliver if a channel-level overwrite removes its webhook or embed permissions.
every accepted event name
event names use underscores. these are the complete names accepted by log add; all is also accepted as a catch-all route. message records identify the event and affected ids, but do not copy private message content into the logging embed.
- ::message_delete · message_edit
- messages removed or edited, including uncached events when discord supplies enough metadata.
- ::member_join · member_leave · member_update
- members arriving, leaving, or receiving a general account or guild-member update.
- ::nickname · role_changes · timeout
- specific member changes split out from the broader member update stream.
- ::role_create · role_delete · role_update
- server role lifecycle and changes.
- ::channel_create · channel_delete · channel_update
- text, voice, category, and thread lifecycle events exposed by discord.
- ::ban · unban
- guild bans being added or removed.
- ::invites · webhooks
- invite lifecycle and webhook changes; invite codes and destination content are deliberately omitted.
- ::moderation
- moderation cases produced by havoc commands.
- ::voice
- voice-state changes, including a member moving between voice channels.
- ::configuration
- changes to the server’s discord configuration.
- ::ai_watch
- records emitted by havoc’s ai watch path.
member_update can be noisy because nickname, role, and timeout changes also produce their more specific event. route only the specific names when staff do not need the general stream.
adding, inspecting, and removing routes
| command | what it does | needs |
|---|---|---|
| /log | list every configured route and its colour | manage guild |
| /log add <channel> <event> | save an event route and create or reuse havoc’s channel webhook | manage guild |
| /log remove <channel> <event> | remove one exact channel and event pairing | manage guild |
| /log reset | remove every logging route in the server | manage guild |
| /log ignore <member or channel> | toggle one member or channel in the ignore list | manage guild |
| /log ignore list | show all ignored members and channels | manage guild |
| /log color <channel> <event> <hex> | set the embed colour for an existing route | manage guild |
| /log color list <channel> | list route colours in one destination | manage guild |
removal is exact: removing message_edit from #message-log leaves that channel’s other routes alone. when its final route is removed, havoc removes the now-unused logging webhook. deleting a destination channel does not redirect its routes; remove the stale route and add the event to its replacement.
keeping expected noise out
an ignore entry suppresses an event when its metadata identifies that member or channel. use member ignores for trusted integration accounts that produce routine changes, and channel ignores for high-volume spaces whose edits and deletes are not useful to staff. the command is a toggle: running the same target again removes the ignore.
,log ignore @release-bot
,log ignore #bot-output
,log ignore listan ignore is not a universal content filter. it applies when the event producer attaches the matching member or channel id. server-wide events without that target metadata are still delivered. check the ignore list before assuming a missing record is a delivery failure.
colouring event streams
colours belong to routes, not event names globally. that means moderation can be red in a staff channel while another route for the same event uses a neutral colour elsewhere. add the route first, then pass a hexadecimal colour without inventing a new event name.
,log color #mod-log moderation e74c3c
,log color #server-log member_join 57f287
,log color list #mod-logif havoc says to add the route first, the channel and event pairing does not yet exist. inspect ,log, add that exact route, and then set its colour.
a practical multi-channel layout
moderation log
route moderation, ban, unban, and timeout here. limit viewing to staff who handle cases.
message log
route message_delete and message_edit here. this stream grows quickly, so separating it keeps cases readable.
member log
route joins, leaves, nicknames, and role changes here. add voice only if staff genuinely use that volume.
server changes
route role, channel, invite, webhook, and configuration events here for administrators reviewing structural changes.
- 01
create private destinations
set channel access first, including havoc’s webhook and embed permissions.
- 02
add the narrow routes
prefer explicit event names so each channel has a clear purpose.
- 03
generate a safe test event
edit a test message or nickname, then confirm the expected route receives one record.
- 04
review after a busy day
split noisy events and ignore only sources whose records are genuinely unactionable.
resetting without surprises
,log reset deletes all route configuration and removes logging webhooks that are no longer used. it does not merely restore colours, and there is no undo command. write down the current output of ,log before resetting if you intend to rebuild the same layout.
use log remove for a single bad route. reserve log reset for a deliberate full rebuild; events that happen before routes are added again will not be backfilled.
logging records explain what happened; they do not restore deleted content. for the short-lived deleted and edited message cache, see purging & cleanup.
