Deine Bot-Logik, Schritt für Schritt
Ein Flow ist eine Liste von Schritten. Der Flow Frage des Tages besteht aus fünf: Katalog lesen, nächste Frage wählen, posten, Thread öffnen, mitzählen. Schritt hinzufügen, Wert hineinziehen, testen, dann anschalten.
Frage des Tages
AktivSpeichernTrigger
ÄndernZeitplan, täglich um 09:00
Gespeicherten Wert lesen(get-storage-value)
Den Fragenkatalog holen aus{questions}
Nächsten Eintrag wählen(array-at)
Den nach der Frage von gestern
Nachricht senden(send-message)
Eingabeparameter
Kanal:#general
Nachricht:Frage des Tages
Thread erstellen(start-thread-from-message)
Einen Thread an dieser Nachricht öffnen
Gespeicherten Wert erhöhen(increment-storage-value)
Die Frage als gestellt zählen in{asked}
Nur zur Veranschaulichung - tatsächliche Oberfläche kann abweichen
Das kommt um 09:00 aus diesen fünf Schritten
Aus den fünf Schritten wird eine Nachricht. Im Thread darunter landen die Antworten, und der Zähler sorgt dafür, dass morgen die nächste Frage kommt.
Nur zur Veranschaulichung - tatsächliche Oberfläche und Verhalten können abweichen
Schritte statt Skripte
Jeder Schritt ist eine Aktion aus dem Katalog mit eigenen Eingaben, und der Wert, den ein Schritt erzeugt, lässt sich in jeden späteren Schritt ziehen. Der Editor bietet dir immer nur die Werte an, die passen. Hinter diesem Picker stehen 691 Aktionen und 181 Parametertypen.
Fester Wert, verbundene Variable oder Vorlage
Jede Eingabe nimmt eines der drei. Eine Vorlage mischt deinen eigenen Text mit eingesetzten Variablen.
Der Variablen-Picker kennt die Typen
Er blendet aus, was nicht passt, öffnet Eigenschaften von Objekten, warnt dich bei Werten, die leer sein können, und kann dir einen Umwandlungsschritt einfügen.
Verbundene Werte erscheinen als Chips
Die Chips in diesen Zeilen sind der Fragenkatalog und der Kanal, du siehst also, woher ein Wert kommt.
Jeder Schritt hat Kosten
Von kostenlos bis sehr schwer, und der Flow zeigt dir seinen schlimmsten Fall, bevor du ihn aktivierst.
Du musst nicht bei einem leeren Flow anfangen. Im Dashboard liegen Vorlagen, die du öffnen und ändern kannst: eine Begrüßungsantwort, ein Willkommen für neue Mitglieder, ein /warn-Befehl, ein /remind-Befehl, ein XP-System, Vorschläge und eine Event-Anmeldung.
Frage des Tages
AktivSpeichernTrigger
ÄndernZeitplan, täglich um 09:00
Gespeicherten Wert lesen(get-storage-value)
Den Fragenkatalog holen aus{questions}
Nächsten Eintrag wählen(array-at)
Den nach der Frage von gestern
Nachricht senden(send-message)
Eingabeparameter
Kanal:#general
Nachricht:Frage des Tages
Thread erstellen(start-thread-from-message)
Einen Thread an dieser Nachricht öffnen
Gespeicherten Wert erhöhen(increment-storage-value)
Die Frage als gestellt zählen in{asked}
Nur zur Veranschaulichung - tatsächliche Oberfläche kann abweichen
Verzweigungen und Schleifen
Automationen brauchen Entscheidungen. Wenn, Switch, Zufallsverzweigung und Verzweigung nach Unterbefehl teilen den Flow, Für jedes Element, Für jeden Map-Eintrag und Wiederholen laufen durch Listen und Maps, mit Abbrechen und Weiter, und ein Try-Block gibt dir eine Stelle für die Rettung, wenn Discord Nein sagt.
Jeder Zweig hat seine eigenen Variablen
Ein Wert, den du in einem Zweig setzt, gehört zu diesem Zweig.
Try, mit einem Fehler-Zweig
Er kann nach dem Fehlercode unterscheiden: Fehlende Rechte, Nicht gefunden, Ungültige Eingabe, Speicherfehler, Zeitüberschreitung, Interaktion abgelaufen.
Aufhören, wo Aufhören richtig ist
Das Wenn in diesem Flow postet einen Hinweis im Team-Kanal und stoppt, statt eine leere Frage zu posten.
Eine Schleife, die aus dem Ruder läuft, stoppt von allein. Ein Fehler hört also auf, statt den ganzen Vormittag zu laufen.
Frage des Tages
AktivSpeichernTrigger
ÄndernZeitplan, täglich um 09:00
Gespeicherten Wert lesen(get-storage-value)
Den Fragenkatalog holen aus{questions}
Wenn(if-condition)
Der Katalog ist leer: einen Hinweis in #staff posten und stoppen
Für jedes Element(for-each)
Durch den Katalog gehen, bis eine unbenutzte Frage auftaucht
Nachricht senden(send-message)
Die Frage als Embed posten in#general
Thread erstellen(start-thread-from-message)
Einen Thread an dieser Nachricht öffnen
Nur zur Veranschaulichung - tatsächliche Oberfläche kann abweichen
Flows können andere Flows aufrufen, und Warten ist ein Schritt
Schreib ein Verhalten einmal und ruf es auf, wo du es brauchst. Und wenn ein Flow eine Antwort braucht, bevor er weitermacht, wird dieses Warten aufgeschrieben statt im Speicher gehalten. Ein Neustart des Bots verliert es also nicht.
Anderen Flow aufrufen
Übergib Werte und lies Ergebnisse zurück. Flows, die sich am Ende im Kreis aufrufen würden, werden abgelehnt.
Ein aufgerufener Flow gehört zum Lauf des Aufrufers
Der Verlauf sagt es und verlinkt zurück. Eigene Events sind die lose Variante: Ein Flow sendet, ein anderer hört zu.
Wartezeiten überstehen einen Neustart
Bestätigung einholen, Auswahl abfragen, auf eine Nachricht warten, ein Modal zeigen und auf das Abschicken warten. Ein Neustart dazwischen verliert das Warten nicht.
Geplante Läufe
Flow-Lauf einplanen bucht aus einem Flow heraus einen späteren Lauf, und es gibt Aktionen zum Abbrechen und Auflisten.
Bearbeitest du einen Flow, während ein Lauf davon auf jemanden wartet, stoppt dieser wartende Lauf, und das Protokoll sagt es dir. Für etwas, das monatelang nutzbar bleiben soll, ist ein Button, der einen Flow startet, das bessere Werkzeug: Er kostet nichts, solange niemand klickt, und läuft nie ab.
Vorschlag prüfen
AktivSpeichernTrigger
ÄndernModal abgeschickt, Frage vorschlagen
Nachricht senden(send-message)
Den Vorschlag mit einem Freigeben-Button posten in#staff
Auf Button warten(wait-for-interaction)
Pausieren, bis ein Moderator klickt
Gespeicherten Wert setzen(set-storage-value)
Die Frage hinzufügen zu{questions}
Anderen Flow aufrufen(call-flow)
Frage des Tages, mit der neuen Frage als Argument
Nur zur Veranschaulichung - tatsächliche Oberfläche kann abweichen
Sieh es dir an, bevor du es anschaltest
Ein Testlauf simuliert den Flow gegen deine eigenen Serverdaten. Nichts wird gesendet, geändert oder gelöscht. Du wählst, als wer er läuft, in welchem Kanal er läuft und was der Trigger übergibt, und das Ergebnis zeigt jeden Schritt mit dem, was er getan hätte. Testen kostet deinen Server nichts.
Bevor ein Flow aktiv werden kann, wird er außerdem geprüft. Ein Problem fällt dir also im Editor auf und nicht um neun Uhr morgens. Und eine Schleife, die durchdreht, legt deinen Bot nicht lahm: Sie stoppt sich selbst.
Entwurf oder aktiv
Entwürfe werden gespeichert und geprüft, aber sie laufen nie.
Ein aktiver Flow gilt sofort nach dem Speichern
Dein Bot übernimmt die neue Version, sobald du speicherst. Klappt das nicht, macht die Version weiter, die schon lief, und du kannst es erneut versuchen.
Nichts geht aus Versehen verloren
Hat jemand anderes gespeichert, während du den Flow offen hattest, bekommst du eine Warnung, statt seine Arbeit zu überschreiben. Gelöschte Flows und Module kannst du 30 Tage lang wiederherstellen.
Eine Sache soll klar sein: Nur Testläufe zeigen dir jeden Schritt. Ein Lauf im Betrieb hält seinen Status, seine Dauer und den Schritt fest, an dem er gescheitert ist, nicht alles, was er gegangen ist.
Testlauf
Simulierter Lauf, es wurde nichts gesendetGespeicherten Wert lesen
Katalog gelesen, 120 Einträge
Nächsten Eintrag wählen
Frage 42
Nachricht senden
Hätte in #general gepostet
Thread erstellen
Hätte einen Thread an dieser Nachricht geöffnet
Gespeicherten Wert erhöhen
Der Zähler gestellt würde von 41 auf 42 gehen
Nur zur Veranschaulichung - tatsächliche Oberfläche kann abweichen
Fragen zu Flows
Ein Flow, der auf jemanden wartet, schon. Wartezeiten wie Bestätigung einholen oder Auf eine Nachricht warten werden aufgeschrieben statt im Arbeitsspeicher gehalten und überstehen deshalb einen Neustart. Eine Ausnahme solltest du kennen: Bearbeitest du den Flow, während ein Lauf davon wartet, stoppt dieser Lauf, und das Protokoll sagt es dir.
Mehr aus Custom Commands V3
Soll dein Server in die Beta?
V3 ist ein großes System und es bewegt sich noch schnell. Deshalb kommen Server einzeln herein statt alle auf einmal. Jede Bewerbung liest ein Mensch, und du hörst innerhalb weniger Tage von uns.
Die Server, die schon in der Beta sind, entscheiden zu einem guten Teil mit, was wir als Nächstes bauen. Was du baust, gehört dir: Flows und Module bleiben, wenn die Beta endet.