Pattern: Random Group — Zufalls-Auswahl ohne C¶
Streamer.bot hat keine separate "Random"-Sub-Action. Stattdessen markierst du eine Group als Random und SB führt nur EINE ihrer Sub-Actions zufällig aus.
Doku: https://docs.streamer.bot/faq/random-subaction
Zwei Varianten¶
Variante A: Ganze Action als Random¶
Rechtsklick auf die Action (im Actions-Pane) → Random aktivieren. Dann wird beim Triggern NUR EINE zufällige Sub-Action ausgeführt (statt alle nacheinander).
Nachteil: keine Sub-Actions außerhalb der Random-Auswahl möglich. Für komplexere Commands ungeeignet.
Variante B: Group innerhalb der Action als Random (empfohlen)¶
Mehrere Sub-Actions in eine Group packen, Group als Random markieren. Sub-Actions VOR und NACH der Group laufen normal.
So baust du das:
- Action öffnen
- Sub-Actions die zur Zufallsauswahl gehören sollen markieren (Strg+Klick mehrere)
- Rechtsklick →
Group - Group bekommt einen Namen (z.B.
Random Roses) - Rechtsklick auf die Group →
Randomaktivieren (Checkmark erscheint)
Im Action-Tree sieht das so aus:
[Cmd] !rose
├── 1. Get User Info for Target
├── 2. Group [Random]: Random Roses
│ ├── Send Message: "Variante 1..."
│ ├── Send Message: "Variante 2..."
│ ├── Send Message: "Variante 3..."
│ └── Send Message: "Variante 4..."
└── 3. (irgendwas danach, läuft immer)
Weights setzen (optional)¶
Standard: jede Sub-Action in der Random-Group hat die gleiche Wahrscheinlichkeit. Wenn du eine Variante seltener machen willst:
- Rechtsklick auf eine Sub-Action INNERHALB der Random-Group
Weightsetzen (default 1, höher = wahrscheinlicher)
Beispiel: 3 Sub-Actions mit Weights 1/1/3 → die dritte zieht doppelt so oft wie die anderen beiden zusammen.
Beispiel-Anleitung: !rose Random Output¶
!rose @user sagt mal "@bob bekommt eine Rose", mal "@bob hat 100 Rosen geschickt", mal "Rose explodiert" — zufällig.
[Cmd] !rose
├── 1. If/Else: %input0% Is Null or Empty
│ └─ Set Argument: targetLogin = %userName%
│ Break
├── 2. Set Argument: targetLogin = $replace(%input0%, @, )$
├── 3. Get User Info for Target (User Login = %targetLogin%)
├── 4. Group [Random]: Rose Punchlines
│ ├── Send Message: "@%user% gibt @%targetUser% eine Rose. 🌹"
│ ├── Send Message: "@%user% wirft @%targetUser% 100 Rosen ins Gesicht. Romantik."
│ ├── Send Message: "Die Rose von @%user% an @%targetUser% explodiert. Niemand weiß warum."
│ ├── Send Message: "@%user% pflückt eine Rose für @%targetUser%. Sehr edel."
│ └── Send Message: "@%user% gibt @%targetUser% eine Plastik-Rose. Geizhals."
└── (Action endet)
Jeder !rose @bob zieht eine der fünf Messages.
Sub-Actions als Group Sub-Actions¶
Eine Group kann mehrere Sub-Actions enthalten die zusammen laufen sollen wenn die Group gezogen wird. Beispiel: Random-Variante mit Sound + Message + OBS-Filter.
Group [Random]: Lucky Reactions
├── Sub-Group: "Jackpot"
│ ├── Play Sound: jackpot.mp3
│ ├── Send Message: "@%user% jackpot 🎰"
│ └── Set Source Visibility: OBS Confetti = visible für 3s
├── Sub-Group: "Pech"
│ ├── Send Message: "@%user% nope"
│ └── Play Sound: sad.wav
└── (weitere Sub-Groups)
Trick: Die "Sub-Group" ist einfach eine normale Group (ohne Random) innerhalb der Random-Group. Wird sie gezogen, laufen alle ihre Sub-Actions.
Häufige Fallen¶
- Random-Toggle nicht gesetzt → alle Sub-Actions laufen nacheinander (Group ist normal)
- Sub-Actions außerhalb der Group → laufen normal vor/nach der Group, NICHT als Teil der Zufallsauswahl
- Weights aller Sub-Actions = 0 → Streamer.bot weiß nicht was wählen, undefined Verhalten
Verwendung in Commands¶
- commands/05-rose-random-target.md — Random Punchlines mit Target