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.