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:
- All roles are immediately stripped from the offender
- A notification appears in the
alertchannel - The
alert-pingrole 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-logchannel - 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
GrumpyCore Wiki
⚙️ Setup
🔧 Core-Module
🆕 Neue Module
💬 Commands
👥 Staff
GrumpyCore Wiki (English)
⚙️ Setup
🔧 Core Modules
🆕 New Modules
💬 Commands
👥 Staff