ZombyIO
All guides

Docs · Keep the server safe

How to catch spam bots in Discord with a trap channel and join screening

Advertising accounts post the same message in every channel they can reach. Give them one channel nobody else writes in, and they identify themselves; new arrivals can be screened on the way in as well.

Takes about 5 minutesFree, Premium raises limits

What you will end up with

An account younger than 30 days that posts in the trap is banned and its last 24 hours of messages disappear from every channel. Your log channel shows who it was, how old the account was and what was done.

no-chat-here
bot-log

Where to find it

Open the dashboard, pick your server and choose Anti-bot in the sidebar (on a phone: under Features in the bar at the bottom). That is two clicks from your server list. You can also press Ctrl K anywhere in the dashboard and type the name.

  1. Your servers
  2. Your server
  3. Anti-bot
Open the dashboard

Step by step

  1. Step 1: Make a trap channel and pick it

    Create a text channel near the top of your channel list, for example #no-chat-here. Everyone must be able to see it and write in it: a channel that new accounts cannot post in catches nobody. Do not use a channel where members talk, such as your welcome channel or the channel where Discord posts join notices.

    Open Anti-bot in the sidebar and choose the channel under Pick the trap channel. Picking the first channel switches the trap on. The free plan watches one trap channel, Premium up to 25.

    Tip

    The page checks each trap for you and warns when accounts without roles cannot write there, when ZombyIO may not delete messages there, or when another feature already uses the channel.

  2. Step 2: Pick where you get told and protect your team

    Under Pick where you get told, choose a staff channel. Every catch and every flagged arrival is reported there. Without it, catches and flagged arrivals are not reported, but every timeout, kick and ban anti-bot carries out still becomes a case in your moderation log.

    Further down, under Safety, add your staff roles to Roles nothing here acts on. Members with those roles can write in a trap without anything happening. Bots are never caught, and the server owner is never acted on.

  3. Step 3: Start with Watch only and switch anti-bot on

    Under Pick a starting point, choose Watch only, then switch the feature on in the banner and press Save. Watch only switches the trap and the join screening on with Watch mode: everything is scored and written to the log as "Watch mode, nothing done", nobody is removed and posts in the trap stay up.

    • Normal protection: bans whoever posts in the trap and deletes their last 24 hours of messages, and only reports suspicious arrivals.
    • Hard protection: the same ban, and kicks arrivals that score 3 points or more.

    Important

    This is the one feature that removes members without a moderator. Leave watch mode on for a day and read the log before you arm it.

  4. Step 4: Post the warning in the trap

    Under The warning in the channel, leave Message text empty to use the bot’s own wording in your server language, or write your own (up to 2,000 characters). Press Save first: the bot posts the saved text.

    Then press Post it in the trap now next to each trap. The bot posts the warning under the title "Please do not write in this channel" and pins it. Pressing the button again, now called Update the warning, edits the same message instead of pinning a second one.

    Tip

    ZombyIO needs to be allowed to write and pin messages in the trap. The warning is only posted when you press the button.

    no-chat-here
  5. Step 5: Decide what happens to whoever posts there

    Under The trap, choose one of five actions. Ban them is the default and the one that clears up: with Also delete their messages from the last set to 24 hours, Discord removes everything the account posted in the last day, in every channel.

    • Only report it: one line in the log, the post stays.
    • Time them out: 1 hour by default.
    • Kick them: out, but a new invite lets them back in.
    • Kick them and delete their posts: a ban that is lifted straight away, so their posts go and they can come back.

    For two minutes after the trap acts on an account, anything else it posts in your server is removed as it arrives.

    Important

    Accounts older than 30 days are only reported and lose their message, because an old account in the trap is usually somebody who clicked the wrong channel. Change that under More settings, Only report accounts older than. Zero switches it off.

  6. Step 6: Screen new arrivals

    Under Screening new arrivals, Score every account that joins gives points for signs of a bulk-made account:

    • Created in the last 24 hours: 2 points.
    • No profile picture: 1 point.
    • Username ending in five or more digits: 1 point.
    • Lookalike letters from another alphabet inside a word, or invisible characters, in the name: 2 points.
    • Joined while raid defence had its alarm up: 2 points.

    With these default points, one sign alone never reaches Recommended (3). Choose what happens when an account does: Only report it, Time them out (1 day by default, it ends by itself), Give them the quarantine role, Kick them or Ban them. Try an account beside the settings runs the real scoring on an account you describe.

    Important

    A quarantine role only holds somebody back if it is denied View Channel everywhere, and the page warns when it is not. A role with Administrator cannot be saved as the quarantine role, and a role with moderation rights only by the server owner or an administrator.

    bot-log
  7. Step 7: Read the log, then leave watch mode

    Each report shows the account, the channel, how old the account is, the result and, for arrivals, the score and the signs that counted. When the catches look right, switch off Watch mode, or pick Normal protection, and save.

    Every timeout, kick and ban anti-bot carries out also becomes a case in your moderation log, with ZombyIO as the moderator and the reason "Anti-bot: posted in a trap channel" or "Anti-bot: suspicious on joining".

    bot-log

Every setting explained

In the order the page shows them. Names in bold are exactly what the dashboard calls each control.

Set it up

Channels that are trapsFree: 1 · Premium: 25

Only the channel itself counts: threads inside a trap channel are not traps. Messages Discord writes itself, such as join notices, never count. If Premium ended and you have more traps than the free plan allows, only the first one stays armed and you cannot add another.

Pick where you get told

Where catches and flagged arrivals are reported. Empty by default; then they are not reported, but timeouts, kicks and bans still become cases in your moderation log.

Switch anti-bot on

The same switch as in the banner. Off by default. Off, nothing is caught or screened. A warning already pinned in a trap stays until you remove it.

Pick a starting point

Watch only, Normal protection, Hard protection

Each one switches the trap and the join screening on and sets watch mode, the trap action, the message deletion and the screening action, with the threshold at 3 points. They do not switch the feature itself on.

The trap

Watch trap channels

Off by default, and switched on when you pick the first trap channel.

Someone writes in the trap. What now?

Only report it, Time them out, Kick them, Kick them and delete their posts or Ban them (default). Every action except Only report it removes the post in the trap.

Timeout length

Only for Time them out: 10 minutes, 1 hour (default), 1 day, 7 days or an exact value up to 28 days.

Also delete their messages from the last

Only for a ban or Kick them and delete their posts: off (ban only), 1 hour, 24 hours (default) or 7 days, or an exact number of hours up to 168. Kicking and deleting always takes at least the last hour.

Screening new arrivals

Score every account that joins

Off by default. Bots added to the server are never scored.

How suspicious is suspicious enough?

Strict (2), Recommended (3), Relaxed (5) or an exact number from 1 to 100. Default 3. The page warns when one sign alone would be enough, or when no account can reach the number.

A suspicious account joins. What now?

Only report it (default), Time them out, Give them the quarantine role, Kick them or Ban them. A quarantined account gets none of your auto roles, and while it holds the quarantine role, or is about to, it gets no role from a reaction-role panel, a blueprint or a level reward, no Stream Drops reward of any kind (no XP, gift code, message or role; the drop waits until it is out of quarantine), and cannot give the quarantine role back through a panel. Use a role for quarantine that nothing else hands out. A ban here deletes no messages; a new arrival has none.

Timeout length

Only for Time them out: 1 hour, 1 day (default), 7 days, 28 days or an exact value. The timeout ends by itself.

Quarantine role

Only for the quarantine action, and required for it. Deny this role View Channel in every channel. The page marks roles with Administrator, which are refused, and roles above ZombyIO’s, which it cannot give.

Safety

Watch mode

Off by default. On, everything is scored and logged as "Watch mode, nothing done", but nobody is removed, timed out or quarantined and trap posts stay up.

Roles nothing here acts on

Up to 50 roles. Members with one of them are ignored by the trap completely, and their message stays. New arrivals have no roles yet, so this does not affect the screening.

The warning in the channel

Message text

Up to 2,000 characters, no placeholders. Empty uses the bot’s own wording in your server language. The title above it is always "Please do not write in this channel".

Post it in the trap now

One button per saved trap. Posts and pins the saved text, or edits the warning it pinned before. Disabled while the text box holds unsaved changes. After a few posts in a row, wait half a minute.

More settings

Only report accounts older than

Default 30 days, range 0 to 3,650. Older accounts that post in a trap lose their message and are reported, but nothing else happens. 0 switches this off.

Count an account as new for

Default 24 hours, range 1 to 8,760. Accounts younger than this get the points for a new account.

What each signal is worth

The points for each sign, from 0 to 10. 0 switches a sign off. Defaults: Created very recently 2, No profile picture 1, Name ends in a long number 1, Name mixes two alphabets 2, Joined during a raid 2.

Free and Premium

Premium costs €6 a month per server and is shared by every admin of that server. It raises limits, it does not unlock the feature.

Free and Premium
WhatFreePremium
Trap channels125

Something not working?

The problems people run into most often, and how to fix each one.

The trap never catches anything
  • Accounts without roles cannot write in the channel. The page warns about this under Pick the trap channel.
  • The post was in a thread inside the trap. Only the channel itself counts.
  • The poster has one of the Roles nothing here acts on, or is a bot.
  • Premium ended and this trap is beyond the first one.
  • Anti-bot or Watch trap channels is switched off.
The trap caught one of our regulars

Their account was younger than Only report accounts older than (30 days by default), or that setting is 0. Older accounts only lose their message. Add your staff roles to Roles nothing here acts on, and make the warning in the trap clear with Post it in the trap now. A ban can be lifted with /unban.

I posted in the trap to test it and nothing happened

The server owner is never acted on. Your message is removed, unless Watch mode is on or the trap is set to Only report it. If your account is younger than Only report accounts older than, the log says "Nothing done, this account owns the server. Anyone else would have been caught"; an older account gets "Message removed. Only reported, the account is older than your limit" instead. Test with a second account without roles instead.

The spam they posted in other channels is still there

Only Ban them and Kick them and delete their posts delete earlier messages, and only as far back as Also delete their messages from the last says. Only report it, Time them out and Kick them leave them up. If the trap post itself stays, ZombyIO lacks Manage Messages in that channel; the log then says "Could not be removed. I need Manage Messages in that channel".

The log says "Could not act"

ZombyIO lacks Ban Members, Kick Members or Timeout Members, or the account has a role above ZombyIO’s. The anti-bot page lists missing permissions at the top. After three refusals in a row, the bot stops asking Discord for that action in your server for 5 minutes; changing roles or saving the page ends that early. See roles and permissions.

Quarantined accounts can still chat

The quarantine role does not deny View Channel in every channel, so it holds nobody back. The page says how many channels are still open to it. Deny the role View Channel there, or choose Time them out, which needs no setup.

The screening flags normal new members, or never flags anyone
  • Flags normal members: one sign alone reaches the threshold, and the page warns about it. Keep Recommended (3) with the default points, or lower the points for Created very recently.
  • Never flags anyone: the threshold is higher than all points together, or you rely on Joined during a raid while raid defence is off on the auto moderation page.

Try both with Try an account.

The button to post the warning does nothing or is greyed out

Save first: the button is disabled while the text box holds unsaved changes, and it only appears for trap channels that are saved. If posting fails, ZombyIO cannot write or pin in that channel. After a few posts in a row, wait half a minute.

Still stuck?

Ask in the ZombyIO support server. Bring your support ID, your server’s support ID and a sentence about what you expected to happen, and someone will look at it with you.

Go to the support server