Zum Inhalt springen
  • Dunkel
  • Hell
  • System

If/Else matcht nicht richtig

Dein If/Else nimmt immer den Then-Branch (oder immer den Else-Branch), obwohl die Bedingung „eigentlich“ stimmen sollte.

  1. Log-Pane öffnen
  2. Command/Event auslösen
  3. Schauen ob [INFO] If/Else: True oder False steht
  4. Daneben steht der tatsächliche Input-Wert: stimmt er mit dem überein was du erwartest?
UrsacheSymptomFix
Variable case-sensitive%isVip% ist "True", Vergleich gegen "true"Equals (Ignore Case) nutzen oder True schreiben
Auto Type aus"10" < "9" (String-Vergleich statt Zahl)Auto Type aktivieren (Checkbox im If/Else)
Variable nicht gesetzt%meinWert% ist leer → vergleicht leeren StringVorher mit Is Null or Empty prüfen
Operator verwechseltLess Than statt Greater ThanOperator nochmal lesen
Kein ≤ OperatorEs gibt kein “Less Than or Equal”Less Than mit Wert + 1: statt <= 10< 11

Viele SB-Variablen geben Bools als kapitalisierte Strings zurück: "True" / "False" (nicht "true" / "false").

❌ If/Else: %isVip% Equals "true" → FALSCH (case mismatch)
✅ If/Else: %isVip% Equals "True" → richtig
✅ If/Else: %isVip% Equals (Ignore Case) "true" → richtig

Wenn Auto Type deaktiviert ist, vergleicht SB alles als String. String-Sortierung: "10" < "9" (weil "1" < "9").

❌ Auto Type aus: %randomNumber% Less Than 50
→ "100" < "50" = true (String-Vergleich!)
✅ Auto Type an: %randomNumber% Less Than 50
→ 100 < 50 = false (Zahlen-Vergleich)

Regel: Auto Type fast immer aktiviert lassen.

Wenn eine Variable nicht gesetzt wurde, ist der Input-String leer. Less Than auf leeren String vs Zahl → undefined Verhalten.

✅ Prüfung vorschalten:
If/Else: %meinWert% Does Not Exist → Send Error + Break
If/Else: %meinWert% Less Than 50 → (jetzt sicher dass Variable existiert)

Bei Regex Match ist der Input der GANZE Text und der Value die Regex. Nicht umgekehrt.

❌ Input: ^!give (\d+)$ Value: %rawInput% → falsch herum
✅ Input: %rawInput% Value: ^!give (\d+)$ → richtig