Docs

Honeypot

Trap channels that catch spam bots the moment they post.

Configure Honeypot in the dashboard →

Overview#

A honeypot is a channel nobody is supposed to talk in. Iris posts a notice at the top telling members to leave it alone, and actions anything that posts there anyway.

It works because of how account compromise actually plays out. A member whose account is taken over does not choose where the spam goes: the script posts in every channel it can see, in order, as fast as the API allows. The trap channel is one of those, and it is the one channel where a message is near-certain evidence rather than a judgement call. No word list, no rate threshold, no false positives from someone who types fast.

The default action is a softban, which is a ban followed immediately by an unban. The ban is what sweeps the account's spam out of every channel at once; lifting it straight away means the real owner can rejoin once they have changed their password and revoked the app that took the account.

Setup#

  1. Make a channel for the trap. Name it something that reads as a mistake to click into - #do-not-post or #honeypot - and put it near the top of the list where a script will reach it early.

  2. In that channel's permissions, deny Send Messages for @everyone. A member who cannot post cannot trip the trap by accident, while a compromised account with elevated roles still can.

  3. Open the dashboard and go to Moderation > Honeypot, then add the channel under Trap channels.

  4. Pick an Action. Start on Log only for a few days if you want to watch what the trap catches before it does anything.

  5. Write the Channel notice, then press Post notice so members see the warning.

  6. Set a Log channel so every catch is recorded, then turn Enable Honeypot on and save.

Settings#

SettingTypeDefaultWhat it does
Enable HoneypotToggleOffThe master switch. Nothing is actioned while it is off, not even in a configured trap channel.
Trap channelsChannelsNoneEvery channel listed is a trap. Threads inside one count as part of it.
ActionChoiceSoftbanSoftban, ban, kick, timeout, delete the message only, or log only. Softban is the default.
Timeout lengthChoice1 hourOnly for the timeout action. Discord caps a timeout at 28 days.
Also delete their recent messagesChoiceLast 24 hoursOnly for ban and softban. How far back Discord sweeps the account's messages server-wide. Seven days is the Discord maximum.
Delete the message that triggered the trapToggleOnRemoves the offending message itself. Turn it off to leave the evidence in place.
Bypass rolesRolesNoneMembers holding any of these roles are never caught.
Ignore administratorsToggleOnExempts Administrator and Manage Server. The server owner is always exempt regardless of this setting.
Ignore botsToggleOnTurn it off only if you expect a rogue bot or webhook to post in the trap.
Only catch accounts newer than (days)Number00 catches every account and is the recommended setting. Above 0, established members are left alone even if they post in the trap.
Log channelChannelServer defaultWhere catches are recorded. Falls back to the server-wide log channel.
DM the account before actioning itToggleOffSends the account a short explanation. A real person who tripped the trap by accident learns why; a spam bot will not read it.
Heading / BodyTextA generic warningThe notice Iris posts in each trap channel. The heading renders large; the body takes normal Discord markdown.
Thumbnail image URLTextNoneAn image shown to the right of the notice text.
Accent stripeColourOffA coloured bar down the left edge of the notice.
Show the catch counterToggleOnA button under the notice showing how many accounts the trap has caught. It is not clickable.
Counter label / emojiTextKicksWhat the counter button reads, before the number.

Permissions#

PermissionWhy Iris needs it
Ban MembersNeeded for the softban and ban actions. Softban also needs it to lift the ban again.
Kick MembersNeeded for the kick action.
Moderate MembersNeeded for the timeout action.
Manage MessagesDeletes the message that tripped the trap.
View ChannelsSees the trap channel and the log channel.
Send MessagesPosts the notice and writes the log entry.

What it looks like#

The notice is a Components V2 container: a heading over a paragraph, an optional image to the right, and a disabled button carrying the running count. It is not an embed, so it has no coloured sidebar unless you turn the accent stripe on.

I
Iris APP Today at 11:18 PM

Honeypot triggered in #do-not-post.

User

@spam-account (846273910284736512)

Action

a softban

Account created

3 days ago

A catch in the log channel.

Tips and gotchas#

Somebody posted in the trap and nothing happened.

Check the module is on, that the channel is in the trap list, and that the member is not exempt - administrators and bypass roles are ignored by default, and the server owner always is. If the log says the action failed, the Iris role is below the member's highest role.

What is the difference between a softban and a ban?

Both sweep the account's recent messages out of the whole server. A softban then lifts the ban immediately, so the real owner can come back once they have recovered the account. A ban keeps them out.

Does resetting the module clear the counter?

No. The counter and the catch list are records, not settings, so the Danger Zone reset leaves them alone. Use Reset counter on this page.

Can I have more than one trap channel?

Yes. Add as many as you like; the notice is posted in every one of them and they share a single counter.

Will this catch a member who just wandered in?

Only if they can post. Deny Send Messages for @everyone on the channel and the only accounts that can trip it are ones with elevated permissions, which is exactly the case worth catching.