Custom Commands V3Flows en de editor
Custom Commands V3Beta

De logica van je bot, stap voor stap

Een flow is een lijst met stappen. De flow Dagelijkse vraag bestaat uit vijf stappen: de catalogus lezen, de volgende vraag kiezen, plaatsen, een thread openen, tellen. Voeg een stap toe, koppel er een waarde aan, test hem en zet hem dan aan.

Dagelijkse vraag

ActiefOpslaan

Trigger

Wijzigen

Schema, elke dag om 09:00

#1

Opslagwaarde ophalen(get-storage-value)

Lees de vragencatalogus uit{questions}

#2

Het volgende item kiezen(array-at)

Het item na dat van gisteren

#3

Bericht versturen(send-message)

Invoerparameters

Kanaal:#general

Bericht:Vraag van de dag

#4

Thread aanmaken(start-thread-from-message)

Open een thread op dat bericht

#5

Opslagwaarde verhogen(increment-storage-value)

Tel de vraag als gesteld in{asked}

Alleen ter illustratie - de echte interface kan afwijken

Wat die vijf stappen om 09:00 opleveren

De vijf stappen leveren één bericht op. De thread eronder is waar de antwoorden landen, en de teller zorgt dat morgen de volgende vraag komt.

general
Online
Je botBOT09:00

Vraag van de dag

Welke game blijf je steeds weer spelen, hoe oud hij ook wordt?

Vraag 42 van 120

Mira09:04

Terraria. Ik installeer het elke winter opnieuw.

Bericht #general

Alleen ter illustratie - de echte interface en werking kunnen afwijken

Stappen, geen scripts

Elke stap is één actie uit de catalogus met eigen invoer, en de waarde die een stap oplevert kun je aan elke latere stap koppelen. De editor biedt je alleen de waarden die passen. Achter die keuzelijst zitten 691 acties en 181 parametertypes.

Vaste waarde, gekoppelde variabele of sjabloon

Elke invoer accepteert een van de drie. Een sjabloon combineert je eigen tekst met ingevoegde variabelen.

De variabelenkiezer houdt rekening met typen

Hij verbergt waarden die niet passen, duikt in objecteigenschappen, waarschuwt je voor waarden die leeg kunnen zijn en kan voor je een conversiestap toevoegen.

Gekoppelde waarden verschijnen als chips

De chips op deze rijen zijn de vragencatalogus en het kanaal, zodat je ziet waar een waarde vandaan komt.

Elke stap heeft een prijskaartje

Van Gratis tot Zeer zwaar, en de flow toont je het worstcasescenario voordat je hem activeert.

Je hoeft niet met een lege flow te beginnen. Het dashboard bevat sjablonen die je kunt openen en aanpassen: een begroetingsbot, nieuwe leden verwelkomen, een /warn-commando, een /remind-commando, een XP-systeem, suggesties en een evenementaanmelding.

Dagelijkse vraag

ActiefOpslaan

Trigger

Wijzigen

Schema, elke dag om 09:00

#1

Opslagwaarde ophalen(get-storage-value)

Lees de vragencatalogus uit{questions}

#2

Het volgende item kiezen(array-at)

Het item na dat van gisteren

#3

Bericht versturen(send-message)

Invoerparameters

Kanaal:#general

Bericht:Vraag van de dag

#4

Thread aanmaken(start-thread-from-message)

Open een thread op dat bericht

#5

Opslagwaarde verhogen(increment-storage-value)

Tel de vraag als gesteld in{asked}

Alleen ter illustratie - de echte interface kan afwijken

Vertakkingen en loops

Automatiseringen moeten beslissingen nemen. Als, Switch, Willekeurige tak en Tak op subcommando splitsen de flow, Voor elk item, Voor elke map-invoer en Herhaal lopen door lijsten en maps met Break en Continue, en een Try-blok geeft je een plek voor het herstel als Discord nee zegt.

Elke tak heeft zijn eigen variabelen

Een waarde die binnen een tak wordt gezet, hoort bij die tak.

Try, met een On error-tak

Hij kan schakelen op de foutcode: Ontbrekende permissies, Niet gevonden, Ongeldige invoer, Opslagfout, Time-out, Interactie verlopen.

Stop waar stoppen het juiste antwoord is

De Als in deze flow plaatst een herinnering in het staffkanaal en stopt, in plaats van een lege vraag te plaatsen.

Een loop die op hol slaat stopt vanzelf, zodat een fout stopt in plaats van de hele ochtend door te draaien.

Dagelijkse vraag

ActiefOpslaan

Trigger

Wijzigen

Schema, elke dag om 09:00

#1

Opslagwaarde ophalen(get-storage-value)

Lees de vragencatalogus uit{questions}

#2

Als(if-condition)

De catalogus is leeg: plaats een herinnering in #staff en stop

#3

Voor elk item(for-each)

Loop door de catalogus tot er een ongebruikte vraag opduikt

#4

Bericht versturen(send-message)

Plaats de vraag als embed in#general

#5

Thread aanmaken(start-thread-from-message)

Open een thread op dat bericht

Alleen ter illustratie - de echte interface kan afwijken

Flows kunnen andere flows aanroepen, en wachten is een stap

Schrijf een gedrag één keer en roep het aan waar je het nodig hebt. En als een flow een antwoord nodig heeft voordat hij verdergaat, wordt dat wachten vastgelegd in plaats van in het geheugen bewaard, zodat een herstart van de bot het niet kwijtraakt.

Een andere flow aanroepen

Geef waarden mee en lees resultaten terug. Flows die elkaar uiteindelijk in een kringetje zouden aanroepen, worden geweigerd.

Een aangeroepen flow hoort bij de run van de aanroeper

De runhistorie laat dat zien en linkt terug naar de aanroeper. Custom events zijn de losse variant: de ene flow stuurt, een andere luistert.

Wachtstappen overleven een herstart

Om bevestiging vragen, om een keuze vragen, op een bericht wachten, een pop-upformulier tonen en wachten op het verzenden. Een herstart ertussen raakt het wachten niet kwijt.

Geplande runs

Met Flow-run plannen boek je vanuit een flow een latere run, en er zijn acties om te annuleren en om te tonen wat nog wacht.

Als je een flow bewerkt terwijl een run ervan op iemand wacht, stopt die wachtende run, en het logboek meldt dat. Voor iets dat maandenlang bruikbaar moet blijven is een knop die een flow start het betere gereedschap: het kost niets zolang niemand klikt en het verloopt nooit.

Een suggestie beoordelen

ActiefOpslaan

Trigger

Wijzigen

Pop-upformulier verzonden, Stel een vraag voor

#1

Bericht versturen(send-message)

Plaats de suggestie met een knop Goedkeuren in#staff

#2

Wachten op knop(wait-for-interaction)

Pauzeer tot een moderator klikt

#3

Opslagwaarde instellen(set-storage-value)

Voeg de vraag toe aan{questions}

#4

Een andere flow aanroepen(call-flow)

Dagelijkse vraag, met de nieuwe vraag als argument

Alleen ter illustratie - de echte interface kan afwijken

Bekijk het voordat je het live zet

Een testrun simuleert de flow met de data van je eigen server. Er wordt niets verstuurd, gewijzigd of verwijderd. Jij kiest als wie hij draait, in welk kanaal en wat de trigger meegeeft, en het resultaat toont elke stap met wat hij zou hebben gedaan. Testen kost je server niets.

Een flow wordt ook gecontroleerd voordat hij actief kan worden, zodat een probleem in de editor opduikt in plaats van om negen uur 's ochtends. En een loop die op hol slaat kan je bot niet platleggen: hij stopt zichzelf.

Concept of actief

Concepten worden opgeslagen en gecontroleerd, en ze draaien nooit.

Een actieve flow opslaan werkt direct

Je bot pakt de nieuwe versie op zodra je opslaat. Lukt dat niet, dan blijft de versie die al draaide de flow afhandelen en kun je het opnieuw proberen.

Er gaat niets per ongeluk verloren

Als iemand anders de flow opsloeg terwijl jij hem open had, krijg je een waarschuwing in plaats van dat je hun werk overschrijft. Verwijderde flows en modules kunnen 30 dagen worden hersteld.

Eén ding is belangrijk om te weten: alleen testruns tonen je elke stap. Een live run legt zijn status, timing en de stap waar het misging vast, niet alles wat hij doorliep.

Testrun

Gesimuleerde run, er is niets verstuurd

Opslagwaarde ophalen

De catalogus lezen, 120 items

Het volgende item kiezen

Vraag 42

Bericht versturen

Zou hebben geplaatst in #general

Thread aanmaken

Zou een thread hebben geopend op dat bericht

Opslagwaarde verhogen

De teller met gestelde vragen zou van 41 naar 42 gaan

Alleen ter illustratie - de echte interface kan afwijken

Vragen over flows

Een flow die op iemand wacht wel. Wachtstappen zoals Om bevestiging vragen of Wachten op een bericht worden vastgelegd in plaats van in het geheugen bewaard, dus ze overleven een herstart. Eén uitzondering die je moet weten: als je de flow bewerkt terwijl een run ervan wacht, stopt die run, en het logboek meldt dat.

Wil je je server in de beta?

V3 is een groot systeem dat nog snel verandert, daarom komen servers één voor één binnen in plaats van allemaal tegelijk. Elke aanmelding wordt door een mens gelezen en je hoort binnen een paar dagen van ons.

De servers die al in de beta zitten, bepalen mede wat we daarna bouwen. Wat jij bouwt is van jou: flows en modules blijven bestaan als de beta eindigt.