Zum Inhalt

Command: !rps (Rock Paper Scissors)

Schere-Stein-Papier. User wählt mit !rps schere/stein/papier, Bot würfelt eigenen Wert und vergleicht.

Patterns: If/Else (Input validieren) + Get Random Number + If/Else (Vergleich) + Send Message Sub-Actions: 8-10

Action: [Cmd] !rps

Sub-Action 1: Set Argument — User-Wahl normalisieren

Feld Wert
Variable Name userChoice
Value $lower(%input0%)$

Sub-Action 2: If/Else — Gültige Wahl?

Wir akzeptieren schere, stein, papier (auch s, p als Shortcut wäre möglich, aber lassen wir's klar).

If/Else: %userChoice% Regex Match ^(schere|stein|papier)$

Wenn NICHT match: Then-Branch mit Hilfe + Break.

Sub-Action 3 (im Then von 2): Hilfe

3a. Send Message: "@%user% nutze !rps schere | stein | papier"
3b. Break

Sub-Action 4: Get Random Number — Bot-Wahl

Feld Wert
Type Between
Min 1
Max 3

%randomNumber% ist 1, 2 oder 3.

Sub-Action 5: Set Argument — Bot-Wahl als Text

5. If/Else: %randomNumber% Equals 1
   └─ Set Argument: botChoice = schere
6. If/Else: %randomNumber% Equals 2
   └─ Set Argument: botChoice = stein
7. If/Else: %randomNumber% Equals 3
   └─ Set Argument: botChoice = papier

Sub-Action 6: If/Else — Unentschieden

8. If/Else: %userChoice% Equals %botChoice%
   ├── Send Message: "🤝 @%user% Bot hat auch %botChoice% — Unentschieden!"
   └── Break

Sub-Action 7: If/Else — User gewinnt

Schere schlägt Papier, Stein schlägt Schere, Papier schlägt Stein. Drei Win-Conditions:

9. If/Else: %userChoice% Equals schere
   └─ If/Else: %botChoice% Equals papier
      ├── Send Message: "✂️ @%user% Schere schlägt Papier — du gewinnst!"
      └── Break

10. If/Else: %userChoice% Equals stein
    └─ If/Else: %botChoice% Equals schere
       ├── Send Message: "🪨 @%user% Stein schlägt Schere — du gewinnst!"
       └── Break

11. If/Else: %userChoice% Equals papier
    └─ If/Else: %botChoice% Equals stein
       ├── Send Message: "📄 @%user% Papier schlägt Stein — du gewinnst!"
       └── Break

Sub-Action 8: Send Message — Bot gewinnt (Default)

Wenn keine der Win-Conditions matcht und nicht Unentschieden → Bot gewinnt.

12. Send Message: "💀 @%user% Bot hatte %botChoice%, du hattest %userChoice% — Bot gewinnt!"

Action-Tree

[Cmd] !rps
├── 1. Set Argument: userChoice = $lower(%input0%)$
├── 2. If/Else: %userChoice% Regex Match ^(schere|stein|papier)$
│   (NICHT match → Hilfe-Branch via 2.Else, was wir hier oben anders aufbauen)
├── (Validation via If/Else mit "Is Null or Empty" als simpler Check)
├── 3. Get Random Number (1, 3)
├── 4-6. Bot-Wahl als Text setzen
├── 7. Unentschieden-Check
├── 8-10. Win-Conditions
└── 11. Default: Bot gewinnt

Vereinfachte Validation (statt Regex)

Streamer.bot If/Else hat kein direktes "NOT match" für Regex einfach. Pragmatisch mit 3 If/Else als "Whitelist":

1. Set Argument: validChoice = false
2. If/Else: %userChoice% Equals schere
   └─ Set Argument: validChoice = true
3. If/Else: %userChoice% Equals stein
   └─ Set Argument: validChoice = true
4. If/Else: %userChoice% Equals papier
   └─ Set Argument: validChoice = true
5. If/Else: %validChoice% Equals false
   ├── Send Message: "@%user% nutze !rps schere | stein | papier"
   └── Break

Etwas verbose aber funktioniert garantiert.

Command-Einstellungen

Feld Wert
Name !rps
Group AzaCraft Fun
Commands !rps
!ssp (schere-stein-papier deutsch)
!rockpaperscissors
Sources Twitch Message
Global Cooldown 0
User Cooldown 15

Verwendungsbeispiele

Chat Resultat
!rps schere "🤝 @user Bot hat auch schere — Unentschieden!" oder Win/Loss
!rps Stein (case-insensitive durch $lower()$)
!rps banana "@user nutze !rps schere
!rps gleiches

Erweiterung: Per-User-Stats

Win/Loss/Draw pro User tracken:

+ Global (Set) Increment: rpsWins / rpsLosses / rpsDraws je nach Outcome
+ User (redeemer) Persisted

Plus separater Command !rpsstats der Win/Loss-Ratio postet (siehe Globals Pattern).

Quellen