Zum Inhalt

Command: !duel @user

Zwei User duellieren sich. Bot würfelt, einer gewinnt, einer verliert. Optional mit Per-User-Win/Loss-Counter.

Patterns: Set Argument + Get User Info for Target + Get Random Number + If/Else + Globals Sub-Actions: 8-12

Action: [Cmd] !duel

Sub-Action 1: Set Argument — Target

1. Set Argument: targetLogin = $replace(%input0%, @, )$
2. If/Else: %targetLogin% Is Null or Empty
   ├── Send Message: "@%user% nutze !duel @username"
   └── Break
3. Get User Info for Target (%targetLogin%)
4. If/Else: %addTargetResult% Equals false
   ├── Send Message: "@%user% den User gibt's nicht."
   └── Break

Sub-Action 5: Self-Duel verhindern

5. If/Else: %targetUserName% Equals (Ignore Case) %userName%
   ├── Send Message: "@%user% du kannst dich nicht selbst duellieren."
   └── Break

Sub-Action 6: Get Random Number — 50/50

Feld Wert
Type Between
Min 1
Max 2

Sub-Action 7: If/Else — User gewinnt

7. If/Else: %randomNumber% Equals 1
   ├── 7a. Send Message: "⚔️ @%user% besiegt @%targetUser%! Glorreich."
   ├── 7b. Global (Set) Increment: duelWins = User (redeemer) Persisted
   ├── 7c. Global (Set) Increment: duelLosses = User (target) Persisted
   └── 7d. Break

Sub-Action 8: Send Message — Target gewinnt

8a. Send Message: "⚔️ @%targetUser% besiegt @%user%! Verheerend."
8b. Global (Set) Increment: duelLosses = User (redeemer) Persisted
8c. Global (Set) Increment: duelWins = User (target) Persisted

Action-Tree

[Cmd] !duel
├── 1. Set Argument: targetLogin = $replace(%input0%, @, )$
├── 2. If/Else: %targetLogin% Is Null or Empty
│   ├── Send Message: "@%user% nutze !duel @username"
│   └── Break
├── 3. Get User Info for Target (%targetLogin%)
├── 4. If/Else: %addTargetResult% Equals false
│   ├── Send Message: "@%user% den User gibt's nicht."
│   └── Break
├── 5. If/Else: %targetUserName% Equals %userName%
│   ├── Send Message: "kannst dich nicht selbst duellieren"
│   └── Break
├── 6. Get Random Number (1, 2)
├── 7. If/Else: %randomNumber% Equals 1
│   ├── Send Message: "⚔️ @%user% besiegt @%targetUser%!"
│   ├── Global Set Increment duelWins (User redeemer, Persisted)
│   ├── Global Set Increment duelLosses (User target, Persisted)
│   └── Break
└── 8. Send Message: "⚔️ @%targetUser% besiegt @%user%!"
    + Global Set Increment für Win/Loss

Command-Einstellungen

Feld Wert
Name !duel
Group AzaCraft Fun
Commands !duel
!fight
Sources Twitch Message
Global Cooldown 0
User Cooldown 30

Begleiter-Command: !duelstats

Postet die eigenen Duel-Stats.

[Cmd] !duelstats
├── 1. Global (Get): duelWins (User redeemer, Persisted) → wins
├── 2. Global (Get): duelLosses (User redeemer, Persisted) → losses
└── 3. Send Message: "⚔️ @%user% — %wins% Siege, %losses% Niederlagen."

Verwendungsbeispiele

Chat Resultat
!duel @bob "⚔️ @user besiegt @Bob!" oder umgekehrt
!duel bob gleich
!duel @sich-selbst "kannst dich nicht selbst duellieren"
!duelstats "@user — 5 Siege, 3 Niederlagen."

Erweiterung: Streaks

Nach jedem Win den winStreak Counter hochzählen, bei Loss zurücksetzen:

7a. ... (existing win logic)
7b. Global (Set) Increment: winStreak (User redeemer, Persisted)
... (in loss branch:)
8b. Global (Set) Value: winStreak = 0 (User redeemer, Persisted)

Bei 5+ Streak Special-Message:

+ Global (Get): winStreak (User redeemer) → streak
+ If/Else: %streak% Greater Than 4
  └─ Send Message: "🔥 @%user% hat %streak% Siege in Folge!"

Erweiterung: Reward zum Duellieren

Statt freier Command → nur via Channel-Points-Reward. Spart Spam, macht Duell wertvoll.

Anlegen: Reward Duel mit Streamer für 1000 Channel Points + User-Input (Target-Name).

[Reward] Duel
├── 1. Set Argument: targetLogin = $replace(%rawInput%, @, )$
├── 2. (rest wie !duel)

Häufige Fallen

  • Globals fluten User-Counter — bei vielen Duels wächst der Globals-DB. Streamer.bot handelt das gut, kein Problem bei Tausenden Duels
  • Anti-Harassment — !duel kann von Trolls missbraucht werden um Target zu spammen. Per-User-Cooldown reicht meist, bei wiederholten Beschwerden Mod-Permission setzen
  • Counter-Reset — wenn du Stats zurücksetzen willst → manuell in SB User-Globals-UI oder Clear Non-Persisted User Globals (nur Non-Persisted!) Sub-Action

Quellen