Skip to content

Trigger conditions

Conditions decide whether a trigger fires, and whether an individual action in the trigger runs. A trigger’s conditions are a list where every item must pass (AND); one item in that list can itself be an “any of these” group (OR). See also the conditions guide.

The basic condition is one comparison: a field, an operator, and a value to compare against — e.g. “player.name $eq Scori”.

Group up to 20 single rules with “match any of these” — the group passes as soon as one rule inside it matches. You can’t nest a group inside another group; a group can only hold plain rules.

The trigger’s full condition list is AND across the top level — every entry must pass, including any OR-group:

(rule A) AND (rule B OR rule C) AND (rule D)

$eq / $ne / $has / $lacks are case-sensitive. $contains / $ncontains and $regex are case-insensitive.

Operator Description
$eq Exact match
$ne Not equal
$contains Contains this text (case-insensitive)
$ncontains Does not contain this text (case-insensitive)
$regex Matches this regex pattern (see Regex safety)
$gt Numeric greater-than
$gte Numeric greater-than-or-equal
$lt Numeric less-than
$lte Numeric less-than-or-equal
$has Field is a comma-separated list that includes this value
$lacks Field is a comma-separated list that does not include this value

The numeric operators ($gt/$gte/$lt/$lte) treat both sides as numbers; if a field is missing or not numeric, the condition doesn’t match.

$has / $lacks split the field on commas and check for an exact match within the list — this is how you check roster-group membership on player.groups (e.g. player.groups $has watch).


Regex patterns are checked when you save the trigger and again every time they run:

Limit Value
Max pattern length 256 characters
Max text checked against it 1024 characters (longer input is cut to this length before matching)
Matching mode Case-insensitive, Unicode-aware
Unsafe patterns Rejected at save time — nested repeating groups like (a+)+ or (.*)* are blocked because they can hang the matcher

A pattern that somehow slips through as invalid or unsafe is treated as a non-match at run time rather than failing the trigger.


Item Max
Conditions on a trigger 20
Rules inside one OR-group 20
Conditions on one action 20

Some fields — player.groups, player.game.timePlayed, player.bans.count, player.firstSeen, and any counter.* field — are looked up only when an action actually runs. Because of that they can only be used in a per-action condition (the condition on one action in the actions list), not in the trigger’s top-level conditions — the builder rejects a trigger-level condition that references one of them.

See Event types for the full list of fields available per event.