Admin handler
0.1.0Bot-side handler for dashboard owner actions (leave_guild, ...) + guild blocklist enforcement.
MARVIN keeps your Discord server safe. It blocks spam, catches scam images, runs tickets, hides adult content, and gives you a simple dashboard to set it all up. Turn features on or off per server. No subscriptions to anyone else.
Free to start · open source · your data stays on your own server
Guilds protected
Messages filtered
Scams blocked / 7d
11 features
Turn each feature on or off for each server. Anti-spam in one, tickets in another, both in a third — your choice.
Bot-side handler for dashboard owner actions (leave_guild, ...) + guild blocklist enforcement.
Catches members using multiple accounts to dodge bans. Members click a Verify button → confirm with Discord → MARVIN quietly notes a fingerprint of their connection. If two accounts share the same fingerprint, your staff get an alert. We don't ban anyone automatically — a shared connection can mean two people in the same house. You decide what to do.
Stops members from posting links to other Discord servers. Catches official Discord invite links, sneaky redirectors, and shortened links (like bit.ly) that hide an invite. Each type can be turned on or off independently.
Protects against rogue admins or compromised staff accounts. If someone with admin powers mass-deletes channels, mass-bans, or mass-creates roles in a short time, MARVIN strips their admin roles and alerts you before they can do real damage. Lifesaver if a moderator's account ever gets hacked.
Spots raid waves — lots of accounts joining at once. When the join rate spikes past what you set, MARVIN alerts your staff and (if you want) auto-kicks everyone who joined during the wave. After the wave passes, things go back to normal.
Detects and acts on message spam patterns: rapid-fire, duplicates, mass-mentions, mass-emojis, ALL CAPS. Each pattern is individually togglable per guild.
Records every moderator action and every automated filter trigger to the audit_log table, AND echoes them as rich embeds to per-event-type log channels you pick below. Set the channels you care about; leave the rest blank to suppress.
Automatically create threads in selected channels, and/or auto-adjust slowmode based on message rate. Set per-channel from the dashboard.
User-supplied regex rules + caps/link/slur banlist categories. Each type is individually toggleable. Off by default because it needs your rules — add them via /automod add or the dashboard.
Daily birthday announcements + optional role on the day.
Make your own slash commands. /cc <name> runs whatever response you saved — text, mentions, server info, even arguments the user types. Great for FAQs, rules links, or running gags. Manage your commands from the dashboard.
Daily DELETE sweep over high-growth tables (audit_log, filter_matches, bot_command_queue, mention_events, etc.) so the DB stays bounded over time. Per-table retention is policy-driven (sane defaults bundled). Logs deletion counts to lifecycle_log on every cycle. Never touches infractions, tickets, transcripts, or anything the operator might need long-term — those are preserved by design.
Send a rich embed to any channel via /embed send. Save embeds as named templates per server with /embed save, then /embed load to re-use them for announcements. JSON-edit supported for power users.
Create button-based giveaways. Bot auto-picks winners when the timer runs out. Staff can reroll or end early. Active + past giveaways listed on the dashboard.
Tracks guild joins / removes / rejoins. When the bot is removed from a guild, the guild's data is archived (not deleted) for 30 days; if the bot is re-added within that window, all settings and history are restored. A daily janitor task purges expired archives.
Per-guild config storage + the /config slash commands. Disabling this cog leaves all other cogs running on their default settings (slash commands stop responding, but the underlying cache still works).
A trap channel that auto-bans anyone who posts in it. Catches spam bots and malicious accounts that blast every channel. Pick an existing channel or create a 'do-not-type' channel, set who's exempt, and enable it.
Connect MARVIN to other services (game leaderboards, weather, your own website's API, etc.) so other features can pull in live data. Welcome messages, tickets, and custom commands can all use these connections to show real-time information.
Tracks which invite each new member came through. Lets staff see who's actively recruiting + supports invite-reward systems. /invites for personal stats, /invites leaderboard for top inviters.
Members add words they want to know about (their username, their game, their company, etc.) and MARVIN DMs them when someone mentions one of those words in chat. Like a personal ping system that doesn't bother the rest of the server.
Members earn XP for chatting and being in voice channels, leveling up over time. You can give out roles automatically at certain levels (Level 10 → Active Member, etc). /rank shows a member's progress; /leaderboard shows the top XP earners. Pick a dedicated channel for level-up announcements so they don't spam your main chat.
The core mod toolkit: /warn, /mute, /kick, /ban, /note, /case, /cases. Members rack up warnings, and MARVIN can auto-escalate (for example: 3 warnings in 30 days = 1 hour mute). All actions are recorded so your staff can pull a member's full history with /cases.
Checks every new member as they join and acts on the obvious warning signs of bot accounts: brand-new accounts (days old), accounts with DMs locked off, default avatars, etc. You pick what counts as suspicious and what to do — log, quarantine, kick, or ban. Pairs well with the Anti-Raid feature for full raid coverage.
Scans images for adult content, gore, hate symbols, self-harm imagery, and more. Each category has its own on/off, sensitivity slider, and action (delete, warn, ban). All scanning happens on your own machine — pictures never leave your server.
Welcome flow when the bot joins a server. Creates a private bot-setup channel visible only to the user who added the bot + anyone with Manage Server, and pins a how-to embed with links to the dashboard and a 5-step quick-start checklist.
/poll create <question> · 2–10 options · single or multi-choice voting via buttons · timed auto-close with results embed · /poll close to end early · /poll list active in this server.
Button-panel role pickers. Three modes: single (one role from a set), multi (any combination), binding (one-way). Manage panels from the dashboard or the /rrpanel slash group.
Members run /remind to have MARVIN ping them later — in a channel or a DM. Accepts natural times like "in 30 minutes" or "tomorrow at 9am". Reminders fire within seconds of when you set them.
Members thank each other with /rep — builds a leaderboard of the most helpful people in your server. Great for finding natural community leaders. Cooldowns prevent spam.
Save bits of text that anyone can recall with /tag <name>. Common uses: server rules, FAQ answers, copypasta. Members can create their own snippets too (or you can lock that to specific roles).
Catches the classic scam pattern: a fresh account posts 3-6 near-identical images very quickly, often pinging @everyone. MARVIN recognises the images even if they've been slightly edited, reads any text in them, and combines those signals into a confidence score. Default settings are gentle — if you see false positives, you can dial it back.
When someone deletes a message, anyone can run /snipe in that channel to see what was deleted. Useful when scammers post and quickly delete, or when you missed something before it got removed. Stops working after the message is older than a configurable time (default 60 minutes).
Locked voice channels that show live member counts. Discord rate-limits channel renames to 2 per 10 minutes per channel — the bot debounces and skips no-op updates. Pair with the public /status page for the operator-side view.
Share bans with other servers that also use MARVIN. Turn on "share my bans" so other servers can see them, and "check for shared bans" so MARVIN flags people who've been banned elsewhere when they join you. The default action is "flag for review" — your staff still decide whether to ban. No one else's decision gets enforced automatically.
⭐ react above threshold reposts a message to a designated starboard channel.
Sticky messages stay at the bottom of a channel — perfect for rules or important info. Scheduled messages fire on a timer you set (once, or repeating) — great for daily reminders, weekly events, or one-off announcements.
Remembers what roles a member had when they leave, and gives them back on rejoin. Stops people from leaving and rejoining just to drop a mute, and saves your members from having to re-pick their roles every time they come back.
Members run /suggest to post ideas to a dedicated channel. Each suggestion gets 👍/👎 vote buttons + a status tag that staff can update via /suggest-approve, /suggest-deny, etc.
Join-to-create voice channels. Configure a trigger channel; anyone who joins spawns their own owned channel. Empties get auto-cleaned. Owners use /voice rename|lock|limit|kick.
Two ways for members to talk to your staff privately: an in-server ticket panel (click a button → MARVIN makes a private channel just for you and the staff team) and modmail (a member DMs MARVIN → staff get a hidden conversation channel they can reply from). Categories like "Report" or "Support" each have their own staff team. Closing a ticket saves a clean transcript.
Quietly keep an eye on specific members. Add someone with /watch, and MARVIN mirrors their messages and join/leave/role changes to a private staff channel. They don't know they're being watched. Useful for borderline members on a final warning.
Send configurable welcome + leave messages in-channel and/or DM. Pick text or embed per direction; both support variable substitution: {user.mention}, {user.name}, {user.avatar}, {user.created}, {guild.name}, {member_count}, {join_date}, {time_in_server}, {roles}, {inviter}.
Try it
Click the chips below or type a command — these are real bot responses, just shown here in a safe preview.
MARVIN BOT
👋 Welcome — this is a synthetic preview. Try the commands below.
Buttons that always work
The buttons on welcome messages, ticket panels, and verification embeds keep working even if the bot restarts. No "this interaction failed" errors.
Commands appear quickly
New slash commands show up in seconds on your test server, and within about an hour on every other server you've added MARVIN to.
Your data stays with you
Image scanning, scam detection, and content filtering all run on your own machine. Nothing gets sent to a third party.
How we compare
No marketing fluff. Where other popular bots do something well, we say so.
| Feature | MARVIN | Carl-bot | MEE6 | Dyno |
|---|---|---|---|---|
| Anti-spam (rate-limit, dupes, mentions, emojis, caps) | ✓ | ✓ | ✓ | ✓ |
| Per-category toggles for each filter | ✓ | ⚬ | ⚬ | ⚬ |
| Native tickets (no separate bot)Many guilds run Ticket Tool separately | ✓ | ✗ | ⚬ | ⚬ |
| Burst-image scam pHash + OCR | ✓ | ✗ | ✗ | ✗ |
| @everyone / @here pings with cooldowns | ✓ | ⚬ | ⚬ | ⚬ |
| Web dashboard for every config | ✓ | ✓ | ✓ | ✓ |
| Per-guild module enable/disable | ✓ | ⚬ | ⚬ | ⚬ |
| 100% free, no paid tier | ✓ | ✗ | ✗ | ⚬ |
| Self-hostable | ✓ | ✗ | ✗ | ✗ |
| Local NSFW model (no paid API) | ✓ | ✗ | ✗ | ✗ |
| Open source | ✓ | ✗ | ✗ | ✗ |
✓ supported · ⚬ partial · ✗ not supported. Comparison is informational, drawn from each bot's public docs at the time of writing.
Anti-spam (rate-limit, dupes, mentions, emojis, caps)
MARVIN
✓Carl-bot
✓MEE6
✓Dyno
✓Per-category toggles for each filter
MARVIN
✓Carl-bot
⚬MEE6
⚬Dyno
⚬Native tickets (no separate bot)
Many guilds run Ticket Tool separately
MARVIN
✓Carl-bot
✗MEE6
⚬Dyno
⚬Burst-image scam pHash + OCR
MARVIN
✓Carl-bot
✗MEE6
✗Dyno
✗@everyone / @here pings with cooldowns
MARVIN
✓Carl-bot
⚬MEE6
⚬Dyno
⚬Web dashboard for every config
MARVIN
✓Carl-bot
✓MEE6
✓Dyno
✓Per-guild module enable/disable
MARVIN
✓Carl-bot
⚬MEE6
⚬Dyno
⚬100% free, no paid tier
MARVIN
✓Carl-bot
✗MEE6
✗Dyno
⚬Self-hostable
MARVIN
✓Carl-bot
✗MEE6
✗Dyno
✗Local NSFW model (no paid API)
MARVIN
✓Carl-bot
✗MEE6
✗Dyno
✗Open source
MARVIN
✓Carl-bot
✗MEE6
✗Dyno
✗Pricing
MARVIN runs on your own machine — anything from a regular Windows PC to a cheap web host. There are no paid services involved: the spam detection, image scanning, and content filtering all happen locally. That's why we can give it away for free.