Benutzerdefinierte Befehle

Oft gefragt als

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

  1. Öffne Chatbot → Chatbefehle, bleibe auf dem Tab Befehle und drücke Befehl hinzufügen. Das Formular trägt den Titel Befehl erstellen.
  2. 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.
  3. 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.
  4. Auslösemodus — Nachricht beginnt mit !befehl oder Wort irgendwo in der Nachricht. Der zweite wird auf der Karte mit einem Schlüsselwort-Badge markiert.
  5. 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.
  6. Abklingzeit (Sek.) startet bei 10, Pro-Nutzer-Abklingzeit (Sek.) bei 0. Darunter befindet sich das Häkchen Moderatoren und Streamer überspringen Abklingzeit.
  7. 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.
  8. Antworten nur wenn — eine Bedingung, standardmäßig Immer. Der Abschnitt unten erklärt sie.
  9. Drücke Speichern oder Abbrechen. Ohne Namen und Antwort antwortet das Formular mit „Fülle den Befehlsnamen und die Antwort aus!“ und bleibt offen.
  10. 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

  1. Wechsle zum Tab Variablen und drücke Variable hinzufügen — das Formular ist Variable erstellen.
  2. 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“.
  3. 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“.
  4. 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!“.
  5. 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.

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.

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:

  1. [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.
  2. [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.
  3. [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.
  4. [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