automod.

filters that catch the obvious things before a human has to.

how automod evaluates a message

automod checks ordinary member messages and edited messages before the rest of havoc’s message features. it does nothing until the module is enabled, and each filter is switched independently. one message can match several filters; the case reason records every match, but havoc applies the configured punishment once.

  1. 01

    choose the filters

    turn on only the checks that match the server’s rules, such as invites and spam.

  2. 02

    choose one response

    set a single punishment used by every enabled filter, with a duration when the response is timeout or mute.

  3. 03

    add known exceptions

    whitelist staff roles, trusted members, or channels where the same content is allowed.

  4. 04

    enable and inspect

    run ,automod enable, then use ,automod status to verify the stored state.

,automod invites on
,automod links on
,automod spam on
,automod punishment timeout 10m
,automod whitelist add #resources
,automod enable
,automod status

the five built-in filters

automod filter commands
commandwhat it doesneeds
/automod links onenable matching text containing an http, https, or www link; use automod links off to disable itmanage guild
/automod invites onenable matching discord.gg and discord invite URLs; use automod invites off to disable itmanage guild
/automod spam onenable matching a member’s sixth message inside a rolling five-second window; use automod spam off to disable itmanage guild
/automod mentions onenable matching at least five combined user and role mentions, or an everyone/here mention; use automod mentions off to disable itmanage guild
/automod caps onenable matching messages with at least 12 letters where more than 70% are uppercase; use automod caps off to disable itmanage guild

link and invite checks overlap: a discord invite is also a link when both are on, so the case can name both hits. spam state is kept in memory for recent traffic and is bounded; restarting havoc clears that short five-second window, not the saved filter settings. caps ignores numbers, spaces, and punctuation when calculating its ratio.

notefilters inspect text, not intent

link detection does not maintain a safe-domain list, and invite detection does not distinguish your own server’s invite. use a channel, role, or member whitelist where those messages are expected instead of assuming the filter knows which destination is trusted.

blocked words and phrases

the words filter is active whenever the stored list contains a match; it has no separate on/off command. entries are case-insensitive, limited to 100 characters each, and matched at word boundaries. a phrase can contain spaces. up to 100 entries are stored.

blocked words and phrases commands
commandwhat it doesneeds
/automod words add <word or phrase>add one case-insensitive blocked entrymanage guild
/automod words remove <word or phrase>remove the exact stored entrymanage guild
/automod words listpage through the current blocked entriesmanage guild
/automod words reseterase the entire blocked-word listmanage guild
,automod words add buy followers
,automod words add slur
,automod words list
,automod words remove buy followers
dangerreset removes the whole list

automod words reset does not merely disable word checking; it permanently replaces the list with an empty one. use automod words list before resetting if staff need a record.

automatic and configured exemptions

havoc always skips bots, the havoc owner, the server owner, and members who hold administrator, manage server, manage messages, moderate members, kick members, or ban members. those permission-based exemptions are automatic and are not shown in the whitelist.

::member whitelist
skips one member in every channel, regardless of their roles.
::role whitelist
skips every member who currently has that role.
::channel whitelist
skips all member messages sent in that text channel.
automatic and configured exemptions commands
commandwhat it doesneeds
/automod whitelist add <member, role, or channel>add one exemption; at most 200 entries are storedmanage guild
/automod whitelist remove <member, role, or channel>remove the resolved exemptionmanage guild
/automod whitelist listshow the stored member, role, and channel entriesmanage guild
warningstaff permissions bypass every filter

a role with any automatic exemption permission bypasses automod even when it is absent from the whitelist. audit broad staff roles before relying on automod for compromised-account containment.

one punishment for every match

automod punishment without an argument shows the action and stored duration. setting it accepts exactly one of the six responses below. the optional duration is used by timeout and mute and can be no longer than 28 days; both names use discord’s native timeout here.

delete

delete the triggering message. this is the default response.

warn

dm the member with the matched filter names. a closed dm is ignored, but the case is still recorded.

timeout or mute

apply a native discord timeout for the configured duration.

kick or ban

remove the member or ban them without deleting message history.

,automod punishment
,automod punishment delete
,automod punishment mute 30m
/automod punishment action: ban

choosing a new action changes the response for links, invites, spam, mentions, caps, and blocked words together. there is no per-filter punishment command.

enabling and inspecting state

enabling and inspecting state commands
commandwhat it doesneeds
/automodshow the full automod status cardmanage guild
/automod statusshow enabled state, filters, punishment, lists, and durationmanage guild
/automod enablebegin checking messages with the configured filtersmanage guild
/automod disablestop checking while retaining filters, lists, and punishmentmanage guild
/automod linksshow whether the links filter is on; the other bare filter commands report their own statemanage guild

config automod is a higher-level configuration inventory: it reports that automod settings exist without disclosing their values. use automod status, the list commands, and the bare filter commands when staff need the actual state.

cases, logging, and failures

every successful response creates a moderation case named for the action, with a reason such as matched links or spam. timeout and mute cases include the duration. staff can inspect these with the commands in moderation. changing automod settings emits a configuration event, and failed punishments emit a moderation event; route those events through the server’s logging setup.

warninghierarchy and bot permissions still apply

delete needs access to the message, timeout needs moderate members, kick needs kick members, and ban needs ban members. timeout, mute, kick, and ban also fail when the target’s highest role is equal to or above havoc’s. on failure the triggering message is not treated as deleted, and havoc emits a failure event instead of pretending the punishment worked.