Admin Enforcer
Moderators decide. The bot does the rest.
Enforcer is policy-driven, hands-off moderation: the bot flags possible violations, a moderator reviews the exact chat context and picks a decision, the bot performs it and talks to the player — and every step is bookkept in a read-only ledger and the database.
How it works
Flag → review → decide → ledger → appeal
1. Policy
A server admin writes a policy: what it matches (keywords, regex, link domains, invites, mention counts, attachment types), which channels it watches, who is exempt, and a suggested action. No slur lists ship with Entrophy — servers bring their own.
2. Flag
A message matching a policy — or a moderator using the "Flag for review" message action — creates a pending record and posts it to a staff-only flag-queue channel. Nothing happens to the player yet.
3. Review
A moderator opens "View context" to read the exact surrounding chat (live, or a stored snapshot if the messages are gone) and "Suspect history" for prior records — before deciding anything.
4. Decide
The moderator picks Warn, Timeout, Mute, Kick, Ban, or Dismiss. The bot executes it through the moderation plugin — hierarchy checks, a case number, and a DM to the player — so staff never have to confront anyone directly.
5. Ledger
Every flag and every decision is written to a read-only ledger channel and the database: record number, user, time, action, who decided, and the policy matched. Staff-only by default, optionally server-wide for transparency.
6. Appeal
The player can appeal directly with `/enforcer appeal <record #>`. The appeal opens through the moderation plugin's workflow and both the opening and the decision are written to the ledger too.
Workflow diagram
The path a flagged message takes
Bookkeeping
What the ledger actually looks like
A real ledger entry (illustrative — names and content below are examples, not real data) posted to a staff-only channel the bot alone can write to.
Entrophy — Enforcer ledger
Record #E-142 — DECISION
- User
- @example.user (912...045)
- When
- Today at 4:12 PM
- Action
- Timeout — 1 hour
- Decided by
- @example.moderator
- Policy
- External links — unapproved domains
- Case
- #118
- Context
- "...check out this giveaway link..." [Jump to message]
Source: automatic flag · Entrophy Enforcer
Privacy & transparency
What's actually stored, and what isn't
- Automatic flagging requires the Message Content privileged intent; without it, Enforcer runs in manual-flag-only mode and still works.
- Context snapshots (the messages around a flag) are stored only because this feature needs them to be reviewable later — that is disclosed in `/plugin status`, the dashboard, and the plugin README.
- A server can turn context capture off entirely; the ledger then keeps a jump link instead of an excerpt.
- Optional AI risk scoring is labelled assistive-only on every flag it touches — it explains, it never decides, and it never acts.
- Two moderators can never act on the same flag twice; a decision locks the record the instant the first moderator responds.
FAQ
Common questions
- Does Enforcer replace the moderation plugin?
- No — Enforcer is built on top of it. Every decision Enforcer executes (warn, timeout, kick, ban) is a real moderation case, with the same hierarchy checks, DM notice, and appeal workflow the moderation plugin already provides.
- What happens without the Message Content intent?
- Automatic flagging needs it to read message text. Without it, Enforcer still works in manual mode: staff can flag any message with the "Flag for review" action, or flag a user directly with `/enforcer flag`.
- Can a moderator DM the flagged player directly?
- That is exactly what Enforcer is designed to avoid. The bot is the only one that contacts the player — with the case number, the record number, and instructions to appeal — so the interaction stays professional and consistent no matter which moderator is on duty.
- Is the ledger really tamper-evident?
- The ledger channel is configured so only the bot can post in it — permission overwrites deny everyone else send access. The database record is the source of truth and every entry keeps its record number, so a gap or edit is visible.
- What does the AI assist feature actually decide?
- Nothing. When enabled, it adds a risk score and a plain-language explanation to a flag, clearly labelled "assistive — not a decision". A human moderator still has to choose Warn, Timeout, Mute, Kick, Ban, or Dismiss.