Zum Inhalt springen
  • Dunkel
  • Hell
  • System

!commands (dynamisch)

!commands

Einsteiger

!cmds !cmdlist

Liest dyn_dynCommandsIndex und gibt die Liste im Chat aus. Index wird beim Add/Del automatisch gepflegt.

Steps
4
Cooldown
15s/User
Cooldown
0sglobal
Zugriff
Public

Get Global. Index laden

Core Globals Global (Get)
Global Name dyn_dynCommandsIndex
Variable Name cmdIndex
Persisted aktiv

If/Else: Index leer?

Core Logic If/Else
Input %cmdIndex%
Operation Is Null or Empty
Then

Send Message to Channel

Twitch Chat Send Message to Channel
Message 📭 Noch keine dynamischen Commands. Mods können mit !addcommand !name <text> welche anlegen.
Then

Break

Core Logic Break

Stoppt die laufende Action. Alle folgenden Sub-Actions in derselben Action werden übersprungen.

Set Argument: Liste formatieren

Core Arguments Set Argument

Komma-Liste in space + !-Prefix umwandeln: regeln,setup,tipp → !regeln !setup !tipp

Variable Name cmdList
Value $concat("!", $replace(%cmdIndex%, ",", " !"))$

Send Message: Liste posten

Twitch Chat Send Message to Channel
Message 🤖 Dynamische Commands: %cmdList%
AzaBot: 🤖 Dynamische Commands: !regeln !setup !tipp !wasser
So sieht's im Chat aus
  1. 1 Get Global (Persisted): dyn_dynCommandsIndex → cmdIndex
  2. 2 If/Else: %cmdIndex% Is Null or Empty
    1. Then 2a Send Message: Noch leer
    2. Then 2b Break
  3. 3 Set Argument: cmdList = $concat("!", $replace(...))
  4. 4 Send Message: 🤖 Dynamische Commands: %cmdList%
FeldWert
Name[Cmd] !commands (dyn)
Commands!commands
!cmds
!cmdlist
User Cooldown15
Global Cooldown0
Grant TypeAllow
Groups(leer = everyone)

Wenn du das !commands aus Commands · Standard schon hast, gibt es drei Wege:

VarianteWieWann nutzen
A) Beide nebeneinanderStatisches !commands für Hauptcommands, dynamisches Alias !modcommands oder !extrasWenn du Klarheit willst: was ist „offiziell“, was ist „von Mods“
B) Statisch ersetzenStatisches !commands löschen, nur die dynamische Action behalten. Index manuell mit allen Hauptcommands befüllenWenn alles über Persisted Globals laufen soll
C) Statisch + AppendIm statischen !commands als letzten Schritt einen Run Action auf die dynamische Action mit Trigger Manual: gibt beide Zeilen im Chat ausWenn die feste Liste der Anker bleibt und Dynamic nur ergänzt

Variante C ist die häufigste Wahl. Siehe !commands Standard → Erweiterungs-Ideen für das Run Action-Pattern.

ChatResultat
!commands (Index leer)📭 Noch keine dynamischen Commands. Mods können mit !addcommand !name <text> welche anlegen.
!commands (Index: regeln,setup,tipp)🤖 Dynamische Commands: !regeln !setup !tipp
!cmdsIdentisch. Alias-Trigger
  • Twitch-500-Char-Limit: bei 30+ dynamischen Commands wird die Zeile zu lang. Wenn das passiert: in Schritt 3 nach $substring(%cmdList%, 0, 480)$ umstellen oder auf einen !cmds page=2-Pattern erweitern (zweiter Set Argument der ab Index 480 weitermacht).
  • Index outdated: falls jemand manuell einen dyn_*-Global im SB-UI gelöscht hat, ohne !delcommand zu nutzen, steht der Name noch im Index aber !name triggert nichts (Listener findet keinen Global). Lösung: !delcommand !name aus dem Chat: Index wird bereinigt.
  • Sortierung: Commands werden in Anlege-Reihenfolge gepostet, weil neue Adds einfach angehängt werden. Wer Alphabet will, müsste das mit C# Execute Code sortieren (var parts = args["cmdIndex"].ToString().Split(',').OrderBy(s => s); CPH.SetArgument("cmdList", string.Join(" !", parts));).
  • Doppel-Einträge im Index: kann durch Race-Conditions theoretisch passieren. $replace deduped nicht. Bei Bedarf in Schritt 3 mit C# Distinct() filtern.
  • Whisper statt Chat: bei >20 dynamischen Commands lieber Twitch > Chat > Whisper an %user% statt Chat-Spam.
  • Web-Page: alle dyn_*-Globals via Streamer.bot Web-Server als JSON exposen und eine kleine Static-Page auf commands.dein-channel.de rendern. Mods können Texte dort einsehen ohne in den Chat schreiben.
  • Suche: !cmds search wasser → nur Commands, die wasser im Namen oder Response enthalten. Braucht C# Execute, weil über alle dyn_*-Globals iteriert werden muss.
PageWas es macht
SetupUniversal-Listener + Storage-Pattern
!addcommandNeuen Command anlegen
!editcommandBestehenden überschreiben
!delcommandLöschen
!commands (statisch)Hartkodierte Liste der Hauptcommands
Tawmae Loyalty PointsWenn du Punkte/Currency willst statt nur Text-Commands