Logikken til boten din, steg for steg
Ein flow er ei liste med steg. Flowen Daily question er fem av dei: les katalogen, vel neste spørsmål, legg det ut, opne ein tråd, tel det. Legg til eit steg, kopl ein verdi inn i det, test det, og slå det så på.
Daily question
AktivLagreUtløysar
EndreTidsplan, kvar dag klokka 09:00
Hent lagringsverdi(get-storage-value)
Les spørsmålskatalogen frå{questions}
Vel neste oppføring(array-at)
Den som kjem etter gårsdagens
Send melding(send-message)
Inndataparametrar
Kanal:#general
Melding:Dagens spørsmål
Opprett tråd(start-thread-from-message)
Opne ein tråd på den meldinga
Auk lagringsverdi(increment-storage-value)
Tel spørsmålet som stilt i{asked}
Berre ei illustrasjon - faktisk grensesnitt kan avvike
Dette gir dei fem stega klokka 09:00
Dei fem stega lagar éi melding. Tråden under er der svara kjem inn, og teljaren sørgjer for at i morgon får neste spørsmål.
Berre ei illustrasjon - faktisk grensesnitt og åtferd kan avvike
Steg, ikkje skript
Kvart steg er éi handling frå katalogen med sine eigne inndata, og verdien eit steg lagar kan koplast inn i kva som helst seinare steg. Editoren tilbyr deg berre verdiane som passar. Det ligg 691 handlingar og 181 parametertypar bak veljaren.
Fast verdi, kopla variabel eller mal
Alle inndata tek ein av dei tre. Ein mal blandar din eigen tekst med innsette variablar.
Variabelveljaren kjenner typane
Han skjuler verdiar som ikkje passar, går inn i objektegenskapar, åtvarar om verdiar som kan vere tomme, og kan leggje til eit konverteringssteg for deg.
Kopla verdiar dukkar opp som chips
Chipsane på desse radene er spørsmålskatalogen og kanalen, så du ser kvar ein verdi kjem frå.
Kvart steg har ein kostnad
Frå Free til Very heavy, og flowen viser deg det verste tilfellet før du aktiverer han.
Du treng ikkje starte med ein tom flow. Dashbordet har ferdige malar du kan opne og endre: ein helsingssvarar, velkomst av nye medlemmer, ein /warn-kommando, ein /remind-kommando, eit XP-system, forslag og påmelding til hendingar.
Daily question
AktivLagreUtløysar
EndreTidsplan, kvar dag klokka 09:00
Hent lagringsverdi(get-storage-value)
Les spørsmålskatalogen frå{questions}
Vel neste oppføring(array-at)
Den som kjem etter gårsdagens
Send melding(send-message)
Inndataparametrar
Kanal:#general
Melding:Dagens spørsmål
Opprett tråd(start-thread-from-message)
Opne ein tråd på den meldinga
Auk lagringsverdi(increment-storage-value)
Tel spørsmålet som stilt i{asked}
Berre ei illustrasjon - faktisk grensesnitt kan avvike
Greiner og løkker
Automatiseringar treng avgjerder. If, Switch, Random branch og Branch on subcommand deler opp flowen, For each item, For each map entry og Repeat går gjennom lister og map med Break og Continue, og ein Try-blokk gir deg ein stad å leggje gjenopprettinga når Discord seier nei.
Kvar grein har sine eigne variablar
Ein verdi som blir sett inne i ei gren, høyrer til den grena.
Try, med ei On error-grein
Han kan velje etter feilkoden: Missing permissions, Not found, Invalid input, Storage error, Timeout, Interaction expired.
Stopp der det er rett å stoppe
If-steget i denne flowen legg ut ei påminning i staff-kanalen og stoppar, i staden for å leggje ut eit tomt spørsmål.
Ei løkke som køyrer av garde, stoppar av seg sjølv, så ein feil stoppar i staden for å halde på heile morgonen.
Daily question
AktivLagreUtløysar
EndreTidsplan, kvar dag klokka 09:00
Hent lagringsverdi(get-storage-value)
Les spørsmålskatalogen frå{questions}
If(if-condition)
Katalogen er tom: legg ut ei påminning i #staff og stopp
For each item(for-each)
Gå gjennom katalogen til eit ubrukt spørsmål dukkar opp
Send melding(send-message)
Legg ut spørsmålet som ein embed i#general
Opprett tråd(start-thread-from-message)
Opne ein tråd på den meldinga
Berre ei illustrasjon - faktisk grensesnitt kan avvike
Flows kan kalle andre flows, og venting er eit steg
Skriv ei åtferd éin gong og kall henne frå kvar du treng ho. Og når ein flow treng eit svar før han held fram, er den ventinga skriven ned i staden for å liggje i minnet, så ein omstart av boten mistar henne ikkje.
Kall ein annan flow
Send verdiar inn og les resultat attende. Flows som ville ende opp med å kalle kvarandre i ring, blir avviste.
Ein kalla flow høyrer til køyringa til den som kallar
Køyrehistorikken seier det og lenkjer attende til den som kalla. Eigne hendingar er den lausare varianten: éin flow sender, ein annan lyttar.
Venting overlever ein omstart
Be om stadfesting, be om eit val, vent på ei melding, vis eit sprettoppvindauge og vent på innsendinga. Ein omstart undervegs mistar ikkje ventinga.
Planlagde køyringar
Schedule flow run bestiller ei seinare køyring frå innsida av ein flow, og det finst handlingar for å avbryte og liste det som ventar.
Viss du redigerer ein flow medan ei køyring av han ventar på nokon, stoppar den ventande køyringa, og loggen seier frå om det. For noko som skal vere brukande i fleire månader, er ein knapp som startar ein flow det betre verktøyet: han kostar ingenting så lenge ingen klikkar, og han går aldri ut.
Vurder eit forslag
AktivLagreUtløysar
EndreSprettoppvindauge sendt inn, Suggest a question
Send melding(send-message)
Legg ut forslaget med ein Godkjenn-knapp i#staff
Vent på knapp(wait-for-interaction)
Pause til ein moderator klikkar
Set lagringsverdi(set-storage-value)
Legg spørsmålet til i{questions}
Kall ein annan flow(call-flow)
Daily question, med det nye spørsmålet som argument
Berre ei illustrasjon - faktisk grensesnitt kan avvike
Sjå det før du sender det ut
Ei testkøyring simulerer flowen mot dine eigne serverdata. Ingenting blir sendt, endra eller sletta. Du vel kven han køyrer som, kva kanal han køyrer i og kva utløysaren gir han, og resultatet viser kvart steg med det det ville ha gjort. Testing kostar serveren din ingenting.
Ein flow blir òg sjekka før han kan bli aktiv, så eit problem dukkar opp i editoren og ikkje klokka ni om morgonen. Og ei løkke som køyrer av garde kan ikkje ta ned boten din: ho stoppar seg sjølv.
Utkast eller aktiv
Utkast blir lagra og sjekka, og dei køyrer aldri.
Å lagre ein aktiv flow tek effekt med ein gong
Boten din tek i bruk den nye versjonen så snart du lagrar. Viss det ikkje går gjennom, held versjonen som allereie køyrde fram med å handtere flowen, og du kan prøve igjen.
Ingenting går tapt ved eit uhell
Viss nokon andre lagra flowen medan du hadde han open, får du ei åtvaring i staden for å overskrive arbeidet deira. Sletta flows og modular kan gjenopprettast i 30 dagar.
Éin ting bør vere klart: berre testkøyringar viser deg kvart steg. Ei live køyring registrerer statusen, tidsbruken og steget ho feila på, ikkje alt ho gjekk gjennom.
Testkøyring
Simulert køyring, ingenting vart sendtHent lagringsverdi
Les katalogen, 120 oppføringar
Vel neste oppføring
Spørsmål 42
Send melding
Ville ha lagt ut i #general
Opprett tråd
Ville ha opna ein tråd på den meldinga
Auk lagringsverdi
Teljaren for stilte spørsmål ville gå frå 41 til 42
Berre ei illustrasjon - faktisk grensesnitt kan avvike
Spørsmål om flows
Ein flow som ventar på nokon gjer det. Ventesteg som Ask for confirmation eller Wait for a message er skrivne ned i staden for å liggje i minnet, så dei overlever ein omstart. Eitt unntak det er greitt å kjenne til: viss du redigerer flowen medan ei køyring av han ventar, stoppar den køyringa, og loggen seier frå om det.
Meir om Custom Commands V3
Vil du ha serveren din med i betaen?
V3 er eit stort system og det rører seg framleis raskt, så servarar kjem inn ein om gongen i staden for alle på ein gong. Kvar søknad blir lesen av ein person, og du høyrer frå oss innan nokre få dagar.
Servarane som alt er med i betaen, avgjer ein god del av det vi byggjer vidare. Det du byggjer er ditt: flows og modular blir verande når betaen er over.