If/Else — Bedingungen und Range-Cascade
Prüft eine Bedingung. Führt Sub-Actions im Then- oder Else-Branch aus. Das wichtigste Logik-Werkzeug in jeder Action.
Core Logic If/ElseDoku: docs.streamer.bot — If/Else
| Feld | Bedeutung |
|---|---|
| Input | Linke Seite des Vergleichs. Unterstützt %arg%, ~global~, $func()$ |
| Operation | Vergleichsoperator (siehe Tabelle unten) |
| Value | Rechte Seite des Vergleichs |
| Auto Type | Default an. Erkennt automatisch Zahl/Bool/String. Aus = nur String-Vergleich |
Verfügbare Operatoren
Abschnitt betitelt „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, Case 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. Capture-Groups als %match[N]% | ^!give (\d+) |
Less Than | Zahl kleiner (exklusiv) | 5 < 10 |
Greater Than | Zahl größer (exklusiv) | 5 > 2 |
Does Not Exist | Argument-Name ist nicht definiert | rechtes Feld leer |
Is Null or Empty | Wert ist leer oder NULL | Input-Validierung |
Then/Else-Verhalten
Abschnitt betitelt „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 das Action-Ende. Standard: 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 eine Range-Cascade, jedes mit Break im Then-Branch.
Range-Cascade-Pattern (wichtigster Use-Case)
Abschnitt betitelt „Range-Cascade-Pattern (wichtigster Use-Case)“Beispiel !iq: Random-Number 0–200 generieren, dann je nach Wert andere Message.
1. Get Random Number (min=0, max=200)2. If/Else: %randomNumber% Less Than 50 ├─ Send Message: "@%user% du hast nur %randomNumber% IQ. Aua." └─ Break3. If/Else: %randomNumber% Less Than 100 ├─ Send Message: "@%user% %randomNumber% IQ — Durchschnitt halt." └─ Break4. If/Else: %randomNumber% Less Than 150 ├─ Send Message: "@%user% %randomNumber% IQ — schon ganz nice." └─ Break5. Send Message: "@%user% %randomNumber% IQ — Galaxy Brain."Logik:
< 50matcht → 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
Abschnitt betitelt „Empty-Check-Pattern“Bevor du Get User Info for Target aufrufst, sollte Argument %input0% Erstes Argument nach dem Command. Bei !iq @bob ist input0 = '@bob'.
Variablen-Doku validiert sein. 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 Operation "Is Not Null or Empty") ├─ Set Argument: targetLogin = $replace(%input0%, @, )$3. Get User Info for Target (User Login = %targetLogin%)Eleganter: siehe Set Argument Fallback — kürzeres Pattern mit nur einem If/Else.
Reverse via Operation
Abschnitt betitelt „Reverse via Operation“Statt Equals + Else-Branch nutze Not Equals + Then. Oder bau das Inverse direkt mit Does Not Exist / Is Null or Empty. Spart eine Verschachtelungs-Ebene.
Regex-Match-Capture-Groups
Abschnitt betitelt „Regex-Match-Capture-Groups“Bei Regex Match mit Pattern ^!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
Abschnitt betitelt „Häufige Fallen“<=vergessen — Es gibt nurLess Than. Wert + 1.- Auto Type aus, Zahl verglichen —
"10" < "9"wegen String-Sort. - Bool als String —
%isVip%kommt als"True"(kapitalisiert). Wenn Vergleich nicht klappt, mitEquals (Ignore Case)arbeiten oder explizitTrueschreiben.