Documentation menu

Docs/Plugins/Moderation Logs

Moderation Logs

Route 94 action types into the channels you choose, with per-channel subscriptions and custom formats.

The mod log turns everything that happens - moderation actions, message edits and deletions, member joins and leaves, role and channel changes, config edits - into readable log lines in the channels you choose.

plugins:
  modlog:
    channels:
      674638168474915242:
        includes: []                 # empty = subscribe to everything
      701234567890123456:
        includes: [MESSAGE_DELETE, MESSAGE_EDIT]
      709876543210987654:
        excludes: [MESSAGE_DELETE]   # everything except
    ignored_channels: [665875009507426304]
    ignored_users: []                # hide a user's own actions and events about them
    ignored_staff: []                # hide a staff member entirely, both directions
    new_member_threshold: 900        # flag accounts younger than this (seconds)

Routing

Each channel under channels subscribes with includes (only these) or excludes (everything but these). Action names are stable identifiers like MEMBER_BAN, MESSAGE_DELETE, CONFIG_UPDATE - the dashboard's Mod Log page lists all of them grouped by category with pickers, which beats typing them.

ignored_channels suppresses noise at the source - nothing posts about events in those channels (a bot channel's message deletes, for example). Threads count as the channel they live under, so ignoring a channel also ignores everything in its threads and forum posts.

The two user lists differ in direction, and picking the right one matters:

ignored_users ignores a user's own actions and the events about them - their message edits and deletes, their joins and leaves, their nickname changes, and moderation taken on them. It does not hide things they do to other users: if they warn someone or delete someone else's message, that entry is about the other user, so it still logs. Use it for noisy bots and users whose events you simply don't want in the log.

ignored_staff is for when you want a staff member's work kept out of the log too. It covers everything ignored_users covers, plus the other direction: infractions they issue, messages they delete, commands they run, tag and config edits they make - none of it posts. The actions themselves still happen and infractions are still recorded against the target; only the log lines are skipped. Two caveats: bulk purges log a channel-level line that never names who ran them, and actions taken through Discord's own UI (a manual ban from the member list, for example) carry no actor for the bot to match, so those log as they always did.

Both lists take user IDs or role IDs - a role entry covers every member who currently holds that role, so you can stealth your whole mod team with one line instead of maintaining a list of people.

Smart behaviour you get for free

  • Debounce - when the bot itself causes an event (a censor deletion, a purge), you get one purposeful log line, not a burst of raw events.
  • Attribution - actions carry the moderator, the reason, and the infraction number where relevant.
  • Message archives - bulk deletions link a web archive of the removed messages instead of flooding the log.

Native Discord AutoMod

HepBoat also logs Discord's own AutoMod: every rule trigger (AUTOMOD_ACTION - what matched, what Discord did about it) and every rule create, update, or delete land in the mod log like any other event, so your AutoMod activity and your bot activity read as one audit trail.

The dashboard's AutoMod page lists your server's native rules - keyword lists, mention limits, and the rest - straight from Discord. With the AUTOMOD_DASH feature you can also create, edit, toggle, and delete rules from that page; without it the page stays read-only and the logging above keeps working regardless.

Recently added events

Worth subscribing if your log predates them:

  • Unbanned - the bot lifting a ban (command, appeal approval, or the dashboard), with the moderator and reason. The gateway's own Member unbanned event still covers unbans done by hand in Discord.
  • Timeout removed by a mod - !untimeout, separate from the plain Timeout cleared entry that covers a timeout simply expiring.
  • Lockdown enabled manually / Lockdown lifted manually - the !raid on and !raid off commands, naming the moderator.

Per-channel options

Each channel in plugins.modlog.channels takes more than an event list:

  • mode: PLAIN writes one line per event; mode: PRETTY writes embeds. The dashboard calls this Plain text / Embeds.
  • rich promotes named actions to an embed inside an otherwise plain channel, for the handful you want to stand out.
  • compact tightens the plain one-liners.
  • timestamps prefixes each entry with the time, rendered in timezone.
  • exclude_category drops everything from channels under a category, the category-wide counterpart to ignored_channels.

Custom formats

With the MODLOG_CUSTOM_FORMAT feature, any action's rendering can be overridden per server (custom), in both plain and pretty modes. The dashboard's format builder starts you from the current format - hit Customize on any event and the plain one-liner and the full embed load ready to edit, with a Discord-style preview updating live against sample data as you type. You control everything the bot can render: the embed's title, text, author line and icon, thumbnail, color, footer, and up to 25 fields you can rename, reorder, and set inline or full-width. A "Load default" button per section takes that half back to the shipped format, and the editor warns about placeholders that would not resolve.

Pick one of your log channels above the event list to browse just the events that channel receives - handy on a busy setup. Formats themselves always apply server-wide.

Overrides save and stage even before the feature is granted; the bot uses the defaults until then.

Commands

Command What it does
/modlog hush Silence modlog output in this guild until unhushed.
/modlog unhush Re-enable modlog output after a hush.