Custom Commands V3Flows och redigeraren
Custom Commands V3Beta

Din bots logik, steg för steg

Ett flow är en lista med steg. Flowet Daglig fråga består av fem: läs katalogen, välj nästa fråga, posta den, öppna en tråd, räkna upp. Lägg till ett steg, koppla in ett värde, testa det och slå sedan på det.

Daglig fråga

AktivSpara

Trigger

Ändra

Schema, varje dag kl. 09:00

#1

Hämta lagringsvärde(get-storage-value)

Läs frågekatalogen från{questions}

#2

Välj nästa post(array-at)

Den efter gårdagens

#3

Skicka meddelande(send-message)

Indataparametrar

Kanal:#general

Meddelande:Dagens fråga

#4

Skapa tråd(start-thread-from-message)

Öppna en tråd på det meddelandet

#5

Öka lagringsvärde(increment-storage-value)

Räkna frågan som ställd i{asked}

Endast illustration - det faktiska gränssnittet kan se annorlunda ut

Det här ger de fem stegen klockan 09:00

De fem stegen ger ett meddelande. Tråden under det är dit svaren hamnar, och räknaren ser till att morgondagen får nästa fråga.

general
Online
Din botBOT09:00

Dagens fråga

Vilket är det enda spelet du alltid återvänder till, oavsett hur gammalt det blir?

Fråga 42 av 120

Mira09:04

Terraria. Jag installerar om det varje vinter.

Meddelande #general

Endast illustration - det faktiska gränssnittet och beteendet kan se annorlunda ut

Steg, inte skript

Varje steg är en åtgärd ur katalogen med egna indata, och värdet ett steg ger kan kopplas in i vilket senare steg som helst. Redigeraren erbjuder alltid bara de värden som passar. Bakom väljaren finns 691 åtgärder och 181 parametertyper.

Fast värde, kopplad variabel eller mall

Varje indata tar en av de tre. En mall blandar din egen text med insatta variabler.

Variabelväljaren är typmedveten

Den döljer värden som inte passar, borrar sig in i objektegenskaper, varnar för värden som kan vara tomma och kan lägga till ett konverteringssteg åt dig.

Kopplade värden visas som chips

Chipsen på de här raderna är frågekatalogen och kanalen, så du ser var ett värde kommer ifrån.

Varje steg har en kostnad

Från Gratis till Mycket tung, och flowet visar sitt värsta fall innan du aktiverar det.

Du behöver inte börja med ett tomt flow. Dashboarden levereras med mallar du kan öppna och ändra: en hälsningssvarare, välkomna nya medlemmar, ett /warn-kommando, ett /remind-kommando, ett XP-system, förslag och en eventanmälan.

Daglig fråga

AktivSpara

Trigger

Ändra

Schema, varje dag kl. 09:00

#1

Hämta lagringsvärde(get-storage-value)

Läs frågekatalogen från{questions}

#2

Välj nästa post(array-at)

Den efter gårdagens

#3

Skicka meddelande(send-message)

Indataparametrar

Kanal:#general

Meddelande:Dagens fråga

#4

Skapa tråd(start-thread-from-message)

Öppna en tråd på det meddelandet

#5

Öka lagringsvärde(increment-storage-value)

Räkna frågan som ställd i{asked}

Endast illustration - det faktiska gränssnittet kan se annorlunda ut

Grenar och loopar

Automatiseringar behöver beslut. If, Switch, Random branch och Branch on subcommand delar upp flowet, For each item, For each map entry och Repeat går igenom listor och mappar med Break och Continue, och ett Try-block ger dig en plats för återhämtningen när Discord säger nej.

Varje gren har sina egna variabler

Ett värde som sätts inuti en gren tillhör den grenen.

Try, med en On error-gren

Den kan förgrena sig på felkoden: Missing permissions, Not found, Invalid input, Storage error, Timeout, Interaction expired.

Avbryt när det är rätt att avbryta

If-steget i det här flowet postar en påminnelse i personalkanalen och stannar, i stället för att posta en tom fråga.

En loop som skenar iväg stoppar sig själv, så ett misstag stoppar i stället för att köra hela förmiddagen.

Daglig fråga

AktivSpara

Trigger

Ändra

Schema, varje dag kl. 09:00

#1

Hämta lagringsvärde(get-storage-value)

Läs frågekatalogen från{questions}

#2

If(if-condition)

Katalogen är tom: posta en påminnelse i #staff och stanna

#3

For each item(for-each)

Gå igenom katalogen tills en oanvänd fråga dyker upp

#4

Skicka meddelande(send-message)

Posta frågan som en inbäddning i#general

#5

Skapa tråd(start-thread-from-message)

Öppna en tråd på det meddelandet

Endast illustration - det faktiska gränssnittet kan se annorlunda ut

Flows kan anropa andra flows, och väntan är ett steg

Skriv ett beteende en gång och anropa det varifrån du vill. Och när ett flow behöver ett svar innan det fortsätter skrivs väntan ner i stället för att hållas i minnet, så en omstart av boten tappar den inte.

Anropa ett annat flow

Skicka in värden och läs tillbaka resultat. Flows som skulle sluta anropa varandra i en cirkel avvisas.

Ett anropat flow hör till anroparens körning

Körhistoriken visar det och länkar tillbaka till anroparen. Egna events är den lösare varianten: ett flow skickar, ett annat lyssnar.

Väntan överlever en omstart

Be om bekräftelse, be om ett val, vänta på ett meddelande, visa ett popup-formulär och vänta på inskicket. En omstart emellan tappar inte väntan.

Schemalagda körningar

Schedule flow run bokar en senare körning inifrån ett flow, och det finns åtgärder för att avbryta och lista vad som väntar.

Om du redigerar ett flow medan en körning av det väntar på någon, stoppas den väntande körningen, och loggen säger det. För något som ska vara användbart i månader är en knapp som startar ett flow det bättre verktyget: den kostar ingenting så länge ingen klickar och går aldrig ut.

Granska ett förslag

AktivSpara

Trigger

Ändra

Popup-formulär skickat, Föreslå en fråga

#1

Skicka meddelande(send-message)

Posta förslaget med en Godkänn-knapp i#staff

#2

Vänta på knapp(wait-for-interaction)

Pausa tills en moderator klickar

#3

Sätt lagringsvärde(set-storage-value)

Lägg till frågan i{questions}

#4

Anropa ett annat flow(call-flow)

Daglig fråga, med den nya frågan som argument

Endast illustration - det faktiska gränssnittet kan se annorlunda ut

Se det innan du lanserar

En testkörning simulerar flowet mot din egen serverdata. Inget skickas, ändras eller raderas. Du väljer vem den körs som, i vilken kanal den körs och vad triggern ger den, och resultatet visar varje steg med vad det skulle ha gjort. Att testa kostar din server ingenting.

Ett flow kontrolleras också innan det kan bli aktivt, så ett problem dyker upp i redigeraren i stället för klockan nio på morgonen. Och en loop som skenar iväg kan inte ta ner din bot: den stoppar sig själv.

Utkast eller aktivt

Utkast sparas och kontrolleras, och de körs aldrig.

Att spara ett aktivt flow gäller direkt

Din bot plockar upp den nya versionen så fort du sparar. Om det inte går igenom fortsätter den version som redan kördes att hantera flowet och du kan försöka igen.

Inget går förlorat av misstag

Om någon annan sparade flowet medan du hade det öppet får du en varning i stället för att skriva över deras arbete. Raderade flows och moduler kan återställas i 30 dagar.

En sak att vara tydlig med: bara testkörningar visar dig varje steg. En livekörning registrerar sin status, sin tidtagning och det steg den misslyckades vid, inte allt den gick igenom.

Testkörning

Simulerad körning, inget skickades

Hämta lagringsvärde

Läs katalogen, 120 poster

Välj nästa post

Fråga 42

Skicka meddelande

Skulle ha postat i #general

Skapa tråd

Skulle ha öppnat en tråd på det meddelandet

Öka lagringsvärde

Räknaren för ställda frågor skulle gå från 41 till 42

Endast illustration - det faktiska gränssnittet kan se annorlunda ut

Frågor om flows

Ett flow som väntar på någon gör det. Väntan som Ask for confirmation eller Wait for a message skrivs ner i stället för att hållas i minnet, så de överlever en omstart. Ett undantag värt att känna till: om du redigerar flowet medan en körning av det väntar stoppas den körningen, och loggen säger det.

Vill du ha in din server i betan?

V3 är ett stort system och det utvecklas fortfarande snabbt, så servrar släpps in en i taget i stället för alla på en gång. Varje ansökan läses av en person och du får svar inom några dagar.

Servrarna som redan är med i betan avgör en stor del av vad vi bygger härnäst. Det du bygger är ditt: flows och moduler finns kvar när betan tar slut.