Custom Commands V3Flows und Editor
Custom Commands V3Beta

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

AktivSpeichern

Trigger

Ändern

Zeitplan, täglich um 09:00

#1

Gespeicherten Wert lesen(get-storage-value)

Den Fragenkatalog holen aus{questions}

#2

Nächsten Eintrag wählen(array-at)

Den nach der Frage von gestern

#3

Nachricht senden(send-message)

Eingabeparameter

Kanal:#general

Nachricht:Frage des Tages

#4

Thread erstellen(start-thread-from-message)

Einen Thread an dieser Nachricht öffnen

#5

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.

general
Online
Dein BotBOT09:00

Frage des Tages

Zu welchem Spiel kommst du immer wieder zurück, egal wie alt es ist?

Frage 42 von 120

Mira09:04

Terraria. Ich installiere es jeden Winter neu.

Nachricht #general

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

AktivSpeichern

Trigger

Ändern

Zeitplan, täglich um 09:00

#1

Gespeicherten Wert lesen(get-storage-value)

Den Fragenkatalog holen aus{questions}

#2

Nächsten Eintrag wählen(array-at)

Den nach der Frage von gestern

#3

Nachricht senden(send-message)

Eingabeparameter

Kanal:#general

Nachricht:Frage des Tages

#4

Thread erstellen(start-thread-from-message)

Einen Thread an dieser Nachricht öffnen

#5

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

AktivSpeichern

Trigger

Ändern

Zeitplan, täglich um 09:00

#1

Gespeicherten Wert lesen(get-storage-value)

Den Fragenkatalog holen aus{questions}

#2

Wenn(if-condition)

Der Katalog ist leer: einen Hinweis in #staff posten und stoppen

#3

Für jedes Element(for-each)

Durch den Katalog gehen, bis eine unbenutzte Frage auftaucht

#4

Nachricht senden(send-message)

Die Frage als Embed posten in#general

#5

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

AktivSpeichern

Trigger

Ändern

Modal abgeschickt, Frage vorschlagen

#1

Nachricht senden(send-message)

Den Vorschlag mit einem Freigeben-Button posten in#staff

#2

Auf Button warten(wait-for-interaction)

Pausieren, bis ein Moderator klickt

#3

Gespeicherten Wert setzen(set-storage-value)

Die Frage hinzufügen zu{questions}

#4

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 gesendet

Gespeicherten 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.

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.