Zum Inhalt

Command: !ban (Mod-Only)

Permanent-Ban eines Users via Chat-Command. Mit Reason und optionalem Audit-Log.

Voraussetzung: Mod-Permissions (siehe permissions-setup.md) Patterns: Set Argument + If/Else + Ban User + Send Message Sub-Actions: 5-7

Action: [Cmd] !ban

Sub-Action 1: Set Argument — Target säubern

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

Sub-Action 2: If/Else — Kein Target

Feld Wert
Input %targetLogin%
Operation Is Null or Empty

Then-Branch:

Sub-Action 3 (im Then von 2): Send Message + Break

Feld Wert
Message @%user% nutze !ban @username [grund]

Plus Core → Logic → Break.

Sub-Action 4: Set Argument — Reason zusammenbauen

Alles ab %input1% ist der Reason.

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

Pragmatischer Trick: %rawInput% enthält alles nach dem Command. Wir strippen den Target raus, übrig ist der Reason.

Wenn kein Reason → leer.

Sub-Action 5: Set Argument — Default-Reason wenn leer

5. If/Else: %banReason% Is Null or Empty
   └─ Set Argument: banReason = "via !ban command von %userName%"

Sub-Action 6: Ban User

Pfad: Twitch → Moderation → Ban User

Feld Wert
User Login %targetLogin%
Reason %banReason%

Setzt:

Variable Inhalt
%banResult% bool — Erfolg?
%bannedUser% Display Name
%bannedUserName% Login
%bannedUserId% User-ID

Sub-Action 7: If/Else — Fehlgeschlagen

Feld Wert
Input %banResult%
Operation Equals
Value false

Then: Send Message @%user% Ban hat nicht geklappt — User existiert nicht oder schon gebannt. + Break

Sub-Action 8: Send Message — Erfolg

Feld Wert
Message 🔨 @%bannedUser% wurde gebannt. Reason: %banReason%
Send using bot account aktiv

Action-Tree

[Cmd] !ban
├── 1. Set Argument: targetLogin = $replace(%input0%, @, )$
├── 2. If/Else: %targetLogin% Is Null or Empty
│   ├── Send Message: "@%user% nutze !ban @username [grund]"
│   └── Break
├── 3. Set Argument: banReason = $replace(%rawInput%, %input0%, )$
├── 4. If/Else: %banReason% Is Null or Empty
│   └── Set Argument: banReason = "via !ban command von %userName%"
├── 5. Ban User (User Login = %targetLogin%, Reason = %banReason%)
├── 6. If/Else: %banResult% Equals false
│   ├── Send Message: "@%user% Ban hat nicht geklappt..."
│   └── Break
└── 7. Send Message: "🔨 @%bannedUser% wurde gebannt. Reason: %banReason%"

Command-Einstellungen

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

Verwendungsbeispiele

Chat Wer Resultat
!ban @troll Spammer Mod Troll wird gebannt, Reason: "Spammer"
!ban troll Mehr Worte ueber den Reason Mod Reason: "Mehr Worte ueber den Reason"
!ban @troll Mod Reason: "via !ban command von "
!ban Mod Hilfe-Message
!ban @troll Normaler User Permission blockt

Erweiterung: Audit-Log

Ban-Events in eine File schreiben für Audit:

9. Write To File (Core → File I/O → Write To File)
   File: D:\sb-bans.log
   Mode: Append
   Content: [%timestamp%] %userName% bannte %targetLogin% — %banReason%

Erweiterung: Discord-Notification an Mod-Channel

9. Discord Basic Webhook
   URL: <mod-channel-webhook>
   Content: 🔨 **%userName%** bannte **%targetLogin%** — Reason: %banReason%

Häufige Fallen

  • Eigene Mod-Rolle verlieren — User der Mod ist UND gebannt wird, verliert Mod beim Ban. Bei Timeout wird's automatisch wiederhergestellt
  • Selbst-Ban!ban @<broadcaster-name> — Twitch akzeptiert das, du sperrst dich aus deinem eigenen Chat. Filter ggf. einbauen:
    3. If/Else: %targetLogin% Equals (Ignore Case) %broadcastUserName%
       ├── Send Message: "lass den Quatsch"
       └── Break
    
  • Bot-Account bannt sich selbst — wenn Bot mit Mod-Rechten den Bot bannt, ist Bot offline. Filter auf %targetLogin% Equals (Ignore Case) <bot-name>

Quellen