Zum Inhalt springen

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/Else

Doku: docs.streamer.bot — If/Else

FeldBedeutung
InputLinke Seite des Vergleichs. Unterstützt %arg%, ~global~, $func()$
OperationVergleichsoperator (siehe Tabelle unten)
ValueRechte Seite des Vergleichs
Auto TypeDefault an. Erkennt automatisch Zahl/Bool/String. Aus = nur String-Vergleich
OperatorWas er prüftBeispiel
EqualsExakt gleich5 == 5
Not EqualsNicht gleich5 != 4
Equals (Ignore Case)String gleich, Case egalBob == bob
Not Equals (Ignore Case)String ungleich, Case egal
ContainsLinker enthält Rechten als Teilstring"hallo welt" contains "welt"
Regex MatchLinker matcht Regex Rechts. Capture-Groups als %match[N]%^!give (\d+)
Less ThanZahl kleiner (exklusiv)5 < 10
Greater ThanZahl größer (exklusiv)5 > 2
Does Not ExistArgument-Name ist nicht definiertrechtes Feld leer
Is Null or EmptyWert ist leer oder NULLInput-Validierung

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.

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."
└─ 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)

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.

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.

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

VariableInhalt
%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%.

  • <= vergessen — Es gibt nur Less 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, mit Equals (Ignore Case) arbeiten oder explizit True schreiben.