Zum Inhalt

Pattern: If/Else — Bedingungen und Range-Cascade

Core → Logic → If/Else. Prüft eine Bedingung, führt Sub-Actions im Then- oder Else-Branch aus.

Doku: https://docs.streamer.bot/api/sub-actions/core/logic/if-else

Felder

Feld Bedeutung
Input Linke Seite des Vergleichs. Argument oder Wert. Unterstützt %arg%, ~global~, $func()$
Operation Vergleichsoperator (siehe Tabelle unten)
Value Rechte Seite des Vergleichs
Auto Type Toggle, default an. Erkennt automatisch ob Zahl/Bool/String. Aus = nur String-Vergleich

Verfügbare Operatoren

Operator Was er prüft Beispiel
Equals Exakt gleich 5 == 5
Not Equals Nicht gleich 5 != 4
Equals (Ignore Case) String gleich, Groß/Klein egal Bob == bob
Not Equals (Ignore Case) String ungleich, Case egal
Contains Linker enthält Rechten als Teilstring "hallo welt" contains "welt"
Regex Match Linker matcht Regex Rechts. Bietet Capture-Groups als %match[N]% ^!give (\d+)
Less Than Zahl kleiner (EXCLUSIV) 5 < 10
Greater Than Zahl größer (EXCLUSIV) 5 > 2
Does Not Exist Argument-Name ist nicht definiert rechtes Feld leer
Is Null or Empty Wert ist leer oder NULL für Input-Validierung

Wichtig: Es gibt KEIN Less Than or Equal. Workaround: Less Than mit Wert+1. Statt <= 10 schreib < 11.

Then/Else Verhalten

Wenn die Bedingung wahr ist, laufen die Sub-Actions die NACH dem If/Else stehen — bis ein weiteres If/Else, eine Group oder Action-Ende. Standard ist: alle nachfolgenden Sub-Actions laufen, wenn nichts den Flow unterbricht.

Genauer Mechanismus in Streamer.bot v1.0.4: Wenn If/Else nicht matcht und du Break aktiviert hast → Action endet. Üblicherweise nutzt man mehrere If/Else hintereinander für Range-Cascade, jedes mit Break im Then-Branch.

Range-Cascade Pattern (wichtigster Use-Case)

Beispiel !iq: Random Number 0-200 generieren, dann je nach Wert andere Message.

Reihenfolge im Action-Tree:

1. Get Random Number (min=0, max=200)
2. If/Else: %randomNumber% Less Than 50
   ├─ Send Message: "@%user% du hast nur %randomNumber% IQ. Aua."
   └─ Break
3. If/Else: %randomNumber% Less Than 100
   ├─ Send Message: "@%user% %randomNumber% IQ — Durchschnitt halt."
   └─ Break
4. If/Else: %randomNumber% Less Than 150
   ├─ Send Message: "@%user% %randomNumber% IQ — schon ganz nice."
   └─ Break
5. Send Message: "@%user% %randomNumber% IQ — Galaxy Brain."

Logik: - < 50 matcht → Message + Break → Action endet - Sonst weiter zu < 100 - Sonst weiter zu < 150 - Letzter Send Message ist der Default für alles ≥ 150 (kein If/Else davor)

Empty-Check Pattern

Bevor du Get User Info for Target aufrufst musst du sicherstellen dass %input0% nicht leer ist. Sonst läuft die Sub-Action ins Leere.

1. If/Else: %input0% Is Null or Empty
   ├─ Set Argument: targetLogin = %userName%   (Sender als Fallback)
   └─ (kein Break — fällt durch)
2. If/Else: %input0% Is Null or Empty (mit "Not")
   ├─ Set Argument: targetLogin = $replace(%input0%, @, )$
   └─
3. Get User Info for Target (User Login = %targetLogin%)

Schöner: Set Argument mit Default zuerst, dann nur überschreiben wenn nicht leer. Aber Streamer.bot hat kein direktes "If Not" — also entweder zwei If/Else oder Operations-Toggle benutzen (siehe nächster Abschnitt).

Reverse via Operation

Statt Equals+Else nutze Not Equals+Then. Oder du baust das Inverse mit Does Not Exist / Is Null or Empty und nutzt nur den Then-Pfad.

Regex Match Capture-Groups

Bei Regex Match mit Pattern wie ^!give (\d+) (\w+)$:

Variable Inhalt
%match.count% Anzahl der Capture-Groups (hier 2)
%match[0]% Komplette Match-Range
%match[1]% Erste Group (\d+)
%match[2]% Zweite Group (\w+)

Plus Named Captures: (?<amount>\d+) ergibt %amount%.

Häufige Fallen

  • Less Than or Equal vergessen → Es gibt es nicht. Wert+1
  • Auto Type aus, Zahl verglichen → "10" < "9" weil String-Sort
  • Bool als String%isVip% als String "True" (kapitalisiert). Wenn Vergleich nicht klappt, mit Equals (Ignore Case) arbeiten oder explizit True schreiben

Verwendung in Commands