Scribe has an aggressively optimized chat filter and moderation engine baked into its core. You configure these rules in config.yml.

Cooldowns (Anti-Spam)

  cooldown:
    enabled: true
    seconds: 3.0
    action: "block"

Blocks players from sending messages back-to-back. If they speak before 3 seconds have passed, their message is silently cancelled and they are warned.

Anti-Duplicate

  anti-duplicate:
    enabled: true
    action: "block"

Keeps a cache of the player’s last sent message. If they send the exact same string twice in a row, the second message is blocked.

Anti-Caps

  anti-caps:
    enabled: true
    min-length: 5
    max-caps-percentage: 50
    action: "replace"

If a message is longer than 5 characters, and over 50% of the characters are capitalized, the replace action will automatically .toLowerCase() the entire message. (Example: “HELLO EVERYONE HOW ARE YOU” becomes “hello everyone how are you”)

Swear Filter

  filter:
    enabled: true
    action: "replace"
    blocked-words:
      - "badword1"
      - "badword2"

Scribe checks messages against a blacklist array.

  • If action is replace, “This is a badword1” becomes “This is a ********”.
  • If action is block, the entire message is dropped.

Moderation Actions

For most moderation systems above, you have two choices for action:

  1. block: Silently drops the message and alerts the sender.
  2. replace: Mutates the message (e.g. lowering caps, turning swears into asterisks) and allows it to send normally.