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":
Bei Halloween wieder aktivieren:
Pro-Tipp: Reset-Helper¶
Wenn Weights dynamisch geändert werden, ist gute Idee, ein Reset-Pattern:
Action: [Sys] Reset !rose Weights¶
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
0sicher, 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¶
- Set Sub-Action Weight: https://docs.streamer.bot/api/sub-actions/core/actions/set-sub-action-weight
- Random Group Pattern: patterns/04-random-group.md