Skip to main content

,trap

aka ,trapchannel, ,honeypot

trap channel that auto-punishes spam bots

User permissions

Manage Guild

Cooldown

none

Other surface

/trap · 23 slash subs vs 13 prefix

Anchor

#trap

Forms

setup [channel] - designate a channel (or auto-create #trap)action <softban/ban/kick/timeout/mute/jail> [duration] - sets the punishmentescalation <on/off> [action] - harsher action for repeat offendersdm <on/off> - DM users when caughtdm invite <on/off> - include a rejoin invite in softban/kick DMsdm embed <code/check/reset> - custom catch DM (custommessage code; {user}, {action}, {trap.channel})counter <on/off/reset/set> [count] - show/hide the warning embed (off = silent trap), or fix its catch countembed <view/set/remove/resend> [code] - custom counter embed ({trap.counter}, {trap.action}, {trap.escalation}, {trap.channel})channels <add/remove/list> [#channel] - extra trap channels (each gets its own counter)randomize <on/off> [hours] - periodically rename trap channels (default every 24h)joingate <on/off> [days] - fresh accounts get the escalation action on first catchwhitelist <add/remove/list> [@role/@user] - immune roles/userssettings - shows the configstats - catch statistics (actions, unique users, top days)disable - removes the trap

Syntax

,trap counter <on/off/reset/set> [count]
/trap <subcommand>

<required> · [optional]

Example

,trap counter set 42

Subcommands

13 prefix subcommands

Read from the prefix .sub/ tree, the canonical shape. Every entry has a permanent anchor of its own.

,trap action

sets the trap punishment

,<softban/ban/kick/timeout/mute/jail> [duration]
#trap-action
,trap channels

manage additional trap channels (each gets its own counter embed)

,<add/remove/list> [#channel]
#trap-channels
,trap counter

toggles the warning embed and manages the catch count

,<on/off/reset/set> [count]
,trap counter set 42
#trap-counter
,trap disableaka remove, off

removes the trap

No usage recorded

#trap-disable
,trap dm

toggles DMing caught users

,<on/off> | invite <on/off> | embed <code/check/reset>
,trap dm embed {description: {user} you got {action} in {guild.name}}$p
#trap-dm
,trap embed

customizes the trap counter embed

,<view/set/remove/resend> [code]
,trap embed set {title: keep out}$p{field: Caught && **{trap.counter}** && inline}
#trap-embed
,trap escalation

harsher punishment for repeat trap offenders

,<on/off> [action]
#trap-escalation
,trap joingateaka gate

fresh accounts (young account or recent join) caught in the trap get the escalation action immediately

,<on/off> [days]
#trap-joingate
,trap randomizeaka rotation

periodically renames trap channels to innocuous names so bots can't blocklist them (needs Manage Channels)

,<on/off> [hours]
#trap-randomize
,trap settingsaka status, config

shows the trap config

No usage recorded

#trap-settings
,trap setup

designates or creates the trap channel

,[channel]
#trap-setup
,trap stats

trap catch statistics (actions, unique users, repeat rate, top days)

No usage recorded

#trap-stats
,trap whitelistaka wl

manages trap immunity

,<add/remove/list> [@role/@user]
#trap-whitelist

Slash leaves

23 leaves

Read from the registered slash builder: groups are flattened, so a grouped leaf reads “group leaf” and anchors with a hyphen between the two words.

Two trees, not one view of one

This command registers 23 leaves on the slash surface against 13 subcommands in its prefix tree. Both lists are on this page in full; neither is a summary of the other.
/trap setup

Designate a trap channel, or auto-create #trap

/trap setupchannel
ParameterTypeDefaultDetail
channelChannel—Existing channel to use (omit to auto-create)(text channels)
#trap-setup
/trap action

Set the punishment for caught users

/trap actionaction*duration
ParameterTypeDefaultDetail
actionrequiredString—Punishmentsoftban (ban + unban, purges messages) · ban · kick · timeout · mute · jail
durationString—Timeout duration, e.g. 1h (timeout action only)
#trap-action
/trap escalation

Use a harsher action for repeat offenders

/trap escalationstate*action
ParameterTypeDefaultDetail
staterequiredString—on or offon · off
actionStringbanEscalation punishmentsoftban (ban + unban, purges messages) · ban · kick · timeout · mute · jail
#trap-escalation
/trap dm

Toggle DMing users when they get caught

/trap dmstateinviteembed
ParameterTypeDefaultDetail
stateString—DM on catch: on or offon · off
inviteString—Rejoin invite in softban/kick DMs: on or offon · off
embedString—Custom catch DM embed: set (opens an editor), check, or resetset · check · reset
#trap-dm
/trap counter ongroup counter

Show the warning embed in every trap channel

#trap-counter-on
/trap counter offgroup counter

Hide the warning embed (a silent trap)

#trap-counter-off
/trap counter resetgroup counter

Reset the catch count to 0

#trap-counter-reset
/trap counter setgroup counter

Set the catch count to a specific number

/trap counter setcount*
ParameterTypeDefaultDetail
countrequiredInteger—New catch count(min 0)
#trap-counter-set
/trap randomize

Periodically rename trap channels to innocuous names

/trap randomizestate*hours
ParameterTypeDefaultDetail
staterequiredString—on or offon · off
hoursInteger24Rotation interval in hours(1–168)
#trap-randomize
/trap joingate

Fresh accounts get the escalation action on first catch

/trap joingatestate*days
ParameterTypeDefaultDetail
staterequiredString—on or offon · off
daysInteger7Freshness threshold in days(1–90)
#trap-joingate
/trap channels addgroup channels

Add a trap channel

/trap channels addchannel*
ParameterTypeDefaultDetail
channelrequiredChannel—Channel to trap(text channels)
#trap-channels-add
/trap channels removegroup channels

Remove a trap channel (not the primary)

/trap channels removechannel*
ParameterTypeDefaultDetail
channelrequiredChannel—Channel to remove(text channels)
#trap-channels-remove
/trap channels listgroup channels

List the trap channels

#trap-channels-list
/trap embed viewgroup embed

Show the counter embed code (the default, if none is set)

#trap-embed-view
/trap embed setgroup embed

Set a custom counter embed (opens an editor)

#trap-embed-set
/trap embed removegroup embed

Restore the default counter embed

#trap-embed-remove
/trap embed resendgroup embed

Post a fresh counter message and track that one instead

#trap-embed-resend
/trap whitelist addgroup whitelist

Whitelist a role or user

/trap whitelist addroleuser
ParameterTypeDefaultDetail
roleRole—Role to whitelist
userUser—User to whitelist
#trap-whitelist-add
/trap whitelist removegroup whitelist

Remove a role or user from the whitelist

/trap whitelist removeroleuser
ParameterTypeDefaultDetail
roleRole—Role to remove
userUser—User to remove
#trap-whitelist-remove
/trap whitelist listgroup whitelist

Show the whitelist

#trap-whitelist-list
/trap settings

Show the trap config

#trap-settings
/trap stats

Trap catch statistics

#trap-stats
/trap disable

Remove the trap

#trap-disable