BlazeBans/Automatic enforcement
AutoMod
Chat filtering that mutes automatically when a message matches a rule. It ships disabled, because what should be filtered is your decision and a badly tuned filter is worse than none.
Everything lives in automod.yml.
Turning it on
chat:
enabled: true
mute-duration: "1d"
mute-reason: "AutoMod"
silent: false
attempt-cancel: trueattempt-cancel should stay on. Without it the player is muted but the offending message still appears, which defeats the point.
An automatic mute is an ordinary MUTE record. It shows in /history with AutoMod as the reason, and it can be revoked with /unmute like any other.
Exact phrases
chat:
exact:
- "base64:bmlnZ2VyCg=="
- "base64:ZmFnZ290"Exact phrases are stored base64-encoded so the raw words are not sitting in plain text in your config directory. Decode a value to see what it matches, and encode your own the same way to add more.
The default list contains two slurs and nothing else. It is a starting point, not a policy.
Patterns
chat:
regex:
- "(?i)\\b(?:discord\\.gg|discord\\.com/invite)/[A-Za-z0-9-]+\\b"Java regular expressions, checked against the whole message. The shipped pattern blocks Discord invite links.
Useful additions:
chat:
regex:
# Any web link
- "(?i)https?://\\S+"
# An IP address, which is usually a competing server
- "\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b"
# Six or more of the same character in a row
- "(.)\\1{5,}"Note that YAML needs backslashes doubled. \b in a regex is written \\b in the file.
Filtering commands too
chat:
automod-commands:
- "msg"
- "tell"
- "w"
- "r"
- "reply"The arguments to these commands are scanned by the same rules. Without it, a filter is one /msg away from irrelevant.
Add anything on your server that carries text between players: party chat, guild chat, staff chat, mail, nicknames. Anything not listed is not scanned.
What staff see
When AutoMod acts, staff holding blazebans.staff.notify get an alert naming the player, the source, and the message that triggered it, hoverable so the offending text does not sit in staff chat.
The messages are automod-muted for the player and automod-muted-staff for the notification, both in messages/en_us.yml.
If Discord webhooks are enabled, the mute also posts there like any other punishment.
Bypassing
Grant blazebans.automod.bypass to anyone who should not be filtered. Staff usually qualify, since they need to quote what a player said in order to deal with it.
Tuning it
A filter is a tradeoff between missed abuse and false positives, and false positives cost more. Some things that help:
Start narrow. Turn it on with the shipped list only. Add rules when you see something the filter missed, not in anticipation.
Start short. A one-hour mute while you tune is enough to stop the behaviour and cheap to apologise for. Lengthen it once the rules have been quiet for a while.
Watch the alerts. For the first week, read every AutoMod notification. That is how you find the pattern that fires on a normal word.
Separate the two jobs. Slurs need an exact list. Advertising needs a pattern. Spam needs a repetition rule. Writing one regex that tries to cover all three will do all three badly.
Reloading
/blazebans reload automod.ymlTakes effect immediately. Existing automatic mutes are unaffected by a rule change; only new matches use the new rules.

