Zum Inhalt

Sub-Action Weight — Dynamische Random-Verteilung

In einer Random-Group hat jede Sub-Action standardmäßig Weight 1. Per Sub-Action kannst du Weights zur Laufzeit anpassen — z.B. Subs sehen besondere Varianten häufiger.

Sub-Action: Core → Actions → Set Sub-Action Weight Doku: https://docs.streamer.bot/api/sub-actions/core/actions/set-sub-action-weight

Felder

Feld Bedeutung
Action Parent-Action mit Random-Group
Sub-Action Welche Sub-Action in der Group
Weight Neuer Wert (höher = häufiger)

Voraussetzung: Action oder Group muss als Random konfiguriert sein, sonst wirkt Weight nicht.

Beispiel: !rose mit Sub-Hervorhebung

In der [Cmd] !rose Action (siehe !rose Doku) gibt's eine Random-Group "Rose Punchlines".

Wenn Sub-User !rose nutzt, sollen Premium-Varianten häufiger kommen.

[Cmd] !rose
├── 1-4. (existing target-resolution)
├── 5. If/Else: %isSubscribed% Equals true
│   ├── Set Sub-Action Weight: Sub-Action "Premium Rose 1" Weight = 5
│   ├── Set Sub-Action Weight: Sub-Action "Premium Rose 2" Weight = 5
│   └── (Default-Roses bleiben Weight 1)
├── 6. (Default: Sub-Actions auf Weight 1 zurücksetzen für Non-Subs)
└── 7. Group [Random]: Rose Punchlines (mit modifizierten Weights)

Bei Sub gewichtet Premium-Varianten 5:1 gegenüber Standard.

Use-Case: Time-of-Day-abhängige Varianten

Am Stream-Anfang Welcome-Varianten favorisieren, später andere:

[Event] First-Time-Chatter
├── 1. Set Argument: hour = $date(now, HH)$
├── 2. If/Else: %hour% Less Than 18
│   ├── Set Sub-Action Weight: "Welcome Morning Variant" Weight = 5
│   └── Break
├── 3. Set Sub-Action Weight: "Welcome Evening Variant" Weight = 5
├── 4. (oder Sets via separate Sub-Actions je Tageszeit)
└── 5. Group [Random]: Welcome Varianten

Use-Case: Streak-basierte Wahrscheinlichkeit

Wenn User !iq bereits 5× am Tag gespielt hat — andere Sprüche zeigen:

[Cmd] !iq
├── 1. Global (Get): iqCount (User redeemer, Persisted) → count
├── 2. If/Else: %count% Greater Than 4
│   ├── Set Sub-Action Weight: "Sarcastic Variant" Weight = 10
│   └── Set Sub-Action Weight: "Standard Variant" Weight = 1
├── 3. Global (Set) Increment: iqCount (User redeemer, Persisted)
├── 4. Get Random Number (0, 200)
├── 5. (Range-Cascade mit gewichteten Random-Varianten)

Bei wiederholtem Spam wird der Bot zunehmend sarkastisch.

Weight = 0 = nie

Eine Sub-Action mit Weight 0 wird in der Random-Group NIE gezogen. Praktisch zum "Temporär ausschließen":

[Sys] Disable Halloween Variant
└── Set Sub-Action Weight: "Halloween Rose" Weight = 0

Bei Halloween wieder aktivieren:

[Sys] Enable Halloween
└── Set Sub-Action Weight: "Halloween Rose" Weight = 3

Pro-Tipp: Reset-Helper

Wenn Weights dynamisch geändert werden, ist gute Idee, ein Reset-Pattern:

Action: [Sys] Reset !rose Weights

└── Set Sub-Action Weight: jede Variante zurück auf Weight 1

Vor jedem Sub-Hype-Check Weight resetten, dann optional Boost setzen:

[Cmd] !rose
├── 1. Run Action: Reset !rose Weights (Immediately ✅)   ← Reset
├── 2. (Sub-Boost-Logic)
└── 3. Random-Group

Sonst akkumulieren Weights über die Zeit und werden komisch.

Variante: Action Random aktivieren

Statt Random-Group kannst du die ganze Action als Random markieren: - Rechtsklick auf Action im Actions-Pane → Random ✅

Dann läuft nur EINE Sub-Action statt alle. Mit Weight kannst du Verteilung dynamisieren.

Häufige Fallen

  • Weight ohne Random-Group — wirkt nicht. Group/Action muss explizit Random
  • Weight-Akkumulation — wenn jedes Mal +1, irgendwann nur noch eine Variante. Reset-Pattern nutzen
  • Negative Weights — undefined behavior. Bei 0 sicher, drüber zählt
  • Sub-Action umbenannt — Weight-Setting referenziert by Name. Wenn Sub-Action umbenannt, Weight-Sub-Action breakt
  • Zu viele Weight-Sets im Cascade — bei 10+ wird's unübersichtlich. Helper-Actions für Reset + Set in eigene Subs

Quellen