Honeypot anti-spam for Discord

Spam bots ban themselves.

MadHoney doesn't try to recognize spam. It wires up your server so only a bot would ever trigger the trap. Humans click Verify, read a captcha, and get in. Bots post in the decoy channel and get banned. MadHoney deletes their recent messages before anyone wakes up.

56
servers protected
61,951
members protected
61
spammers trapped
~5 min
to full setup

See live stats →

Why it matters

One bot. Unread dots everywhere.

A spam bot never posts just once. It blasts every channel it can reach and tries to ping @everyone on the way through. Every message lights up that channel with an unread marker, and here's the part that stings: ban the bot and delete the spam, and those unread dots usually stay. You come back to a whole server flagged with "new messages" for spam nobody should have seen. MadHoney's job is to stop that before it starts - to catch the bot in one place, before it can touch the rest of your server.

The mechanism

Three moves. Zero guesswork.

01

Gate

Every channel is hidden behind a verified role. A new account sees exactly two things: your rules channel… and one decoy.

02

Verify

Humans click Verify, read an image captcha, and type the code. The whole server unlocks in about ten seconds. No DMs, no third-party site.

03

Trap

The decoy is named like a real channel (#general-2) and it's the only place an unverified account can post. Spam bots post everywhere they can, so they post there first. MadHoney bans the account immediately and deletes its messages from the last 7 days. Verified humans never even see the channel.

The thinking

Bots aren't smart. That's the whole plan.

🚪

They post anywhere

A spam bot doesn't pick targets. It dumps its message in every channel it can see and pings @everyone if it can. Gate everything behind the verified role and the only door left open is the honeypot.

🎣

The name is the bait

Name the decoy like a normal channel (general-2, chat-2) and an indiscriminate bot walks straight in. It looks like just another place to spam.

🖼️

They can't read the warning

The honeypot's only content is an image. A human reads "don't post here" and backs off; a bot can't parse a picture, so it posts anyway and trips the trap.

🙈

Mistakes are reversible

The verified role hides the honeypot from everyone who has passed the captcha, so your members never even see the channel. An account that posts there before verifying can still trip it, which is why a burst of catches is kicked rather than banned until a moderator looks.

Example honeypot warning banner generated by MadHoney
Banner designer

Make the warning unmissable.

MadHoney generates the hazard banner that sits pinned in the honeypot: your headline, body text, colors, fonts, even your community's logo. Design it with /madhoney banner or in the dashboard. The one you're looking at is rendered live by the bot.

A look inside

The whole thing is a dashboard.

No config files, no slash-command archaeology. Sign in with Discord, pick your server, and every decision MadHoney makes is something you can see and change.

Setup you can follow.
Setup you can follow. Five steps, each with a button and a plain-language explanation of what it does. MadHoney tells you what is done, what is left, and warns you when something on your server would stop it working.
You choose what gets hidden.
You choose what gets hidden. MadHoney classifies every channel, then hands you the board. Drag anything between gated, public and leave-alone — and nothing changes until you hit Apply.
Catch a stolen account.
Catch a stolen account. When a trusted member's account gets stolen, it blasts the same message into every channel at once. Set how many channels and how fast counts as a blast, and what MadHoney should do about it.
A trap that warns humans.
A trap that warns humans. Design the hazard banner pinned in your honeypot — wording, colours, font, logo, distortion. Real members see a clear warning; bots that cannot read it walk straight in.
Everything included

Small wasp, quick sting.

🧭

One-command setup

/madhoney setup helps you select the required roles and channels. Then /madhoney deploy gives existing members access, posts the panels, and gates your channels. A dry run shows every proposed change before you apply it.

🧾

Mod-log with Undo

Every ban is reported to a staff channel: who, when, and what they posted. One-click Unban button if a curious human tripped the wire.

🌐

Universal ban list

Every honeypot catch, across every server, goes to the universal ban list. If you opt in, MadHoney bans known spammers when they join your server. You can also ban all listed accounts with Ban from List. You can opt out at any time; your own catches stay yours. Undo removes a user from the list everywhere.

🕶️

Reads as little as it can

The honeypot never looks at what a message says, only that it was posted in the trap. Compromised-account detection is the one exception: it compares a member's own recent messages to spot a hijacked account, in memory only, never written to disk. No profiling, no analytics. Staff and owners are always exempt.

🖥️

Web dashboard

Log in with Discord and manage any server where you have Manage Server: config, verify message, banner designer, deploy actions, and the ban log.

🛠️

Source Available

Read it, fork it, self-host it. One Node process, three files of state. github.com/nomadsgalaxy/MadHoney · OCL v1.1 + SWAtt.

🕵️

Catches hijacked accounts

A stolen account is already verified and already trusted, so no door check stops it. When one blasts the same message across your channels within seconds, MadHoney spots the pattern and acts - report it, kick, quarantine so they must re-verify, or ban. Your choice, per server.

🛡️

Safety rails

If the honeypot fires more than 5 times in 3 minutes, MadHoney starts raid mode. During raid mode, MadHoney kicks detected accounts instead of banning them. It does not add them to the universal ban list until a moderator confirms the incidents. The health check also identifies each enabled feature that does not have its required permission.

Get started

Armed in five minutes.

  1. Invite MadHoney to your server. Grant all requested permissions.
  2. Create a Verified role and a decoy channel like #general-2. MadHoney's own role must sit above the Verified role.
  3. Run /madhoney setup. Select the Verified role, rules channel, decoy channel, and optional staff log channel.
  4. Run /madhoney deploy. Give existing members access. Post the panels. Run the gate dry run. Review the proposed changes. Apply the changes.
+ Add MadHoney to your server or set it up from the dashboard
⚠️Warning: Discord Onboarding can bypass verification. Do not configure Onboarding to add the Verified role automatically. If it does, users can enter without completing the captcha.
A note on accessibility. A honeypot is a visual trap. Members who use text-to-speech or a screen reader might not know that a decoy is different from a real channel. Do not use a honeypot in a community where members cannot see its warning. If you use one, identify the honeypot channel in your server rules. Screen-reader users must be able to hear this warning. A moderator can unban a person who triggers the honeypot by mistake, but your most vulnerable members should not be the ones who find the tripwire.