Documentation
Suzune Wiki
A reference for server admins and moderators: what Suzune does, and exactly how to drive every command. For legal pages see the Terms of Service and Privacy Policy.
What Suzune is
Suzune is a Discord security engine, built around one idea: a server nuke is a burst, not a sequence, so detection and response have to be near-instant and need to happen before the attacker's second API call lands.
What that means in practice:
- Anti-nuke — watches destructive actions (channel/role deletes, permission changes, prunes, webhook deletes, bot adds) and reacts on the first offence for the most dangerous ones, with full-fidelity auto-revert (including permission overwrites and role membership, not just names).
- Anti-raid — catches join-rate spikes and patterned username raids, with an optional account-age gate and persistent quarantine.
- Auto-moderation — heat-based spam scoring plus curated, RE2-powered rule packs and native Discord AutoMod integration.
- App auditing — audits every third-party app/bot installed in your server, the OAuth2 scopes it holds, and flags risky installs and permission drift.
- Lockdown — a six-tier, transactional server lockdown with exact-state restore.
- A full moderation suite — bans, kicks, timeouts, warnings, a numbered case system, purge, slowmode, and channel locks.
- Logging — 76 configurable audit events across 12 groups, routable to different channels, with attachment recovery for deleted images.
- Community features — tickets, leveling, invite tracking, welcome/goodbye cards, autoroles, reaction roles, and a per-server profile.
Suzune never punishes the server owner (nothing can — Discord's role hierarchy forbids it), and it never bypasses Discord's own permission model. See §4 of the Terms of Service for the honest list of what it can't do.
Getting started
- Invite the bot with Administrator. Setup creates roles and rewrites channel overwrites server-wide, so it needs the permission once, up front — not because every feature requires it.
- Run /setup (or >setup). This is the one command that configures everything else.
- Whitelist any bots you already run (music bots, ticket bots, etc.) under /antinuke → Whitelist. A friendly bot creating a channel looks identical to a nuker doing the same thing, and Suzune will act on it unless it's whitelisted.
- Run /scan to get a graded snapshot of what's still misconfigured.
Using commands
Every slash command also works as a message (prefix) command. The default prefix is >:
>ping >ban @someone being rude >ban @someone delete_days:7 reason:spam >config prefix !
- Arguments fill in the order the command declares them; the last text argument takes the rest of the line, so >ban @someone being rude reads the whole phrase as the reason.
- To set an argument that comes after a free-text one, name it: delete_days:7.
- Mentioning the bot works too: @Suzune ping.
- A space right after the prefix is deliberately not a command, so "> quoting someone" stays an ordinary Discord blockquote.
- Change the prefix with /config prefix <value> or from the dashboard's Moderation page.
Use /help to browse commands by category in Discord, or /help command:<name> for details on one command (autocomplete included). /tutorial runs an interactive in-Discord walkthrough.
Setup & configuration
/setup — Administrator, both you and the bot
One panel that builds and arms everything. It states exactly what it will create, offers three protection presets, and changes nothing until you confirm.
| Preset | Punishment | Thresholds | Raid guard | Owner guard | Auto-lockdown | Rule packs | Audit events |
|---|---|---|---|---|---|---|---|
| Basic | Strip roles | Shipped defaults | Off | Off | Off | Core | Standard |
| High | Kick | ~40% tighter | On, 3-day age gate | Balanced | Off | Five | Standard + critical |
| Unbreakable | Ban | Tightest, first-strike on deletes | On, 7-day age gate | Strict, with lockdown | On | All six | Everything |
Confirming builds a staff-only Suzune Essentials category with #suzune-audits, #suzune-dashboard, #suzune-logs, #suzune-scans; a Muted and a Quarantined role; then arms anti-nuke, AutoMod and the audit feed, posts a live dashboard, runs a baseline scan, and schedules a weekly one.
Running /setup again keeps what you have — it finds its own channels/roles by ID, recreates only what's missing, and re-applies the preset. Duplicate suzune-named leftovers from older runs are cleared (the panel warns first and the report lists everything removed).
/config — Administrator
| Subcommand | What it does |
|---|---|
| /config view | Show the current configuration. |
| /config modrole action:<add|remove> role:<role> | Add/remove a moderator role (can use moderation commands). |
| /config dmonaction state:<on|off> | Toggle DMing users when they're moderated. |
| /config muterole role:<role> | Set (or clear) the mute role used by /mute. |
| /config prefix value:<text> | Set the message-command prefix (default >). |
| /config reset | Reset all bot configuration for this server. |
Anti-nuke
/antinuke — Administrator
Opens the anti-nuke control panel. From it you can:
- Enable/disable anti-nuke and pick a punishment (strip roles / kick / ban).
- Tune thresholds per watched action — 17 actions total, 6 of them (channelDelete, roleDelete, roleUpdateDangerous, prune, webhookDelete, botAdd) trip on the first occurrence by default; the rest use a sliding-window count you can set per guild.
- Whitelist trusted users/roles, each with a per-action cap so a whitelist isn't a skeleton key even if the account is compromised.
- Bot guard — auto-kick unknown bots on join, before the audit log even reports them, then punish whoever invited them.
- Self guard — protects Suzune's own role from being stripped or demoted.
- Failsafe roles (opt-in) — two redundant Administrator roles that restore themselves if deleted or recoloured.
- Server guard — reverts unauthorised name/icon/vanity-URL/verification-level changes.
- Owner guard (opt-in) — scores the shape of the owner's own activity (not volume) in case the owner's account itself is compromised. On a trip it reverts the burst, times the account out (if ownership has changed), freezes the server, and reports — the one alert that never falls back to owner DMs, since the owner is the suspect.
- Audit fallback — polls the audit log every 30s to catch anything a dropped gateway event missed, de-duplicated against what already arrived live.
Reverted objects are restored with full fidelity — permission overwrites, role membership, colour, category and position — not just a name and an empty shell. A deleted category's children (which Discord doesn't even log) are tracked from the cache and re-parented on restore.
Anti-raid & lockdown
Anti-raid settings live inside /antinuke. Two independent triggers:
- Join rate — default 10 joins / 10s, configurable.
- Name-pattern detection — normalises usernames and measures stem collision (raider01, raider02, Raid_Er.99 all collapse to raider); 60% collision over 5+ samples trips regardless of join rate, catching a slow-drip raid.
- Account-age gate (optional) — minimum account age to join freely.
- Raid hold — keeps the gate shut for a window after a trip so stragglers don't slip in.
- Action — kick, ban, or persistent quarantine (survives leave/rejoin).
/lockserver — Manage Server
Server-wide lockdown with exact-state, transactional restore.
| Subcommand / option | Purpose |
|---|---|
| /lockserver channels:<list> | Limit the lockdown to specific channels (optional — default is server-wide). |
| duration:<e.g. 30m, 2h> | Auto-unlock after a delay (optional). |
| reason:<text> | Reason (optional). |
| /lockserver status | Show the current lockdown state. |
Six tiers are available from the panel: panic, channels, invites, joins, voice, full. Tri-state overwrite capture means unlocking restores allow/deny/neutral exactly as it was.
/unlockserver (Manage Server) lifts the active server-wide lockdown, restoring exact prior permissions. /lockdown and /unlock are channel-scoped and live in the moderation module.
Auto-moderation
/automod — Administrator
Opens the auto-moderation control panel:
- Heat scoring — messages accrue "heat"; crossing a threshold (default 100, 60s decay) fires the configured action. Punishes bursts, not slow trickles.
- Rule packs — 6 curated, versioned filter packs you can enable individually (profanity, invites/links, mass-caps, mass-mentions, mass-emoji, etc., depending on what's shipped).
- Confusable folding — Unicode homoglyph normalisation so lookalike characters can't dodge a filter.
- Native Discord AutoMod provisioning — pushes real rules through Discord's own AutoModeration API so matching content is blocked at Discord's edge, before it posts.
Pattern matching runs on re2-wasm (linear-time, non-backtracking), so a crafted pattern can't stall the bot with catastrophic regex backtracking.
Moderation
All moderation commands log a numbered case (moderator, reason, target, timestamps) viewable with /case and /warnings. Most require a specific Discord permission and to be added under /config modrole if you want a role to use them without the base permission — check /config view.
| Command | Permission needed | What it does |
|---|---|---|
| /ban user:<user> [reason] [delete_days:0-7] | Ban Members | Ban a user, optionally purging their recent messages. |
| /tempban user:<user> duration:<1h,7d,2w> [reason] | Ban Members | Ban with automatic, scheduled unban. |
| /softban user:<user> [reason] | Ban Members | Ban then immediately unban — clears recent messages without a lasting ban. |
| /unban user_id:<id> [reason] | Ban Members | Lift a ban by user ID. |
| /kick user:<user> [reason] | Kick Members | Remove a member from the server. |
| /timeout user:<user> duration:<10m,2h,7d, max 28d> [reason] | Moderate Members | Discord-native timeout. |
| /untimeout user:<user> [reason] | Moderate Members | End a timeout early. |
| /mute user:<user> [reason] | Moderate Members | Apply the configured mute role. |
| /unmute user:<user> [reason] | Moderate Members | Remove the configured mute role. |
| /warn user:<user> reason:<text> | Moderate Members | Log a warning case. |
| /warnings user:<user> | Moderate Members | List a member's moderation history. |
| /case view number:<n> | Moderate Members | View a specific case. |
| /case reason number:<n> text:<new reason> | Moderate Members | Edit a case's reason. |
| /case delete number:<n> | Moderate Members | Delete a case. |
| /nick user:<user> [nickname] | Manage Nicknames | Change or clear a member's nickname. |
| /purge amount:<1-100> [user] | Manage Messages | Bulk-delete recent messages, optionally filtered to one user. |
| /slowmode duration:<10s,5m,off> | Manage Channels | Set this channel's slowmode. |
| /lockdown [reason] | Manage Channels | Lock this channel so @everyone can't send messages. |
| /unlock | Manage Channels | Unlock this channel. |
Message-command equivalents work the same way: >ban @user delete_days:7 reason:spam, >warn @user being disruptive, etc.
Logging & audit
/auditlog — Administrator
Opens the audit-log control panel, driving 76 events across 12 groups:
- Route each group to its own channel (e.g. message deletions somewhere quiet, permission changes somewhere loud).
- Ignore specific channels, roles, or users, server-wide or per group.
- Choose embeds or compact one-line entries.
- Severity determines colour — red always means permissions, webhooks, or bot-invite activity — and can ping a role in a separate alert channel.
- Deleted-image recovery — attachments are captured as they're posted (bounded: 8MB/file, 64MB total, 15-minute TTL, 4 images/message) and re-uploaded onto the delete log entry, since Discord's CDN link dies the instant the message does.
- Incident reports — one consolidated summary once an attack quiets down, instead of dozens of separate alerts.
Requires View Audit Log to function at all — Suzune checks this at startup and tells you if it's missing rather than silently logging nothing.
App auditing (/appwatch)
/appwatch — Manage Server
A panel over every third-party app/bot installed in the server and the OAuth2 scopes it actually holds (not just the permissions visible in the role list).
- Flags apps added by anyone off your installer allowlist (tripwire for a compromised admin).
- Flags sensitive scopes (guilds.join, applications.commands.permissions.update, webhook.incoming, relationships.read), dangerous permissions on the managed role, install bursts, and post-install drift (a managed role or app quietly gaining more access later).
- Gives every app a transparent risk score — the panel shows each contributing scope/permission and its weight, not one opaque number.
- Generates a weekly inventory report (scopes, permissions, installer, risk, what changed, webhook orphan flags), attaching CSV/Markdown once your server has enough apps to make the panel unwieldy.
What it can't see, by Discord's own limits: which individual members have authorised a third-party app (no such API exists), and apps installed to a user account rather than to the server. Both are stated in the panel and every report rather than hidden.
Needs View Audit Log, Manage Server, and Manage Webhooks — deliberately not Administrator. Missing a permission degrades that one section and says so.
Security dashboard & scan
/dashboard (Manage Server) posts a live-refreshing security-posture card that keeps itself up to date until deleted.
/scan (Manage Server) runs a deep, on-demand security scan and grades the server A+ through F, with a prioritised, actionable findings list (broken role hierarchy, missing permissions, risky configuration, etc.). /setup also schedules a scan automatically every week.
Tickets
/tickets — Administrator
Opens the ticket-system control panel: categories, panel messages, staff roles, claiming, transcripts, and DM delivery of transcripts to the opener. Ticket state (opener, claimer, status, timestamps) is stored; transcript contents are generated on close and delivered as a file, not retained in the database.
Welcome, autoroles & reaction roles
/welcome (Administrator) opens the welcome & goodbye control panel — channel, rendered welcome/goodbye cards, and custom message templates.
/autorole — Manage Roles
| Subcommand | What it does |
|---|---|
| /autorole add role:<role> | Auto-assign a role to every new member on join. |
| /autorole remove role:<role> | Stop auto-assigning a role. |
| /autorole list | List the roles currently auto-assigned. |
/reactionrole — Manage Roles
| Subcommand | What it does |
|---|---|
| /reactionrole add message_id:<id> emoji:<emoji> role:<role> | Bind a reaction on a message to a role. |
| /reactionrole remove message_id:<id> emoji:<emoji> | Remove a binding. |
| /reactionrole list | List all reaction-role bindings. |
Leveling
/levels (Administrator) opens the leveling control panel: enable/disable, XP curve, per-channel XP blocks, and role rewards at specific levels.
- /rank [user] — everyone. Shows your (or someone else's) level and XP as a rendered card.
- /leaderboard — everyone. Shows the server's XP leaderboard.
Invite tracking
| Subcommand | Permission | What it does |
|---|---|---|
| /invites view [user] | everyone | Invite stats for yourself or another member. |
| /invites leaderboard | everyone | Top inviters in this server. |
| /invites add user:<user> amount:<n> | Manage Server | Add bonus invites to a member. |
| /invites reset user:<user> | Manage Server | Reset a member's invite stats. |
Tracking captures inviter, invite code, join timestamp, and whether the joiner later left — nothing about servers other than yours.
Voice-channel guard
/watchvc (Administrator) opens the Watch VC guard-presence panel, for monitoring/guarding designated voice channels.
Server profile
/serverprofile (Administrator) sets the avatar and banner Suzune wears in your server only — upload an image or paste a link. Her profile in every other server is untouched. Administrator-only, since it changes how the bot presents itself to your whole community.
Utility commands
| Command | Permission | What it does |
|---|---|---|
| /ping | everyone | Bot latency and health. |
| /help [command] | everyone | Browse commands by category, or get help on one command. |
| /tutorial | everyone | Interactive in-Discord walkthrough of how Suzune works. |
| /userinfo [user] | everyone | Details about a user. |
| /serverinfo | everyone | Details about this server. |
| /avatar [user] | everyone | Show a user's avatar. |
| /vote | everyone | Links to vote for Suzune on bot lists. |
Full command index
Every command above also runs as >commandname ... with the server's configured prefix. Use /help in Discord for the always-current, per-server list — this wiki mirrors it but the bot is the source of truth if the two ever disagree after an update.
Troubleshooting
- A command says it's missing permissions. Check both that you hold the Discord permission listed above (or are in a role added under /config modrole) and that Suzune's role is high enough in the role list and holds the equivalent permission.
- Anti-nuke punished a bot I trust. Add it under /antinuke → Whitelist. This is the single most common false positive, since a legitimate bot creating channels/roles looks identical to an attacker doing the same thing.
- Logging isn't posting anything. Suzune needs View Audit Log to see most events at all — /scan and the bot's startup checks will flag this if it's missing.
- /appwatch is missing data for some apps. It cannot see per-member OAuth grants or user-installed apps — this is a Discord API limitation, not a bug, and is stated in the panel.
- Still stuck? Ask in the support server (discord.gg/kBtwmBsr6B) or email contact@suzunebot.site.
No sections match that filter.