Zum Inhalt

Command: !timeout (Mod-Only)

Temporärer Timeout. !timeout @user 30 = 30 Sekunden Chat-Sperre. Mods werden nach Ablauf automatisch wieder Mod.

Voraussetzung: Mod-Permissions Patterns: Set Argument + If/Else + Timeout User + Send Message Sub-Actions: 6-8

Action: [Cmd] !timeout

Sub-Action 1: Set Argument — Target

Feld Wert
Variable Name targetLogin
Value $replace(%input0%, @, )$

Sub-Action 2: If/Else — Target leer

Feld Wert
Input %targetLogin%
Operation Is Null or Empty

Then: Send Message + Break.

Feld Wert
Message @%user% nutze !timeout @user [sekunden] [grund]

Sub-Action 3: Set Argument — Duration

%input1% ist die Dauer in Sekunden.

Feld Wert
Variable Name duration
Value %input1%

Sub-Action 4: If/Else — Duration leer / kein Zahl

Feld Wert
Input %duration%
Operation Is Null or Empty

Then: Set Argument duration = 600 (Default = 10 Minuten).

Sub-Action 5: Set Argument — Reason

Feld Wert
Variable Name reason
Value $replace(%rawInput%, %input0% %input1%, )$

Strippt Target und Duration aus rawInput, übrig bleibt der Rest = Reason.

6. If/Else: %reason% Is Null or Empty
   └─ Set Argument: reason = "via !timeout von %userName%"

Sub-Action 6: Timeout User

Pfad: Twitch → Moderation → Timeout User

Feld Wert
User Login %targetLogin%
Duration %duration%
Reason %reason%

Setzt:

Variable Inhalt
%timeoutResult% bool
%timedOutUser% Display Name
%timedOutUserName% Login

Sub-Action 7: If/Else — Fehlgeschlagen

7. If/Else: %timeoutResult% Equals false
   ├── Send Message: "@%user% Timeout hat nicht geklappt."
   └── Break

Sub-Action 8: Send Message — Erfolg

Feld Wert
Message ⏱️ @%timedOutUser% — %duration%s Timeout. Reason: %reason%
Send using bot account aktiv

Action-Tree

[Cmd] !timeout
├── 1. Set Argument: targetLogin = $replace(%input0%, @, )$
├── 2. If/Else: %targetLogin% Is Null or Empty
│   ├── Send Message: "@%user% nutze !timeout @user [sekunden] [grund]"
│   └── Break
├── 3. Set Argument: duration = %input1%
├── 4. If/Else: %duration% Is Null or Empty
│   └── Set Argument: duration = 600
├── 5. Set Argument: reason = $replace(%rawInput%, %input0% %input1%, )$
├── 6. If/Else: %reason% Is Null or Empty
│   └── Set Argument: reason = "via !timeout von %userName%"
├── 7. Timeout User (Login = %targetLogin%, Duration = %duration%, Reason = %reason%)
├── 8. If/Else: %timeoutResult% Equals false
│   ├── Send Message: "@%user% Timeout hat nicht geklappt."
│   └── Break
└── 9. Send Message: "⏱️ @%timedOutUser% — %duration%s Timeout. Reason: %reason%"

Command-Einstellungen

Feld Wert
Name !timeout — Mod Timeout
Group AzaCraft Mod
Commands !timeout
!to
Location Start
Sources Twitch Message
Global Cooldown 0
User Cooldown 5
Grant Type Allow
Groups Moderators

Duration-Werte (Sekunden)

Dauer Wert
5 Min 300
10 Min 600 (Default)
30 Min 1800
1 Stunde 3600
1 Tag 86400
Permanent (de-facto Ban) 0

Twitch-Max: 14 Tage = 1209600.

Verwendungsbeispiele

Chat Resultat
!timeout @troll 30 spam 30s, Reason "spam"
!to @troll 600 10 Min, Default-Reason
!timeout @troll Default 10 Min, Default-Reason
!timeout @troll 0 schwerwiegend Permanent (wie Ban)
!to Hilfe-Message

Erweiterung: Quick-Aliase für Standard-Durationen

Statt jedes Mal Sekunden tippen, Shortcut-Commands:

Command Was er macht
!to30 @user [grund] 30 Sekunden
!to10m @user [grund] 10 Minuten
!to1h @user [grund] 1 Stunde
!to24h @user [grund] 24 Stunden

Pro Variante eine eigene Command-Action. Variable duration fest im Action-Argument setzen.

Häufige Fallen

  • Duration als String statt Zahl — bei %duration% = "30s" (mit Buchstaben) schlägt's fehl. Wir parsen nur Zahlen
  • Mod-Mod-Timeout — Mod wird kurz unmoded, nach Ablauf automatisch remoded. Wird in Logs als "Mod removed" und "Mod added" geloggt
  • Duration > 14 Tage — Twitch nimmt's nicht an. timeoutResult = false
  • Eigene Logik selbst-loggen — Timeout-Events gehen in Twitch-Mod-Log, aber nicht in dein eigenes Audit. Optional separat in File schreiben

Quellen