,trap
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 trapSyntax
,trap counter <on/off/reset/set> [count]
/trap <subcommand>
<required> · [optional]
Example
,trap counter set 42
Subcommands
13 prefix subcommandsRead from the prefix .sub/ tree, the canonical shape. Every entry has a permanent anchor of its own.
,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
,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
,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
,trap setup
,trap stats
,trap whitelistaka wl
Slash leaves
23 leavesRead 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
/trap setup
Designate a trap channel, or auto-create #trap
/trap setupchannel| Parameter | Type | Default | Detail |
|---|---|---|---|
channel | Channel | — | Existing channel to use (omit to auto-create)(text channels) |
/trap action
Set the punishment for caught users
/trap actionaction*duration| Parameter | Type | Default | Detail |
|---|---|---|---|
actionrequired | String | — | Punishmentsoftban (ban + unban, purges messages) · ban · kick · timeout · mute · jail |
duration | String | — | Timeout duration, e.g. 1h (timeout action only) |
/trap escalation
Use a harsher action for repeat offenders
/trap escalationstate*action| Parameter | Type | Default | Detail |
|---|---|---|---|
staterequired | String | — | on or offon · off |
action | String | ban | Escalation punishmentsoftban (ban + unban, purges messages) · ban · kick · timeout · mute · jail |
/trap dm
Toggle DMing users when they get caught
/trap dmstateinviteembed| Parameter | Type | Default | Detail |
|---|---|---|---|
state | String | — | DM on catch: on or offon · off |
invite | String | — | Rejoin invite in softban/kick DMs: on or offon · off |
embed | String | — | Custom catch DM embed: set (opens an editor), check, or resetset · check · reset |
/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*| Parameter | Type | Default | Detail |
|---|---|---|---|
countrequired | Integer | — | New catch count(min 0) |
/trap randomize
Periodically rename trap channels to innocuous names
/trap randomizestate*hours| Parameter | Type | Default | Detail |
|---|---|---|---|
staterequired | String | — | on or offon · off |
hours | Integer | 24 | Rotation interval in hours(1–168) |
/trap joingate
Fresh accounts get the escalation action on first catch
/trap joingatestate*days| Parameter | Type | Default | Detail |
|---|---|---|---|
staterequired | String | — | on or offon · off |
days | Integer | 7 | Freshness threshold in days(1–90) |
/trap channels addgroup channels
Add a trap channel
/trap channels addchannel*| Parameter | Type | Default | Detail |
|---|---|---|---|
channelrequired | Channel | — | Channel to trap(text channels) |
/trap channels removegroup channels
Remove a trap channel (not the primary)
/trap channels removechannel*| Parameter | Type | Default | Detail |
|---|---|---|---|
channelrequired | Channel | — | Channel to remove(text channels) |
/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| Parameter | Type | Default | Detail |
|---|---|---|---|
role | Role | — | Role to whitelist |
user | User | — | User to whitelist |
/trap whitelist removegroup whitelist
Remove a role or user from the whitelist
/trap whitelist removeroleuser| Parameter | Type | Default | Detail |
|---|---|---|---|
role | Role | — | Role to remove |
user | User | — | User to 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