Getting Started
Inviting Argus
Click Add to Discord in the navigation bar. You'll be asked to authorize Argus with the permissions it needs to protect your server. The default invite grants all required permissions — do not deselect any or filters may silently fail.
Required Permissions
Manage Messages — delete flagged content
Moderate Members — timeout offenders
Kick/Ban Members — auto-escalation enforcement
View Channels + Send Messages — terminal and log delivery
Manage Channels — setup command creates private channels
View Audit Log — raid detection context
Initial Setup
Run /setup in any channel Argus can see. This creates two private channels visible only to users with the Manage Server permission:
- #argus-terminal — send commands, view detection logs in real-time
- #argus-logs — structured incident log with user, reason, action, and timestamp
Once set up, open the Dashboard (/Argus/selector) to configure filters per server.
After Setup
Filters are off by default. You must open the dashboard and enable each filter you want active. Argus will not moderate anything until you turn features on.
Core Filters
Core filters handle content-based moderation. Each filter scans every message sent in your server and can be configured independently with its own action set.
Profanity Filter
Detects profanity across 29 languages, including CJK (Chinese, Japanese, Korean) and Thai — languages that don't use spaces between words. Built on leo-profanity and naughty-words with custom dictionaries.
Available actions: Delete, Warn, Timeout, DM User.
NSFW Text
Detects sexually explicit text content using pattern matching across all supported languages. More aggressive than the profanity filter — flags suggestive and explicit content, not just swear words.
NSFW Media
Runs every image and video attachment through a local, hardware-accelerated ML model (TensorFlow / NSFWJS). Nothing is sent to external servers — all inference happens on your machine. Detects drawings, hentai, porn, and suggestive imagery.
Hate Speech
Detects hate speech, slurs, and extremist language across all 29 supported languages. Updated regularly to catch evolving dog whistles and coded language.
Configuring Actions
Each core filter has four independent action toggles in the dashboard. You can, for example, Delete + Warn on profanity but only Delete on NSFW text. Actions stack — enable multiple for layered enforcement.
AI Filter
Every other filter answers "does this message contain a banned word?" The Context-Aware filter answers a harder question: how hostile is this message, who is it aimed at, and did the author try to hide it? It returns a score from 0 to 100, and you decide what score is worth acting on.
It is off by default — a graded filter wants tuning before it enforces anything.
What It Understands
- Direction. "this game is stupid" and "you are stupid" contain the same word and score very differently. A message aimed at a person — via a second-person pronoun, a mention, or a reply — is amplified; undirected venting, self-directed remarks, negation, quoted speech, joking markers, and affectionate framing all pull the score down.
- Evasion. Zero-width characters, Cyrillic and Greek lookalikes, zalgo marks, fullwidth text, leetspeak, elongation, and letter-by-letter spacing are all undone before scoring — and the attempt itself raises the score, because hiding something is evidence of intent.
- Escalation. Repeat hits from the same author within a few minutes compound, so a sustained pile-on outweighs a single slip.
- 28 languages. The language of each message is detected automatically, and each language ships with its own weighted terms and its own words for "you", negation and joking. Severity is curated per language, not machine-translated.
Categories
Six categories can be toggled independently: Toxicity, Harassment, Hate, Threats, Self-Harm, and Sexual Harassment. Slurs, threats and self-harm encouragement are never softened by context modifiers — no amount of "just joking" reduces them.
False Positives
Three guards run before scoring: safe containers (the Scunthorpe problem — classic, assassin, Dickens), praise collocations ("fucking brilliant"), and benign idioms ("holy shit", "killing it"). Your server's allowed words list overrides everything.
Try Before You Enforce
Turn on Dry Run and Argus posts what it would have flagged — with the score and every signal that produced it — to your log channel, taking no action. The dashboard's AI Filter tab also has a live tester: paste any message and see the exact score the bot would compute. Enable enforcement once the numbers look right for your community.
Nothing Leaves Your Bot
Despite the name, there is no AI provider involved. The engine is local, deterministic, and makes no network calls — roughly 0.07 ms per message. No message content is ever sent to a third party.
Advanced Rules
Advanced rules are rate-based and threshold-driven. Instead of scanning message content, they watch for behavioral patterns — how fast messages arrive, how many mentions they contain, how much text is SHOUTING.
Available Rules
| Rule | Threshold | Window | What It Catches |
|---|---|---|---|
Anti-Spam | 5 messages | 5 seconds | Rapid-fire message flooding, copypasta spam |
Mass Mentions | 5 mentions | per message | @everyone/@here abuse, mention raids |
Mass Caps | 70% caps | per message | SHOUTING, rage text, visual spam |
Mass Emojis | 10 emojis | per message | Emoji wall spam, reaction floods |
Mass Lines | 15 lines | per message | Wall-of-text flooding, log dumps |
Mass Attachments | 3 files | per message | File dump raids, malware seeding |
Discord Invites | 1 invite | per message | Server advertisement spam |
Block All Links | 1 URL | per message | Total link blackout (override mode) |
Polls | 1 poll | per message | Poll spam / raid coordination |
Threshold Tuning
Every threshold is per-guild configurable from the dashboard. Tighten them for sensitive channels (announcements, rules), loosen them for casual chat. Actions (Delete, Warn, Timeout, DM User) are set independently per rule.
Link Safety
This is Argus's signature feature. Every URL posted in your server is checked in real-time against the Google Safe Browsing API v4 before your members ever see it.
How It Works
- A message containing a URL is posted in your server
- Argus extracts the URL and hashes it for the Safe Browsing lookup
- Google's threat database checks it against these categories:
- SOCIAL_ENGINEERING — phishing pages, fake login forms
- MALWARE — drive-by downloads, infected files
- UNWANTED_SOFTWARE — adware, browser hijackers, PUPs
- POTENTIALLY_HARMFUL_APPLICATION — cryptominers, backdoors
- If the URL matches any threat: message is deleted instantly, user is actioned
- If clean: message stays. Result is cached for 1 hour to avoid redundant API calls
Sub-Filters
Link safety has two independent toggles on the dashboard:
- Block Scams — catches phishing, social engineering, malware, unwanted software
- Block NSFW Links — catches URLs that lead to explicit/pornographic content
Both can be active simultaneously, or you can run just one. Each has its own action configuration.
Performance Note
The 1-hour cache means if someone reposts the same URL within an hour, no API call is made — the cached verdict is applied instantly. This keeps response times under 150ms for cached URLs and under 500ms for fresh lookups.
Auto-Thresholds
The auto-threshold system escalates punishment severity as a user accumulates warnings. You define the progression — Argus enforces it automatically.
Escalation Chain
The default progression: Warn → Timeout → Kick → Ban
You configure how many warnings trigger each step. Example configuration:
| Warning Count | Action | Duration |
|---|---|---|
| 3 warns | Timeout | 1 hour |
| 5 warns | Timeout | 24 hours |
| 7 warns | Kick | — |
| 10 warns | Ban | — |
Warning Decay
By default a warning counts forever. Turn on warning decay and only warnings issued within a rolling window you choose — say the last 90 days — count toward the thresholds above. A member warned twice eight months ago starts clean instead of sitting one message away from a ban.
- Nothing is deleted. Decay changes what counts, not what is recorded —
/historystill shows every warning ever issued. - Thresholds still fire once. A threshold that has already been served is not re-triggered when an old warning ages out and a new one lands.
- The dashboard shows both numbers — the count that counts, and the lifetime total beside it.
Off by default. Configure it at the bottom of the dashboard's Punishments page.
Exemptions
You can exempt specific roles and channels from auto-threshold enforcement. Moderators, admins, and bot channels are common exemptions. Configure these per-guild in the dashboard.
Raid Protection
Argus monitors message velocity across your entire server. When a coordinated flood is detected, it locks down the server automatically — no manual intervention needed.
Detection Parameters
| Parameter | Default | What It Means |
|---|---|---|
messageThreshold | 30 messages | How many messages must arrive before the window expires to trigger lockdown |
messageWindow | 10 seconds | The sliding time window for counting messages |
channelThreshold | 3 channel events | How many channels created/deleted in the window to trigger lockdown |
channelWindow | 5 seconds | The sliding window for channel creation/deletion detection |
lockdownDuration | 5 minutes | How long the server stays locked before auto-recovery |
What Happens During Lockdown
- All public channels are locked — only roles with Administrator or a designated bypass role can send messages
- An alert is sent to the #argus-terminal channel (if set up) with raid details
- After the configured duration, channels automatically unlock
- If the bot restarts mid-lockdown, it recovers lock state and re-applies any active lockdown
Fine-Tuning Required
Default thresholds work for medium-sized servers (~500-5k members). Large servers should raise thresholds to avoid false positives from normal chat velocity. Small servers may want lower thresholds for faster response.
Server Backups
Argus can capture a complete snapshot of your server's structure and restore it later — a built-in safety net against accidental deletions, nukes, or botched reorganizations. Backups are stored per-server and managed from the dashboard or the /backup command.
What's Captured
- Roles — names, colors, permissions, hoist, mentionable, and ordering
- Channels & categories — topics, slowmode, NSFW flags, and every permission overwrite
- Server settings — name, icon, banner, verification level, content filter, AFK & system channels
- Emojis & stickers — re-uploaded on restore
- Bans — the full ban list
- Member roles & nicknames — re-applied to members still in the server
Creating & Restoring
Open the Backups tab in the dashboard to create a backup, browse saved ones, and restore or delete them — or use the /backup command directly in Discord. Dashboard restores stream live progress as they run.
Restoring Is Destructive & Owner-Only
Restoring deletes all current roles and channels and rebuilds the server from the backup. Only the server owner can trigger a restore, and it always requires an explicit confirmation. It cannot be undone.
Automatic Backups
Enable scheduled backups to snapshot your server automatically every few hours (minimum 24h). Argus keeps the most recent backups per server and prunes older ones beyond your configured limit. Configure it in the dashboard's Backups tab or with /backup interval <hours> (use 0 to disable).
Permissions for Restore
A full restore needs Argus to have Manage Roles, Manage Channels, Manage Server, Manage Expressions, and Ban Members, and Argus's own role must sit above the roles it recreates. Anything it can't recreate (such as roles above its own) is skipped and reported.
Commands
All commands use Discord's slash-command system. Type / in any channel Argus can see.
| Command | Description | Who Can Use |
|---|---|---|
/setup | Creates private #argus-terminal and #argus-logs channels. Must be run first before filters will work. | Manage Server |
/unsetup | Deletes the terminal and log channels and clears all guild configuration. | Manage Server |
/moderate <user> [reason] | Manually open a moderation case against a user. Records the infraction and applies configured escalation. | Moderate Members |
/history <user> | Show a user's full moderation record — warnings, actions, notes, and appeals — including warnings that have decayed. | Moderate Members |
/note add|list|remove | Manage private moderator notes attached to a user. Notes are staff-only and never shown to the member. | Moderate Members |
/debug | Shows Argus's moderation status for the current channel — active filters, thresholds, exemptions. | Manage Server |
/backup create [name] | Save a snapshot of the current server (roles, channels, settings, emojis, bans, member roles). | Manage Server |
/backup list | List the backups saved for this server. | Manage Server |
/backup info <id> | Show details about a specific backup. | Manage Server |
/backup load <id> | Restore the server from a backup. Destructive — deletes current roles/channels and requires confirmation. | Server Owner |
/backup delete <id> | Delete a saved backup. | Manage Server |
/backup interval <hours> | Configure automatic scheduled backups (0 disables). | Manage Server |
/ping | Checks bot latency to Discord's gateway. | Everyone |
/about | Shows version info, legal links, and privacy highlights. | Everyone |
/help | Lists all available commands with descriptions. | Everyone |
FAQ
Does Argus read my messages?
Argus scans message content in real-time to enforce filters, but does not store message text. Warning records include user ID, reason, action taken, and timestamp — not the original message content.
Are images sent to external servers?
No. NSFW media detection runs a local TensorFlow model on your own hardware. Images never leave your machine for content scanning. Only URL hashes (not full URLs) are sent to Google Safe Browsing for link safety checks.
What happens if the bot goes offline?
Filters stop. Argus does not queue messages for retroactive scanning. Raid protection lock state survives restarts — if the bot comes back mid-lockdown, it re-applies the lock. Argus runs on more than one server: if the active one fails, a standby takes over automatically within about a minute. Live per-server uptime is on the status page.
Does the AI filter send my messages to an AI company?
No. The Context-Aware filter is a local scoring engine — no API, no model download, no network calls, nothing stored. See AI Filter.
Can I whitelist specific users, roles, or channels?
Yes. The dashboard lets you exempt roles and channels from all filters. Exempted users can post anything without triggering moderation. This is useful for mod channels, admin roles, and bot-spam channels.
How do I change the bot's prefix?
Argus uses Discord slash commands only (/setup, /moderate, etc.). There is no text prefix — slash commands are more discoverable and cannot conflict with other bots.
Does Argus work on mobile?
Argus runs on your server, not your device. All moderation happens server-side. The web dashboard is responsive and works on mobile browsers.