Switch: Multi-Branch ohne If/Else-Kaskade
Prüft einen Wert gegen mehrere Cases. Führt nur die Sub-Actions des matchenden Case aus. Sauberer als eine lange If/Else-Kaskade, wenn du denselben Wert gegen viele Optionen prüfst.
Core Logic SwitchDoku: docs.streamer.bot · Switch
| Feld | Bedeutung | Empfehlung |
|---|---|---|
| Mode | Groups = Cases als Sub-Action-Groups · Set Argument = setzt eine Variable je Case | Groups für unterschiedliche Aktionen, Set Argument für Wert-Mapping |
| Variable | Der Wert der geprüft wird. Unterstützt %arg%, ~global~, $func()$ | z.B. %input0% oder %game% |
| Case Sensitive | Groß-/Kleinschreibung beachten | meist deaktiviert |
| Default | Was passiert wenn kein Case matcht | immer setzen als Fallback |
Mode: Groups (Standard)
Abschnitt betitelt „Mode: Groups (Standard)“Jeder Case ist eine Group mit eigenen Sub-Actions. Nur die matchende Group läuft.
[Cmd] !lang├── 1. Switch (Variable: %input0%, Case Sensitive: aus)│ ├── Case "de":│ │ └── Send Message: "@%user% Sprache auf Deutsch gestellt."│ ├── Case "en":│ │ └── Send Message: "@%user% Language set to English."│ ├── Case "fr":│ │ └── Send Message: "@%user% Langue réglée sur français."│ └── Default:│ └── Send Message: "@%user% Unbekannte Sprache. Verfügbar: de, en, fr"So baust du die Cases:
- Switch-Sub-Action hinzufügen (Core → Logic → Switch)
- Variable setzen (z.B.
%input0%) - Rechtsklick auf den Switch →
Add Case - Case-Wert eingeben (z.B.
de) - Sub-Actions in die Case-Group ziehen
- Wiederholen für jeden Case
- Default-Case nicht vergessen (fängt alles auf)
Mode: Set Argument
Abschnitt betitelt „Mode: Set Argument“Statt Groups setzt Switch direkt eine Variable je Case. Kompakter, wenn du nur einen Wert mappen willst.
[Cmd] !rang├── 1. Switch (Variable: %userLevel%, Mode: Set Argument, Argument: rangName)│ ├── Case "1": "Bronze"│ ├── Case "2": "Silber"│ ├── Case "3": "Gold"│ └── Default: "Unranked"├── 2. Send Message: "@%user% dein Rang ist: %rangName%"Ergebnis: Argument %rangName% Gesetzt vom Switch im Set-Argument-Mode. Enthält den gemappten Wert des matchenden Case.
Variablen-Doku enthält den gemappten Wert.
Switch vs If/Else
Abschnitt betitelt „Switch vs If/Else“| Situation | Besser |
|---|---|
| Einen Wert gegen viele feste Optionen prüfen | Switch |
| Zahlenbereiche prüfen (< 50, < 100, …) | If/Else (Range-Cascade) |
| Nur zwei Möglichkeiten (wahr/falsch) | If/Else |
| Regex oder Contains | If/Else (Switch kann das nicht) |
| Verschiedene Variablen in verschiedenen Checks | If/Else (Switch prüft nur eine) |
Häufige Fallen
Abschnitt betitelt „Häufige Fallen“- Default vergessen: Wenn kein Case matcht und kein Default gesetzt ist, passiert gar nichts (Silent Failure).
- Case Sensitive an:
De≠de. Im Zweifel Case Sensitive deaktivieren. - Leerzeichen im Case-Wert:
" de"≠"de". Trim-Funktion vorher nutzen oder Whitespace vermeiden. - Switch kann keine Ranges: Für numerische Vergleiche (
< 50) bleibt If/Else die richtige Wahl.
Verwendet in
Abschnitt betitelt „Verwendet in“- Rang-/Level-Systeme:
%userLevel%→ unterschiedliche Nachrichten - Multi-Language-Commands:
%input0%→ Sprach-Auswahl - Menü-Commands:
!settings theme dark→ Switch auf%input0%