7205bcd5ac
Introduce a new Anti-Spam Discord bot project. Adds project metadata and scripts (package.json, .env.example, .gitignore, README, deploy-commands.js) and the full src implementation: command registration and handling, per-guild settings persistence, configuration parsing, spam detection logic (phishing URLs, suspicious TLDs, mass/role mentions, image+URL combos, new account heuristics), and the bot entrypoint (index.js) that enforces permissions, logs actions, and optionally bans offenders. README explains setup, required intents, and usage; per-server settings are stored under data/guild-settings.json. (package-lock.json added for dependency resolution.)
Anti-Spam Discord Bot
Automatically deletes phishing and mass-mention spam, then bans the sender. Works across multiple servers from a single bot instance.
What it catches
- Phishing URLs (fake Discord / Nitro / Steam links, typosquat domains)
- Suspicious TLDs combined with spam patterns
- Messages with image links plus other URLs
@everyoneand large role mentions (default: roles with 50+ members)- Mass mentions paired with links
- Optional: stricter rules for very new accounts
Setup
- Create a bot at the Discord Developer Portal.
- Under Bot → Privileged Gateway Intents, enable Message Content Intent.
(Required — the bot cannot read messages without this. You do not need Server Members Intent.) - Invite the bot using a URL that includes the
applications.commandsscope, plusBan Members,Manage Messages,Read Message History, andView Channels.
In the Developer Portal: OAuth2 → URL Generator → scopes:bot+applications.commands. - Copy
.env.exampleto.envand setDISCORD_TOKENandAPPLICATION_ID. - Install and run:
npm install
npm start
- In each server, run
/antispam set-logto choose a mod log channel.
Commands not showing?
/antispamis only visible to users with Manage Server permission.- Restart the bot after inviting it — commands are registered per-server on startup.
- Or deploy instantly: set
DEPLOY_GUILD_IDto your server ID in.env, then runnpm run deploy-commands. - Re-invite the bot if it was added without the
applications.commandsscope.
Per-server configuration
Use /antispam in any server (requires Manage Server permission):
| Command | Description |
|---|---|
/antispam set-log |
Set the moderation log channel for this server |
/antispam add-trusted-role |
Exempt a role from spam checks |
/antispam remove-trusted-role |
Remove a trusted role |
/antispam status |
View this server's settings |
/antispam enable / /antispam disable |
Turn protection on or off per server |
Settings are stored in data/guild-settings.json on disk.
Global configuration (.env)
These apply to every server the bot is in:
| Variable | Default | Purpose |
|---|---|---|
MAX_ROLE_MENTION_SIZE |
50 |
Flag role pings at or above this size |
BAN_ON_SPAM |
true |
Ban offenders (set false to only delete) |
TRUSTED_USER_IDS |
— | User IDs that bypass checks on all servers |
Admins and users with Manage Server are always trusted.
Notes
- The bot needs a role above spammers in each server's role list to ban them.
- Test in a private channel first with
BAN_ON_SPAM=falseif you want delete-only mode.