Zum Inhalt

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:

  1. Action öffnen
  2. Sub-Actions die zur Zufallsauswahl gehören sollen markieren (Strg+Klick mehrere)
  3. Rechtsklick → Group
  4. Group bekommt einen Namen (z.B. Random Roses)
  5. Rechtsklick auf die Group → Random aktivieren (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:

  1. Rechtsklick auf eine Sub-Action INNERHALB der Random-Group
  2. Weight setzen (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