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
ActiefOpslaanTrigger
WijzigenSchema, elke dag om 09:00
Opslagwaarde ophalen(get-storage-value)
Lees de vragencatalogus uit{questions}
Het volgende item kiezen(array-at)
Het item na dat van gisteren
Bericht versturen(send-message)
Invoerparameters
Kanaal:#general
Bericht:Vraag van de dag
Thread aanmaken(start-thread-from-message)
Open een thread op dat bericht
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.
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
ActiefOpslaanTrigger
WijzigenSchema, elke dag om 09:00
Opslagwaarde ophalen(get-storage-value)
Lees de vragencatalogus uit{questions}
Het volgende item kiezen(array-at)
Het item na dat van gisteren
Bericht versturen(send-message)
Invoerparameters
Kanaal:#general
Bericht:Vraag van de dag
Thread aanmaken(start-thread-from-message)
Open een thread op dat bericht
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
ActiefOpslaanTrigger
WijzigenSchema, elke dag om 09:00
Opslagwaarde ophalen(get-storage-value)
Lees de vragencatalogus uit{questions}
Als(if-condition)
De catalogus is leeg: plaats een herinnering in #staff en stop
Voor elk item(for-each)
Loop door de catalogus tot er een ongebruikte vraag opduikt
Bericht versturen(send-message)
Plaats de vraag als embed in#general
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
ActiefOpslaanTrigger
WijzigenPop-upformulier verzonden, Stel een vraag voor
Bericht versturen(send-message)
Plaats de suggestie met een knop Goedkeuren in#staff
Wachten op knop(wait-for-interaction)
Pauzeer tot een moderator klikt
Opslagwaarde instellen(set-storage-value)
Voeg de vraag toe aan{questions}
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 verstuurdOpslagwaarde 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.
Meer over Custom Commands V3
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.