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: - Bot-Account bannt sich selbst — wenn Bot mit Mod-Rechten den Bot bannt, ist Bot offline. Filter auf
%targetLogin% Equals (Ignore Case) <bot-name>