Security
Seven independent protection layers — anti-nuke, raid guard, captcha, bot detection, copy-paste guard, server snapshots, and account age verification.
Detects and instantly responds to mass destructive actions — channel deletions, role deletions, mass bans, and permission escalation.
What It Detects
| Action Type | What triggers it | Config field |
|---|---|---|
| Channel deletes | Someone deletes channels in rapid succession | channel_delete_limit |
| Role deletes | Someone mass-deletes roles | role_delete_limit |
| Mass bans | Someone bans many members quickly | ban_limit |
| Mass kicks | Someone kicks many members quickly | kick_limit |
| Webhook creation | Webhooks created in bulk (common attack vector) | webhook_create_limit |
| Permission escalation | Granting dangerous perms (Admin, Manage Guild, Ban Members) to roles in bulk | permission_change_limit |
Detection Flow
Response Actions
| Action | What happens to the attacker |
|---|---|
ban | Immediately banned from the server |
kick | Kicked from the server |
timeout | Timed out (configurable duration) |
strip_roles | All roles removed, neutralising elevated permissions |
Whitelist
Add trusted user IDs or role IDs so bots or senior admins performing legitimate bulk operations don't trigger anti-nuke.
Detects burst join patterns and takes automatic action — without locking out legitimate members.
Configuration
| Setting | Default | Description |
|---|---|---|
| Join Rate Limit | 10 | How many joins within the window triggers a raid response |
| Join Window | 10 s | Rolling window to count new joins |
| Action | kick | What to do to burst joiners: kick or ban |
| Timeout Minutes | — | Alternatively: timeout joiners for this duration |
| Lockdown Enabled | false | Also lock down the server when raid is detected |
| Lockdown Threshold | 20 | Join count that triggers full lockdown (must be ≥ rate limit) |
| Lockdown Duration | 10 min | How long the lockdown lasts before auto-lifting |
What Happens During a Raid
The lockdown timer is persisted across bot restarts. If the bot restarts while a lockdown is active, the timer is recovered from the database on startup.
Force new members to solve an image CAPTCHA before they can participate in your server.
Verification Flow
Setup
-
1Create two roles
Unverified — assigned on join. Verified — has normal member access. You don't need to set up channel permissions yourself: once you save an Unverified role, the bot automatically hides every channel and category from it (see below).
-
2Configure in Dashboard → Security → Captcha
Set the unverified role, verified role, log channel, timeout, and max attempts.
-
3Post the verification panel
Use the dashboard button to post the persistent "Start Verification" panel in your captcha channel.
Configuration Options
| Setting | Description |
|---|---|
| Unverified Role | Assigned on join. The bot automatically denies this role View Channel on every channel and category (except the captcha channel) so unverified members only see where to verify |
| Verified Role | Granted on successful solve — gives full member access |
| Log Channel | Where verification success/failure events are posted |
| Timeout Minutes | How long members have to solve before being kicked |
| Kick on Timeout | Whether to kick members who don't verify in time |
| Max Attempts | Failed attempts allowed before the member is kicked |
Automatically identifies and removes bot-like accounts before they can cause harm.
When enabled, the system runs silently in the background on every new member join. Accounts identified as bots are acted on automatically — no manual review needed.
Configuration
| Option | Description |
|---|---|
| Log Webhook URL | Where bot account alerts are sent. Leave blank to use the server's mod-log webhook. |
Catches coordinated spam attacks where bots send the same message across multiple channels simultaneously.
| Setting | Description |
|---|---|
| Window Seconds | Time window to check for repeated identical content |
| Min Channels | How many distinct channels must contain the same message to trigger |
| Min Messages | How many copies of the message must exist in the window |
| Action | delete, timeout, or kick |
| Timeout Minutes | Duration if action is timeout |
| Log Webhook | Optional separate webhook for copy-paste events |
Messages are matched by content hash (not exact string), so minor formatting differences don't evade detection.
A near-complete backup of your server's configuration, so you can recover after a nuke attack or an accidental change.
What a Snapshot Captures
A manual or dashboard snapshot is a comprehensive backup — not just channels and roles:
| Category | Details saved | Restorable? |
|---|---|---|
| Roles | Name, color, permissions, hierarchy position, hoist, mentionable, managed flag, icon / unicode emoji | Yes |
| Channels & Categories | All types (text, voice, stage, announcement, forum, media), topic, NSFW, slowmode, auto-archive, voice bitrate / user-limit / region, forum tags & default reaction, and the full category structure | Yes |
| Permission overwrites | Every role & member allow/deny on every channel and category | Yes |
| Emojis & Stickers | Custom and animated emojis, and stickers | Yes (subject to server slots) |
| AutoMod rules | Trigger type, keyword / regex / preset lists, mention limits, actions, exempt roles & channels, enabled state | Yes |
| Server settings | Name, description, icon, banner, splash, verification level, content filter, notifications, AFK / system / rules / safety-alerts channels, locale | Yes |
| Scheduled events | Name, description, start / end time, privacy, channel or location | Yes (future events) |
| Invites, webhooks, vanity URL, boost level, integrations | Recorded for reference | Reference only |
Each snapshot also stores metadata for integrity: a version, the bot version, owner ID, per-category counts, byte size, and a SHA-256 checksum. Up to 5 snapshots are kept per server; the oldest is pruned automatically.
Snapshot Types
| Type | When Taken | What It Saves |
|---|---|---|
auto | When the bot joins your server | Fast structural capture — channels, categories, roles, permission overwrites |
manual | /snapshot take or the dashboard "Take Snapshot" button | Comprehensive backup (the full list above) |
pre_nuke | Just before anti-nuke takes action | Fast structural capture right before the attack — most useful for recovery |
auto and pre_nuke snapshots stay lightweight on purpose — they run at busy moments (on join / mid-attack) and skip the extra API reads (AutoMod, events, invites, webhooks) that a manual backup captures.
Recovery & the verification report
Restore from either the dashboard (Security → Snapshots) or /snapshot restore. Restore is non-destructive — it recreates what's missing and re-applies settings, but never deletes existing channels or roles. Items are rebuilt in a safe order (roles → categories → channels → server settings → AutoMod → events → emojis / stickers) so permission overwrites reference the correct roles even though IDs changed.
When it finishes you get a per-category report showing exactly what happened, so nothing fails silently:
- ✅ Restored — recreated or re-applied
- ✳️ Partial — some items restored, others skipped by Discord API limits or missing permissions (e.g. emoji slots full)
- ↩️ Reference only — captured for the record but not recreatable by a bot (invites, webhooks, vanity URL)
- ⏭️ Skipped — e.g. a role above the bot, a managed role, or a scheduled event whose start time has passed
Deletion Log (12-hour Window)
Every deleted channel, role, and ban is kept in a short-term recovery log with a 12-hour window. You can manually recover individual items within that window even without a full snapshot restore.
Automatically kicks accounts that are too new before they can interact with the server. Role assignment is handled by the Captcha system.
How It Works
Configuration
| Option | Description |
|---|---|
| Minimum Account Age (days) | Accounts created fewer than N days ago are kicked instantly. Set to 0 to disable. |
| Log Channel | Where kick events are logged (optional). |