Spam Filter

Spam filters detect typical spam patterns automatically and react based on your rules. Each filter is configured separately and runs live on incoming chat messages.

Dashboard overview

On this page you configure each filter card with Active/Inactive, action, timeout duration, and thresholds. Optionally you can post a chat notice per filter (with text or @mention). All settings are per channel.

Filter types and logic

  • Links: Checks all detected links. Allows whitelist domains and optionally Twitch clips.
  • Caps: Measures uppercase ratio in messages above a minimum length.
  • Emotes: Counts total and unique emotes (Twitch, 7TV, BTTV, FFZ).
  • Special characters: Ratio of non-alphanumeric characters (after removing spaces).
  • Repetition: Too many identical characters in a row or too many repeated words. Optionally, emotes can be excluded from the check.
  • Flooding: Triggers when a user sends too many messages in a short time window (sliding window). Default: 5 messages in 10 seconds. Subs and VIPs are exempt by default.
  • Paragraph: Triggers on too many characters or lines.

Check order (important)

  • Filters run in a fixed order: Links → Caps → Emotes → Special characters → Repetition → Flooding → Paragraph.
  • Per message, at most one filter triggers (the first hit stops the chain).

Exceptions and roles

  • Broadcaster is always ignored.
  • Mods are only moderated if the bot is sending as the streamer.
  • For Caps, Emotes, Paragraph, Special characters, and Repetition there are exceptions for Subs/VIPs.
  • For the Link filter you can explicitly allow: Subs, VIPs, Mods, and Twitch clips.

Actions and timeout

  • Action per filter: Delete message, Warning, Timeout, Ban.
  • Timeout duration field appears when Timeout is selected.
  • If deletion fails, a 1s timeout is set as fallback.

Probation (escalation for repeat offenders)

With probation you can configure per filter that timeouts get longer step by step for repeat offenders. A user who triggers the same spam filter multiple times in a row gets an increasingly long timeout — until they stay quiet for a while.

  • Status: Enables escalation per filter. Default: off.
  • Timeout multiplier: Factor used to multiply the timeout for each repeat offence (default 1.5, allowed range 1 to 10). Example: base timeout 60 seconds, multiplier 2 → first offence 60s, second 120s, third 240s, and so on.
  • Probation cooldown: Time without a new offence after which the multiplier is reset (default 300 seconds, allowed range 10 to 86,400 seconds = 1 day).
  • Probation is tracked per filter and per user. Other filters and other users are not affected.
  • Only applies to the Timeout action. For Delete, Warning, or Ban, probation has no effect.

Chat notice (optional)

  • You can post a notice per filter (plain chat message or with @mention).
  • The text is sanitized (max. 200 characters, no line breaks).
  • You can use these placeholders in the notice: {user}, {login}, {display}, {channel}, {filter}, {reason}.
  • Depending on the filter, additional values are available, e.g. {ratio}, {threshold}, {domain}, {total}, {unique}.

Link allowlist

  • One domain per line, wildcards like *.example.com are allowed.
  • Protocol and path are ignored (https://, www. are removed).
  • Maximum 50 entries; only valid domain characters are accepted.

Filter only specific users

Every filter has an optional "Only for these logins" field. If you enter Twitch logins there, the filter applies exclusively to those users — everyone else is skipped by that filter.

This is useful, for example, to enable a strict caps filter only for known repeat offenders without affecting the rest of chat. The field accepts a list of Twitch logins (lowercase, one login per entry). If left empty, the filter applies to all users as usual.

There is also the counterpart field "Exclude these logins". If you enter logins there, the filter never triggers for those users — handy for exempting regulars without making them a VIP/Sub/mod. If a login is on both lists, exclusion wins.

Permit (link exemption)

  • With the !permit command you can temporarily allow users to post links.
  • Set the default duration for !permit in the Link filter.
  • !permit only works when the Link filter is enabled.