Skip to main content

Anti-Spam & Quality

TL;DR

The bot automatically filters low-effort and spam content. Here's how to tune it.

How It Works​

Messages are scored for quality and checked against spam patterns. You control the thresholds — the bot handles the rest.


Quality Thresholds​

These settings define the minimum bar a message must clear to earn rewards.

SettingWhat It DoesRangeDefault
qualifying-scoreMinimum quality score to earn rewards0–10030
min-wordsMinimum word count0+0 (off)
min-lengthMinimum character count0+0 (off)

Configure:

/config events action:edit name:regular_engagement qualifying-score:40 min-words:5

Setting min-words or min-length to 0 disables that check entirely.


Slop Detection​

Setting: max-slop-score | Range: 0–100 | Default: 0 (off)

Catches AI-generated and formulaic content that doesn't reflect genuine participation. Messages that score above the threshold are rejected.

  • Higher value = more lenient (only the most obvious slop is caught)
  • Lower value = stricter (more content is flagged)

Configure:

/config events action:edit name:regular_engagement max-slop-score:50

Similarity Detection​

Setting: max-similarity | Range: 0–100 | Default: 0 (off)

Rejects messages too similar to recent messages in the channel. Prevents copy-paste spam where users repeat the same content to farm rewards.

  • Higher value = more lenient (only near-identical messages are blocked)
  • Lower value = stricter (messages with moderate overlap are also blocked)

Configure:

/config events action:edit name:regular_engagement max-similarity:70

Self-Similarity Detection​

New feature. Detects users paraphrasing their own previous messages to farm rewards. A user who keeps posting slight variations of the same message will be caught even if they avoid exact repetition.

By default, the max-similarity threshold applies to self-similarity as well. If you need a separate threshold, you can override it with max_self_similarity in your detection config.

No additional setup is required if similarity detection is already enabled.


Cross-Channel Copy Detection​

New feature. Detects when content is copy-pasted across different channels in the server. For example, a user posting the same message in #general, #off-topic, and #gaming to multiply their reward earnings.

This check is automatically enforced whenever similarity detection is enabled. No additional configuration is needed.


Formality Detection​

Setting: max-formality | Range: 0–100 | Default: 0 (off)

Flags overly formal language that is uncommon in typical Discord conversations. Useful for communities where you want to ensure authentic, conversational engagement rather than structured or templated responses.

  • Lower value = stricter (more formal-sounding messages are flagged)
  • Higher value = more lenient

Configure:

/config events action:edit name:regular_engagement max-formality:60

Set to 0 to disable formality checking entirely. This is recommended for professional communities where formal writing is expected.


These are starting points. Adjust based on how your community responds.

Community Typequalifying-scoremax-slop-scoremax-similaritymax-formality
Casual (gaming, social)20608070
Professional (dev, business)404060off (0)
Mixed30507060

After applying settings, use Test Mode to verify behavior before rewards go live.


User Management​

Block or restore individual users from earning rewards without banning them from the server.

Block a user from earning rewards:

/config users disable user:@spammer

Re-enable a blocked user:

/config users enable user:@spammer

Check a user's reward status:

/config users status user:@someone

This is useful for handling edge cases where a user consistently finds ways around the automated filters.


Test Mode​

Before rolling out new thresholds to your community, use test mode to verify your configuration without distributing real rewards.

Enable test mode:

/config test-mode enable

While test mode is active, the bot processes messages and evaluates all filters normally — but rewards are simulated, not distributed. Review the output to confirm your thresholds are behaving as expected, then disable test mode to go live.

Disable test mode:

/config test-mode disable
caution

Remember to disable test mode when you're done. Rewards will not be distributed while it is active.