📖 Documentation
Everything the bot does and how to configure it.
🚀 Getting Started
- Invite the bot using the invite link.
- Run
/set log #channelto choose where violation alerts go. - Log in to this dashboard with Discord and open Config to tune features per server.
🛡️ Slur & Bypass Detection
Every message is scanned against the blocklist with a multi-layer bypass engine that defeats common evasion tricks:
- Normalization — leet-speak (n1gg3r), separators (n.i.g.g.e.r), unicode look-alikes, zero-width characters, emoji letters
- Fuzzy matching — catches misspellings within a configurable edit distance
- Phonetic matching — catches sound-alike spellings
- Encodings — ROT13, Caesar shifts, reversed text, pig latin
- Letter-stitch — letters spread across multiple messages
- Translation — non-English messages are translated and re-scanned (premium)
- Self-learning — new bypass variants are harvested and can be auto-promoted to the blocklist
Per-server custom words and whitelists are managed on the Blocked Words and Whitelist pages.
🔒 Locked terms: a small set of child-safety terms and hard racial slurs is permanently blocked and can never be exempted in any server — not by a server admin, not via the dashboard. Attempts to exempt them are rejected and reported to the bot owner.
🤖 AI Context Moderation (premium)
For borderline detections, the bot asks an AI how the flagged term is actually being used before acting — so a quote or a reclaimed word isn't punished like an attack.
- Attack — aimed at someone → punished as normal
- Quote / Reclaim / Discuss → logged for mods, but not punished
- Benign — false positive → vetoed silently
High-confidence exact matches skip the AI; every failure mode fails open so detection never gets weaker.
🖼️ Image Scanning
- OCR — text inside images and GIFs is extracted and scanned like a normal message (premium)
- NSFW detection — explicit nudity in images is detected and deleted automatically when enabled (premium)
- Profile pictures — avatars are OCR-scanned on join and on avatar change; usernames, display names, and nicknames are scanned too
🔐 Verification Gate
Hold risky new joiners behind an unverified role until they pass a
one-click Verify button. Set it up with /verification setup.
- Triggers — gate everyone, or only young accounts, accounts with no profile picture, or anyone joining during a raid burst
- One click — verifying swaps the unverified role for your member role and logs a case; the button keeps working after a bot restart
- Raid-aware — during a join-burst the gate automatically holds everyone
Set the unverified role's channel permissions to deny View/Send so gated users can't talk until verified.
🔥 Heat Escalation
Each violation adds heat to the offender (1–1.5 points, scaled by detection confidence). Heat decays over time — by default it halves every 60 minutes. Crossing a threshold triggers an automatic action:
- Timeout at 3 heat (default) — temporary mute
- Kick at 5 heat
- Ban at 7 heat
A user who slips up once cools off before ever reaching a threshold; someone spamming slurs crosses all three in minutes. Thresholds and decay rate are configurable per server.
Need to forgive someone early? Use /clearheat user:@member
to reset one person's heat, or /clearheat with no user to
cool down everyone in the server (requires Manage Server).
Heat is saved to the database, so repeat offenders keep their accumulated heat even if the bot restarts — no clean slate on every redeploy.
🚨 Anti-Raid & Mass-Mention
When a burst of members joins within the raid window, the bot can automatically slow down your public channels to break the raid's momentum, then lift the slowmode on its own once the configured duration passes (it even restores correctly if the bot restarts mid-raid).
Mass-mention protection deletes any message that pings more than your set limit
of users/roles, or uses @everyone/@here.
Choose whether it just deletes the message or also times the sender out.
Configure both in the dashboard's Alt & Raid Detection and Mass-Mention Protection sections — per server.
🧹 Filtered Purge
/purge bulk-deletes recent messages with optional filters you
can combine: by user, by keyword (contains), or by type —
invites, links, bots, or embeds.
Example: /purge amount:50 filter:invites clears the last 50
messages that contain Discord invites, leaving everything else untouched.
🚨 Server Protection
- Anti-nuke — alerts when mass bans, kicks, or channel/role deletions happen within a short window (premium)
- Anti-spam — detects message floods, including cross-channel floods
- Alt detection — flags (or kicks) accounts younger than a configurable age on join
- Raid alerts — warns when an unusual number of members join within seconds
- Invite filter — auto-deletes Discord invite links
- Phishing filter — auto-deletes Discord-impersonating scam domains
- Ban sync — link your servers with
/bansync linkso a ban in one mirrors to the others (opt-in, admin in both servers required)
📨 Ban Appeals
When someone is banned, the bot DMs them a private appeal link. Their appeal lands in your log channel with Approve / Reject buttons and on the dashboard's Appeals page. Approving unbans the user and DMs them a one-use invite back. One pending appeal per user per server. Toggle per server under Config → Ban Appeals.
🎫 Tickets
Run /ticketpanel in a channel to post an
Open Ticket button. Each ticket becomes a private thread visible only to
the opener and moderators, with a close button that posts a full transcript to your log
channel. Use it for reports, questions, and partner applications.
📌 Sticky & Weekly Messages
Two ways to keep a message in front of your members without pinning it.
- Sticky —
/sticky set messagere-posts a message at the bottom of the channel after other people talk, so it never scrolls away./sticky clearremoves it. - Weekly reminders —
/weeklyreminder set name #channel messageposts a message to a channel once every 7 days. Each reminder has its own name, so one server can run several at once in different channels.
/weeklyreminder show lists every reminder;
add a name to see that one's full text and when it next posts.
/weeklyreminder clear name stops one.
Both features need Manage Messages, and weekly reminders are off until you set one.
💾 Backups & Snapshots
Two independent safety nets for your server's structure. Both restores are non-destructive — they recreate what's missing and never delete what's there.
- Backups —
/backup create labelsaves roles, channels and permissions./backup list,/backup restore id,/backup delete id. - Snapshots — the same idea keyed by a name you choose:
/snapshot create name,/snapshot list,/snapshot restore name,/snapshot delete name.
Take one before any big restructure, and after a nuke attempt you can rebuild what was deleted.
🔒 Lockdown
/lockdown reason strips
@everyone's permission to send messages in every channel at once —
the emergency brake when an attack is in progress.
/unlockdown restores exactly what it changed, so
channels that were already locked before stay locked.
🎉 Member Experience
- Welcome & goodbye —
/welcome setup #channeland/goodbye setup #channelpost an embed on join/leave. Supports{user},{username},{server}and{count}. Preview with/welcome test. - Auto-roles —
/autorole add @rolegives every new member a role automatically. - Role persistence —
/rolepersist ongives a member their roles back if they leave and rejoin, so people can't drop a mute by rejoining. - Reaction roles —
/reactionrole add message_id emoji @rolehands out a role when someone reacts./reactionrole listshows every mapping. - Starboard —
/starboard #channel threshold emojireposts a message once it reaches that many reactions (⭐ by default). - Live stats channels —
/statschannel set channel statturns a voice channel's name into a live counter, refreshed every 10 minutes.
💌 Modmail & ❓ FAQ Panel
- Modmail —
/modmailsetup #channellets members DM the bot to open a thread with your staff. Messages relay both ways;/modmailcloseends the thread. - FAQ panel — add entries with
/faqadd question answer, then post a dropdown with/faqpanelthat answers common questions instantly./faqlistshows every entry with its ID and/faqremove iddeletes one. Re-run/faqpanelafter editing to refresh the dropdown.
🚫 No-Contact Orders
Keep two members apart without banning either of them.
/nocontact add @user_a @user_b stops them replying to,
mentioning, or reacting to each other; breaches are logged and repeated breaches auto-warn.
/nocontact addnick teaches it nicknames a user goes by so
name-drops are caught too. /nocontact list,
/nocontact remove, and
/nocontact setlog #channel for a dedicated log channel.
📝 Per-Server Whitelist
Stop the filter flagging a word in your server only, without touching the global blocklist:
/whitelistword word to exempt it,
/unwhitelistword word to start flagging it again,
/unwhitelistphrase phrase for a whitelisted phrase, and
/listwhitelistwords to see everything exempted here.
The same list is editable on the Whitelist page.
Locked child-safety and hard-slur terms can never be whitelisted — see Slur & Bypass Detection above.
☕ Mod Breaks
/break @member days marks a moderator as away so they're
skipped by staff pings. /breakend ends a break early and
/breaks shows who's currently out.
🆕 New Features (2026)
Run /automod_sync to push your blocked word list directly into Discord's own AutoMod engine (up to 6 rules × 1,000 keywords = 6,000 words blocked at the Discord level, even when the bot is offline). The last rule also catches slurs in member bios and nicknames.
The Server Health page shows Chart.js charts for violations per day (30-day trend), by hour of day (heatmap), by category, top offending users, top flagged channels, and cross-server threat scores.
Every ban increments a global threat score for that user across all servers running this bot. When someone joins with a score ≥ your threshold (Config → Cross-Server Threats), the bot warns in the log channel. Top threats are visible on the Server Health page.
Enable deepfake_detection_enabled in Config and add your Sightengine API keys. The bot will flag AI-generated images (DALL-E, Midjourney, etc.) in addition to the NudeNet NSFW scan. Free tier: 500 API calls/month.
On ban, the bot saves a writing-style fingerprint (message length, punctuation ratio, common words). When a suspicious new account sends 5+ messages, their style is compared — if it matches a banned user at ≥ 80%, a warning fires in the log channel.
Enable raid_incident_mode_enabled so the bot calls Discord's native server lockdown API (invites_disabled_until + dms_disabled_until) during join-burst raids, in addition to auto-slowmode.
A new escalation tier between kick and ban: a 28-day timeout (Discord's maximum). Fires when a user's heat score reaches escalation_quarantine_threshold (default: 4). Configurable in the Config page.
Anti-nuke bans now use Discord's bulk_ban() API for faster, atomic action — deleting 24 hours of the attacker's messages in one call. Audit log now also covers scheduled events, channel pins, soundboard sounds, and native AutoMod actions.
⌨️ Key Commands
| Command | What it does |
|---|---|
/set log #channel | Set the violation log channel (admin) |
/set report #channel | Set the report channel (admin) |
/automod_sync | Push blocked words to Discord's native AutoMod (admin) |
/settranslation | Toggle translation scanning (admin) |
/premium | Check this server's premium status |
/history @user | Full mod record: cases, violations, heat (mod) |
/note @user text | Add a private mod note to a user's record (mod) |
/ticketpanel | Post a ticket panel in this channel (admin) |
/ticketclose | Close the current ticket thread |
/bansync link id | Mirror bans with another server you admin |
/sticky set message | Keep a message at the bottom of a channel (mod) |
/weeklyreminder set name #channel message | Post a message there every 7 days (mod) |
/weeklyreminder show | List this server's weekly reminders (mod) |
/lockdown [reason] | Lock every channel during an attack (admin) |
/unlockdown | Undo a lockdown (admin) |
/backup create [label] | Save roles, channels and permissions (admin) |
/backup restore id | Recreate anything missing from a backup (admin) |
/snapshot create name | Save the server structure under a name (admin) |
/verification setup | Enable and configure the verification gate (admin) |
/whitelistword word | Stop flagging a word in this server only (admin) |
/listwhitelistwords | Show everything whitelisted here (admin) |
/nocontact add @a @b | Keep two members from interacting (admin) |
/starboard #channel n | Repost messages that hit n reactions (admin) |
/statschannel set channel stat | Show a live stat as a channel name (admin) |
/rolepersist on | Restore roles when a member rejoins (admin) |
/reactionrole add id emoji @role | Give a role on reaction (admin) |
/modmailsetup #channel | Route member DMs to a staff channel (admin) |
/faqadd question answer | Add an entry to the FAQ panel (admin) |
/welcome setup #channel | Post a welcome embed on join (admin) |
/autorole add @role | Give every new member a role (admin) |
/breaks | Show which mods are on break |
/bugreport description | Report a bug in the bot to its owner |
/suggest description | Suggest a feature or change for the bot |
!warn @user [reason] | Issue a formal warning (mod) |
!history @user | View a user's violation history (mod) |
🐛 Bug Reports & 💡 Suggestions
Found something broken? Run /bugreport description
anywhere the bot can see — in a server or in a DM to the bot — and it goes straight to the bot
owner with your username, the server and channel, and the bot version you hit it on.
Anyone can use it; there's a 30-second cooldown per person, and every submission is recorded
so nothing is lost even if a notification doesn't get through.
Got an idea instead of a problem? /suggest description
works exactly the same way and lands in the same place — say what you'd like the bot to do and
what it would be useful for. The two have separate cooldowns, so reporting a bug doesn't stop you
sending a suggestion straight after.
For bugs: say what you did, what happened, and what you expected instead — that's usually enough to
reproduce it. For moderation problems in your own server (a false positive, a wrong punishment),
use the Whitelist page or
/history instead; those aren't bot bugs.
★ Premium
Premium unlocks OCR scanning, NSFW image detection, deepfake detection, translation scanning, anti-nuke,
self-learning, behavioral fingerprinting, and unlimited custom words & violation history. Check
/premium in your server for current status.
Ko-fi payments must include the exact claim note shown by /premium
or the Dashboard Premium page, for example Server ID 123 claim abc123....
Payments without the matching claim code are not granted automatically.
Get premium →