DUXPLIMA Documentation

filters.conf

The allowlist, every filter and its keys, the ladder, automatic replies, commands read as chat, and the word files.

modules/filters/filters.conf, read at start and on every reload.

The keys every filter takes

KeyMeaning
enabledfalse turns it off
actionblock, censor, shadow or notify
pointsAdded to the player's ladder on each catch
channelsThe channels it reads; empty reads every channel
censor-withThe character a censored part is written with

allowlist

allowlist {
  words = [ "class", "assassin", "scunthorpe", "grape", "analysis" ]
  domains = [ "uxplima.com", "discord.gg/example" ]
}

Each filter

FilterKeys and defaults
spamblock, 1; lines = 5, window-seconds = 4
duplicateblock, 1; lookback = 3, similarity = 0.85, allowed = [gg, gl, hi, ty, lol]
capscensor, 0; min-letters = 6, max-ratio = 0.7
advertblock, 5
phoneblock, 2
parrotblock, 1; min-length = 12, similarity = 0.9
floodcensor, 0; max-run = 4
whitespacecensor, 0; max-run = 3
repeatblock, 1; max-repeats = 4, allowed = [ha, xd, gg]
swearcensor, 3; censor-with = "*", words = [], word-files = [], patterns = [], fuzzy = false, reversed = true, split-lines = 3
unicodecensor, 0; categories = [invisible, direction, zalgo, full-width], max-foreign-ratio = 1

similarity 1.0 is the very same line. A unicode line whose share of letters from other scripts is over max-foreign-ratio is caught too; 1 never catches that.

ladder

ladder {
  decay-per-day = 5
  rungs = [
    { points = 10, actions = [ "[message] <warn>Your lines keep tripping the filter. The next step is a mute." ] }
    { points = 25, actions = [ "[console] mute {player} 10m Too many filter catches" ] }
    { points = 50, actions = [ "[console] mute {player} 1h Too many filter catches" ] }
  ]
}

auto-replies

auto-replies {
  spawn {
    triggers = [ "how (do|can) i (get|go) (to )?spawn", "where is spawn" ]
    reply = "@auto-reply.spawn"
    permission = ""
  }
}

commands

commands = [ "tell", "w", "whisper", "r", "reply", "me", "say" ]: commands whose words pass the filters as if they were chat.

Word files

modules/filters/words/<language>.txt, one word per line: en, tr, de, es, fr, pt and ru ship. Every file is read whatever language a player reads. A new language is one new file.

Related: Filters