Zum Inhalt springen

!rps

Wir akzeptieren schere, stein, papier. Validierung mit Whitelist statt Regex (zuverlässiger), Bot würfelt 1–3 als Index, Vergleich erfolgt im Cascade.

Set Argument — User-Wahl normalisieren

Core Arguments Set Argument

Lowercased Input für case-insensitive Vergleich.

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

Whitelist-Validation

Core Arguments Set Argument

Erst validChoice = false, dann 3 If/Else (Equals schere/stein/papier), die jeweils validChoice = true setzen. Wenn validChoice am Ende false → Hilfe + Break.

Initial Set Argument: validChoice = false
Then für jede Wahl Set Argument: validChoice = true
Fail-Branch If validChoice Equals false → Send Message Hilfe + Break

Get Random Number — Bot-Wahl

Core Logic Get Random Number

1 = schere, 2 = stein, 3 = papier.

Type Between
Min 1
Max 3

Bot-Wahl als Text mappen

Core Logic If/Else (×3)

Drei If/Else-Blöcke die je nach %randomNumber% den Wert botChoice = schere/stein/papier setzen.

If/Else — Unentschieden

Core Logic If/Else

Wenn gleicher Wert → Tie-Message + Break.

Input %userChoice%
Operation Equals
Value %botChoice%

Win-Conditions (3 verschachtelte If/Else)

Core Logic If/Else

Schere schlägt Papier, Stein schlägt Schere, Papier schlägt Stein. Pro Win: Send Message + Break.

Send Message — Bot gewinnt (Default)

Twitch Chat Send Message to Channel

Wenn keine Win-Condition gematcht hat und kein Tie war, gewinnt Bot.

Message 💀 @%user% Bot hatte %botChoice%, du hattest %userChoice% — Bot gewinnt!
AzaBot: ✂️ @%user% Schere schlägt Papier — du gewinnst!
So sieht's im Chat aus
  1. 1 Set Argument: userChoice = $lower(%input0%)$
  2. 2 Whitelist-Validation (validChoice via 3× If/Else, Fail → Hilfe + Break)
  3. 3 Get Random Number (1, 3)
  4. 4 Bot-Wahl mappen (3× If/Else → botChoice = schere/stein/papier)
  5. 5 If/Else: %userChoice% Equals %botChoice%
    1. Then 5a Send Message: "🤝 @%user% Unentschieden!"
    2. Then 5b Break
  6. 6 Win-Conditions (Schere>Papier, Stein>Schere, Papier>Stein) je mit Send Message + Break
  7. 7 Send Message: "💀 @%user% Bot hatte %botChoice% — Bot gewinnt!" Default

Streamer.bot If/Else hat kein einfaches „NOT match” für Regex. Pragmatisch via 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.

FeldWert
Name!rps
GroupAzaCraft Fun
Commands!rps
!ssp
!rockpaperscissors
SourcesTwitch Message
Global Cooldown0
User Cooldown15
ChatResultat
!rps schere„🤝 Unentschieden!” oder Win/Loss
!rps SteinCase-insensitive durch $lower()$
!rps banana„@user nutze !rps schere
!rpsGleich

Win/Loss/Draw pro User tracken:

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

Separater Command !rpsstats postet die Win/Loss-Ratio (siehe Globals Pattern).