1 GrumpyMod EN
darksoon edited this page 2026-05-13 21:03:08 +02:00

Moderation

Handles auto-mod, anti-nuke, manual moderation, reports — and the server audit logger.


Auto-Mod

Every message is checked against the configured filters (in this order — the first match applies its action: warn · delete · timeout · nothing).

Check What it does Default
antiAd Blocks Discord invites; optionally all URLs (with allow-list) warn + delete
antiFlood Too many user/role mentions in a single message warn + delete
antiCaps More than N% uppercase characters delete
wordFilter Configured words (exact / substring match) warn + delete
antiRepeat Same message sent N times in a row warn + delete
antiSpam N+ messages within Y seconds warn + delete

Whitelisting: Roles in whitelistRoleIds and channels in whitelistChannelIds are completely exempt.

Escalation: When a user reaches an escalation threshold of active warns, the corresponding action is automatically triggered (the highest matching threshold wins).


Anti-Nuke

Detects coordinated or accidental server destruction in real time.

Triggers:

  • Mass channel deletions (default: 3 in 10 sec)
  • Mass bans (default: 5 in 10 sec)
  • Mass role deletions (default: 3 in 10 sec)

Response:

  1. All roles are immediately stripped from the offender
  2. A notification appears in the alert channel
  3. The alert-ping role is pinged (if configured)

Double-fire prevention ensures the same trigger is never processed twice.


Server Audit Logger

The bot automatically logs a wide range of server events to the mod-log channel — as structured embeds with a category badge, executor (By:), target, and details.

Category Events
Channels CHANNEL_CREATE · CHANNEL_DELETE · CHANNEL_UPDATE
Roles ROLE_CREATE · ROLE_DELETE · ROLE_UPDATE
Members ROLE_ADD · ROLE_REMOVE · MEMBER_UPDATE · MEMBER_KICK · MEMBER_BAN · MEMBER_UNBAN
Profile NICKNAME_UPDATE · USERNAME_CHANGE · DISPLAY_NAME_CHANGE · AVATAR_CHANGE
Other INVITE_CREATE/DELETE · WEBHOOK_CREATE/DELETE · EMOJI_CREATE/DELETE · MESSAGE_DELETE · MESSAGE_BULK_DELETE

Set the channel via channels.mod-log in configs/config.yml — no additional setup required.


Punishment System

Every mod action receives a unique P-#-ID and is stored in the database.

  • View history: /mod history @user
  • Deactivate a single warn: /mod unwarn <id>
  • Full command list: Mod-Commands

New punishment types:

  • Note (/mod note) — Staff note without punishment, appears in /mod history
  • Softban (/mod softban) — Kick + message cleanup (ban+unban) without a permanent ban

Report System

/report @User <reason>
  • Cooldown: 5 min between reports
  • Limit: 3 reports per day
  • Mods/admins cannot be reported
  • Staff sees the report in the configured mod-log channel
  • Reporter tracker is pruned hourly (no memory leak)

Configuration (Excerpt)

# configs/modules/mod.yml
autoMod:
  antiSpam:
    enabled: true
    threshold: 5
    windowSeconds: 5
    action: "warn"
  antiAd:
    enabled: true
    blockAllUrls: false
    allowedDomains: ["youtube.com", "github.com"]
  antiCaps:
    enabled: true
    minLength: 8
    percentageThreshold: 70

antiNuke:
  enabled: true
  channelDeleteThreshold: 3
  banThreshold: 5
  roleDeleteThreshold: 3
  windowSeconds: 10

escalation:
  - warns: 3
    action: "timeout"
    durationMinutes: 10
  - warns: 5
    action: "kick"
  - warns: 7
    action: "ban"

reports:
  cooldownSeconds: 300
  maxPerDay: 3