Skip to main content

Overview

A Honeypot is a bait channel that looks like a normal member-visible channel but is not intended for regular conversation. Petto watches the channel and automatically moderates members or bots that send a message there. This is designed to catch compromised accounts and automated spam bots that blindly post while scanning a server. Petto ignores itself, but it checks other bot messages before the normal bot-message skip so spam bots can be caught too.
All Honeypot commands, and the Honeypot page of the dashboard, require Administrator. The configured action can be:
  • softban — bans the user, removes their recent messages, and immediately unbans them.
  • ban — permanently bans the user and removes recent messages according to Discord’s limits.
  • kick — removes the user from the server without banning them.
The default action is softban. Each member is punished once; anything else they manage to post there is only deleted.

From the dashboard

Dashboard → Moderation → Honeypot does everything the command does, and only administrators can change it there too.
1

Add a bait channel

In Add a bait channel, pick an empty channel members can see and what happens to who posts there, then press Add honeypot. Petto checks its permissions in that channel first and says which ones are missing. The warning is posted at once.
The Add a bait channel card with the channel picker, Softban (recommended) and the Add honeypot button

Dashboard → Moderation → Honeypot: Add a bait channel: the channel, what happens to who posts there and Add honeypot.

2

Choose the punishment

Each bait channel has its own card. Softban (recommended), Ban or Kick, with a short note on what each one does.
The Punishment choices: Softban (recommended) selected, Ban and Kick, each with what it does

Dashboard → Moderation → Honeypot: step 1 of the card, the punishment.

3

Choose the message in the channel

Petto’s normal panel, A custom message (your text or a saved embed, with a live preview) or Nothing. See The message in the channel.
Message in the channel set to A custom message: the saved embed picker, the text with honeypot variables and its preview as Petto

Dashboard → Moderation → Honeypot: A custom message, with the variables and the live preview.

4

Decide what the caught member gets

Send them a DM and, for a softban, Add an invite back. See The member who is caught.
The member who is caught: Send them a DM and Add an invite back, both checked

Dashboard → Moderation → Honeypot: step 3 of the card, the DM and the invite back.

The Honeypot page with one bait channel, the punishment and message choices and the DM options

Dashboard → Honeypot: the counts, a new bait channel and the card of the bait channel with its preview.

Saved changes are posted in the channel right away. Post it again sends the message again (useful if someone deleted it), and Remove honeypot turns the channel back into a normal one and deletes the warning when it can. The top of the page counts the bait channels, the members caught and when the last one was. Recent catches lists the latest members caught, with the punishment and a link to the case.
The Recent catches list with two softbans and a ban

Recent catches, with the punishment and the case of each one.

Adding a Honeypot

Choose a text or announcement channel that members can see. Do not deny View Channel or prevent messages from reaching the channel, because Petto needs to receive a message there in order to detect it.
liam adds do-not-write-here as a honeypot with a softban and Petto explains the action, the repeat protection and who is exempt

In Discord: a bait channel added with a softban.

If the channel already has a Honeypot, running add again updates its configured action and refreshes the warning panel. The panel includes Petto’s Honeypot artwork, a persistent trigger counter, and a counter button using <:petto_honeypot:1541493688054841405>.

The message in the channel

By default Petto posts its warning panel (the artwork, the warning and the counter). With !honeypot panel you can choose what is posted instead: your own text and/or one of your saved embeds, or nothing at all. The honeypot works the same in all three cases.
The honeypot panel telling members not to send messages in the channel, with the punishment and the count of members caught

In Discord: Petto's warning panel in the bait channel.

liam sets a custom text with honeypot variables and Petto confirms it is posted

In Discord: your own text instead of the panel.

In the bait channel Petto posts: do not write here, a softban, 37 caught so far

In Discord: the text as it is posted, with the variables filled in.

liam picks the saved embed warning-card; Petto confirms it and posts the embed with the punishment filled in

In Discord: a saved embed instead of the panel.

liam sets the message to none and Petto says nothing is posted and the honeypot still works

In Discord: nothing posted, the trap still works.

liam goes back to the default and Petto says its warning panel is posted

In Discord: back to Petto's panel.

A custom message needs a text or a saved embed. If the embed is missing, the text is posted. The count in a custom message updates when someone is caught, the same as the panel.

The member who is caught

By default the caught member gets the server’s sanction DM before they are removed, with the appeal link when appeals are on. For a softban, Petto also adds an invite back: a link that works once and lasts 7 days, so a real member whose account was hacked can return once they have it back. A ban keeps them out, and a kicked member can join again with any invite, so only a softban gets one.
liam turns the DM on with the invite back and Petto confirms it

In Discord: the DM with the invite back turned on.

Two DMs from Petto: the sanction message of Petto Land and a single-use invite that expires in 7 days

In Discord: what a softbanned member gets: the sanction DM and the invite back.

  • on sends the DM, off sends nothing.
  • reinvite (on or off) only matters for a softban. Both start on.
The invite opens on the rules or system channel, or the first channel everyone can see, never on a bait channel. Petto needs Create Invite there; without it the DM goes without the link and Petto tells you when you save. If the member has DMs closed, the invite made for them is deleted again. The automod log of each catch says what happened with the DM: sent, sent with the invite, sent without it, or not delivered.

Listing Honeypots

View every active Honeypot in the current server, its configured punishment, its persistent trigger count, which message it posts and whether the caught member gets a DM.
liam lists the honeypots: do-not-write-here, a softban, 37 members caught, the normal panel and the DM with an invite back

In Discord: every bait channel with its punishment, count, message and DM.

The honeypot panel and, under it, the private Honeypot Statistics answer with the channel, the count and the action

In Discord: the counter button of the panel answers privately.

The counter is stored per server and channel. The panel button is informational only: clicking it does not disable the Honeypot or change its action; it replies privately with the current count.

Removing a Honeypot

Remove a channel from the server’s Honeypot configuration. Members will no longer be punished for sending messages there, and Petto removes the warning panel when it can access the message.
liam removes the honeypot and Petto says its panel was removed when possible

In Discord: a honeypot removed.

Exemptions and permissions

The following are exempt from Honeypot actions:
  • The server owner.
  • Members with Administrator.
  • Members with Manage Messages.
  • Petto itself.
Petto needs these permissions in the Honeypot channel to configure and maintain the panel:
  • View Channel
  • Send Messages
  • Read Message History
  • Manage Messages
It also needs Kick Members or Ban Members, depending on the selected action. Its highest role must be above the target member’s highest role. Discord’s role hierarchy still applies; a Honeypot cannot punish an owner, a higher role, or another protected member.

What gets logged

Every trigger deletes the message, increments the persistent counter, and attempts the configured action. A successful action creates a normal moderation case, so it appears in the sanctions log with a reason such as:
Two log entries: Honeypot triggered for steam_support_2291 with the DM sent with an invite back, and the softban case 213

In Discord: a catch in the automod log and its case in the sanctions log.

The detection itself is also sent to the automod log category. To keep these separate, route them to different channels:
See Logging for all available event categories and routing options.

Troubleshooting

The panel does not appear

Check that Petto can view and send messages in the selected channel and has Manage Messages. Run the add command again after fixing permissions to recreate or refresh the panel.
liam adds a honeypot and Petto answers it needs View Channel, Send Messages, Read Message History and Manage Messages there

In Discord: Petto says which permissions it is missing in the channel.

The message is detected but the action fails

Check the matching Kick Members or Ban Members permission and move Petto’s role above the target member’s highest role. The trigger may still appear in the automod log even when Discord rejects the punishment.

Staff members are not punished

That is intentional. The owner, Administrators, and members with Manage Messages are exempt so staff can inspect or maintain the bait channel safely.

Automod

Configure content checks, anti-spam, anti-raid, anti-alt, and silent channels.

Logging

Route sanctions, automod detections, and other event categories to separate channels.