Benutzerdefinierte Befehle
- Wie füge ich einen Chatbefehl hinzu
- Wie kann der Bot den Namen des Zuschauers in die Antwort einfügen
- Wie mache ich, dass ein Befehl eine zufällige Antwort gibt
- Wie lasse ich nur Moderatoren einen Befehl nutzen
- Wie stoppe ich einen Befehl, ohne ihn zu löschen
- Ich möchte, dass ein Befehl auf mehrere verschiedene Wörter antwortet
- Wie mache ich, dass ein Befehl nur in einem bestimmten Spiel funktioniert
- Ich möchte, dass der Auktionsregel-Befehl nur während der Auktion antwortet
- Wie füge ich meinen Discord-Link in einen Befehl ein, ohne ihn überall neu einzutippen
- Der Bot antwortet nicht auf meinen !discord-Befehl
- Mein Befehl hat einmal geantwortet und ist seitdem still
- Wie baue ich einen !uptime-Befehl
- Wo kommt der !commands-Befehl her, und warum antwortet der Bot auf !help
Kommt mit strAImer: Dieses Modul wird zusammen mit der App installiert, herunterladen musst du nichts. Es steht unter Modulkatalog → Integriert.
Was diese Seite ist
Chatbot → Chatbefehle ist der Ort für benutzerdefinierte Textbefehle; die Seite selbst trägt die Überschrift Benutzerdefinierte Befehle, „Verwalte benutzerdefinierte Textbefehle für den Chat“. Ein Befehl ist ein Auslöser, den der Chat eingibt, und eine Antwort, die der Bot zurückschreibt, wobei Variablen darin ersetzt werden.
Ein Befehl funktioniert unabhängig davon, wo du ihn tippst: im Chat der Plattform, im Chatverlauf im Steuerpult oder im Nachrichtenfeld der App. Es zählt nur ein echter Befehl — deine normalen Nachrichten lösen den Bot nie aus, er redet also nicht mit sich selbst.
Einrichtung
Die Seite hat zwei Tabs, Befehle und Variablen, jeweils mit ihrer Anzahl in Klammern. Die Schaltfläche oben rechts folgt dem Tab, auf dem du dich befindest — Befehl hinzufügen oder Variable hinzufügen.
Eine frische Installation ist nicht leer: Das Modul legt einen fertigen Befehl an, damit du siehst, wie es funktioniert. Er heißt commands, antwortet auf !commands, !help und !cmds und schreibt „Commands: {commands}“, also die Liste aller deiner Befehle, mit einer Abklingzeit von 15 Sekunden für alle. Bearbeite oder lösche ihn wie jeden anderen; einmal gelöscht, kommt er nicht zurück.
Ein Befehl
- Öffne Chatbot → Chatbefehle, bleibe auf dem Tab Befehle und drücke Befehl hinzufügen. Das Formular trägt den Titel Befehl erstellen.
- Befehlsname (für dich) — ein Titel, den du in der Liste wiedererkennst, Leerzeichen sind erlaubt: „Mein Discord-Server“. Großbuchstaben bleiben wie eingegeben. Ein einwortiger Name dient gleichzeitig als Auslöser im Chat; ein Name mit Leerzeichen kann nicht eingegeben werden, daher benötigt ein solcher Befehl mindestens einen Auslöser, und das Speichern ohne einen wird abgelehnt.
- Auslöser, die Zuschauer eingeben (kommagetrennt) — die Wörter, die den Befehl auslösen, der Platzhalter zeigt das Format:
discord, ds. Der erste ist der Hauptauslöser — er ist es, den die{commands}-Liste anzeigt — während der Befehl auf alle antwortet. Sie werden ohne!und durch Kommas getrennt geschrieben. Großbuchstaben bleiben auch hier erhalten. - Auslösemodus — Nachricht beginnt mit !befehl oder Wort irgendwo in der Nachricht. Der zweite wird auf der Karte mit einem Schlüsselwort-Badge markiert.
- Befehlsantwort — was der Bot schreibt, z.B. „Tritt unserem Server bei, {user}!“. Unter dem Feld steht „Klicke auf eine Variable, um sie in die Antwort einzufügen:“ und eine Reihe von Chips —
{user},{target},{args},{count},{random:1-100},{choose:a|b|c},{randuser},{channel},{commands},{auction_rules},{time},{date},{math:},{repeat:3:}. Ein Klick fügt einen an der Cursorposition ein. Drei Tabs befinden sich über der Reihe — Integriert, Deine und Wissensbasis — sodass deine eigenen Variablen und deine Referenzlinks ebenfalls nur einen Klick entfernt sind. - Abklingzeit (Sek.) startet bei 10, Pro-Nutzer-Abklingzeit (Sek.) bei 0. Darunter befindet sich das Häkchen Moderatoren und Streamer überspringen Abklingzeit.
- Erlaubte Rollen — Jeder, Abonnent, VIP, Moderator, Broadcaster. Bei einem neuen Befehl ist Jeder angehakt, und wenn gar nichts angehakt ist, wird ebenfalls als Jeder gespeichert.
- Antworten nur wenn — eine Bedingung, standardmäßig Immer. Der Abschnitt unten erklärt sie.
- Drücke Speichern oder Abbrechen. Ohne Namen und Antwort antwortet das Formular mit „Fülle den Befehlsnamen und die Antwort aus!“ und bleibt offen.
- Eine Karte wird nur vom Befehlsnamen überschrieben, mit dem Rollen-Badge daneben und einem Bedingungs-Badge, wenn eine vorhanden ist. Die Zeile darunter enthält die Aliase, farbig und mit ihrem
!, gefolgt von der Antwort; dann kommen die Abklingzeit, die Pro-Nutzer-Abklingzeit und wie oft der Befehl ausgelöst wurde. Die Zeile zeigt alle Auslöser, auf die der Befehl reagiert — deine plus den Namen selbst, wenn er aus einem Wort besteht; eine Wiederholung erscheint einmal. Der Schalter schaltet den Befehl aus, ohne ihn zu löschen; daneben befinden sich Bearbeiten und Löschen, und das Löschen fragt „Diesen Befehl löschen?“.
Eine eigene Variable
- Wechsle zum Tab Variablen und drücke Variable hinzufügen — das Formular ist Variable erstellen.
- Variablenname — nur Buchstaben, Ziffern und
_; das Feld wandelt das Eingegebene in Kleinbuchstaben um und entfernt den Rest. Der Hinweis darunter zeigt das Ergebnis: „Wird in Antworten als {name} verwendet“. - Werte (einer pro Zeile) — der Platzhalter zeigt drei Zeilen, Pizza, Sushi, Burger. „Ein zufälliger Wert aus der Liste wird eingefügt, wenn der Befehl ausgelöst wird“.
- Drücke Speichern. Ein wiederholter Name wird mit „Eine Variable mit diesem Namen existiert bereits!“ abgelehnt, ein unvollständiges Formular mit „Gib einen Namen und mindestens einen Wert an!“.
- Die Karte zeigt
{name}, wie viele Werte sie enthält und die Werte selbst. Bearbeiten öffnet das Formular erneut als Variable bearbeiten, mit dem aktuellen Namen und den aktuellen Werten ausgefüllt, sodass Werte korrigiert statt neu getippt werden. Löschen warnt zuerst: „Diese Variable löschen? Befehle, die sie verwenden, werden sie nicht mehr ersetzen.“
Nur manchmal antworten
Antworten nur wenn enthält eine Bedingung, und Immer — keine Bedingung — ist das, was ein neuer Befehl erhält.
- Eines dieser Spiele wird gespielt — ein Feld Spiele (kommagetrennt) erscheint. Ein Teil eines Namens reicht aus und die Groß-/Kleinschreibung spielt keine Rolle, also passt
gtaauf „GTA V“ und „GTA Online“. Plattformen schreiben dasselbe Spiel unterschiedlich, also liste jede Schreibweise auf —GTA, Grand Theft Auto— und wenn eine davon übereinstimmt, reicht das. Die Kategorie wird von jeder Plattform gelesen, die gerade live ist. - Eine Auktion läuft — während das Auktionsmodul eine laufende, pausierte oder gesperrte Auktion hat.
- Der Stream ist live / Der Stream ist offline — der Stream-Status, wie das Stream-Status-Modul ihn meldet.
Antworten wenn die Bedingung nicht erfüllt ist ist die zweite Antwort. Sie verwendet dieselben Variablen und Referenzlinks — und ihre eigene Reihe von Chips, sodass ein Klick dort in dieses Feld und nicht in das darüber landet. „Keine Auktion im Moment — die nächste ist am Freitag!“ ist eine vollständige Antwort. Lasse es leer und der Befehl sagt gar nichts; ein stiller Befehl verbraucht seine Abklingzeit nicht, sodass der nächste Zuschauer, der im richtigen Moment fragt, immer noch eine Antwort erhält.
Das Speichern einer Spielbedingung mit einem leeren Spielefeld wird abgelehnt: Die Bedingung würde nie zutreffen und der Befehl wäre für immer stumm.
Referenzlinks und Auktionsregeln
Zwei weitere Dinge können in eine Antwort eingefügt werden und werden an einem Ort gespeichert, anstatt neu getippt zu werden.
{discord},{boosty}und jeder andere Name aus der Wissensbasis in der Seitenleiste. Ändere den Link dort und jeder Befehl folgt. Namen, die sie nicht kennt, bleiben wie sie sind,{discord}, sodass ein Tippfehler sichtbar und nicht still ist. Der Wissensbasis-Chip-Tab unter dem Antwortfeld listet sie alle auf — es gibt nichts zu merken.{auction_rules}— die Beschreibung, die in den Auktionseinstellungen geschrieben wurde, derselbe Text, den die Zuschauer sehen.
Geschweifte Klammern sind einfach, wie bei jeder anderen Variable. Doppelte Klammern {{...}} funktionieren immer noch — das war die ältere Schreibweise, und alte Texte funktionieren weiterhin. Integrierte Variablen werden zuerst gelesen, daher wird ein Link namens time die {time}-Variable nicht überschreiben; vermeide einfach, Links nach Variablen zu benennen.
Die Referenz
Variablen-Referenz oben öffnet Verfügbare Variablen — jede integrierte Variable mit ihrer Bedeutung und einem ausgearbeiteten Beispiel: {display_name}, {user.id}, {touser}, {args:0|default}, {count+10}, {channel} und der Rest, mit deinen eigenen am Ende der Liste.
Warum ein Befehl nicht antwortet
Ein Befehl, der still bleibt, hinterlässt eine Zeile mit [Skipped] in der Systemprotokoll-Konsole am unteren Rand des App-Fensters. Dieselbe Zeile nennt den Grund in Klammern:
[NoMatch]: Kein Befehl antwortet auf dieses Wort. Prüfe die Schreibweise des Auslösers und ob der Schalter des Befehls an ist: Ein ausgeschalteter Befehl zählt als nicht vorhanden. Nur Wörter, die mit!getippt wurden, kommen ins Log; ein Befehl mit Wort irgendwo in der Nachricht hinterlässt keine Zeile, wenn er nicht passt.[Cooldown]: Der Befehl hat vor weniger als Abklingzeit (Sek.) geantwortet, bei einem neuen Befehl sind das 10 Sekunden, oder dieser Zuschauer steckt noch in der Pro-Nutzer-Abklingzeit (Sek.). Die Abklingzeit gilt auch für dich: Wer denselben Befehl zum Testen zweimal hintereinander tippt, bekommt nur eine Antwort. Hake Moderatoren und Streamer überspringen Abklingzeit an, um frei zu testen.[Permission]: Der Absender hat keine der Rollen, die unter Erlaubte Rollen gewählt sind. Höhere Rollen schließen die niedrigeren ein: Ein Moderator darf auch VIP- und Abonnenten-Befehle auslösen, und du darfst alle.[Condition]: Antworten nur wenn ist nicht erfüllt, und Antworten wenn die Bedingung nicht erfüllt ist ist leer. Ein Befehl mit Der Stream ist live bleibt außerhalb der Sendung still.
Gar keine Zeile bei einem !-Befehl heißt, dass die Nachricht die App nie erreicht hat: Die Plattform ist unter Verbindungen → Kanäle nicht verbunden, oder das Modul ist ausgeschaltet. Eine Zeile mit [Success] und nichts im Chat heißt, dass die Plattform die Antwort nicht angenommen hat. Auf YouTube ist der übliche Grund der Bot: Antworten gehen von ihm raus, und ein Bot ohne Chat-Anmeldung sendet nichts, mit "No bot session" im Log. Melde ihn unter Verbindungen → Bots an.
Was es nicht kann
{channel}ist der Kanal, in dem die Nachricht geschrieben wurde, daher unterscheidet er sich bei einem Multi-Plattform-Stream je nach Chat: dein Twitch-Name in der Twitch-Antwort, dein Kick-Name in der Kick-Antwort. Jede Plattform schreibt es auf ihre eigene Weise — Kick hat überhaupt keinen Anzeigenamen, nur den Handle, mit dem du dich angemeldet hast — erwarte also nicht, dass die drei genau übereinstimmen.{randuser}wählt aus Zuschauern aus, die in den letzten halben Stunde in diesem Chat geschrieben haben, nicht aus allen Zuschauern: Nur Twitch bietet eine Liste der anwesenden Personen, und selbst diese ist gekürzt, während YouTube und Kick gar keine anbieten. Jede Plattform verwaltet ihre eigene Liste, daher markiert eine Antwort auf Twitch niemals einen YouTube-Zuschauer. Direkt nach dem Start der App ist die Liste leer und die Variable fällt auf die Person zurück, die den Befehl ausgeführt hat; eine Nachricht im Chat füllt sie. Die eigenen Nachrichten deines Bots sind ausgeschlossen.- Es gibt keine Variable für Laufzeit, aktuelles Spiel oder Stream-Titel, daher lassen sich
!uptime,!gameoder!titlehier nicht bauen: Ein unbekannter Name wie{uptime}wird so gepostet, wie er getippt wurde. Die integrierten Variablen sind genau die aus der Variablen-Referenz. Der KI-Agent kennt alle drei, während du live bist (siehe die Anleitung „KI-Agent“). - Ein Befehl antwortet mit Text im Chat. Ton, Overlays und jede andere Aktion sind nicht Teil dieser Seite.
- Befehle sind nicht auf eine Plattform oder einen bestimmten Kanal ausgerichtet: Eine Liste bedient den Chat.
- Die Liste hat keine Suche, keine Sortierung und kein Ziehen zum Neuordnen — Karten bleiben in der Reihenfolge, in der sie erstellt wurden.
- Eine benutzerdefinierte Variable ist eine Liste, aus der eine Zeile zufällig ausgewählt wird. Sie speichert keinen Wert pro Zuschauer, keinen Zähler und keine Arithmetik.
- Abklingzeiten werden in Sekunden gezählt, pro Befehl und pro Zuschauer. Es gibt kein tägliches Limit, und die einzige Ausnahme nach Rolle ist das Häkchen Moderatoren und Streamer überspringen Abklingzeit.
- Ein Befehl nimmt eine Bedingung, nicht mehrere kombinierte. Es gibt keine Bedingung nach Tageszeit und keine nach Zuschauerzahl.