Logika tvého bota krok za krokem
Flow je seznam kroků. Flow Otázka dne má pět kroků: načíst katalog, vybrat další otázku, zveřejnit ji, otevřít vlákno, započítat ji. Přidej krok, napoj na něj hodnotu, otestuj ho a pak ho zapni.
Otázka dne
AktivníUložitSpouštěč
ZměnitPlán, každý den v 09:00
Získat hodnotu z úložiště(get-storage-value)
Načti katalog otázek z{questions}
Vybrat další záznam(array-at)
Ten po včerejším
Odeslat zprávu(send-message)
Vstupní parametry
Kanál:#general
Zpráva:Otázka dne
Vytvořit vlákno(start-thread-from-message)
Otevři vlákno pod touto zprávou
Zvýšit hodnotu v úložišti(increment-storage-value)
Započítej otázku jako položenou v{asked}
Jen ilustrace – skutečné rozhraní se může lišit
Co těchto pět kroků vytvoří v 09:00
Pět kroků vytvoří jednu zprávu. Vlákno pod ní je místo, kam přijdou odpovědi, a počítadlo se postará o to, aby zítra přišla další otázka.
Jen ilustrace – skutečné rozhraní a chování se mohou lišit
Kroky, ne skripty
Každý krok je jedna akce z katalogu s vlastními vstupy a hodnotu, kterou krok vytvoří, můžeš napojit na kterýkoli pozdější krok. Editor ti nabízí jen hodnoty, které sedí. Za tím výběrem stojí 691 akcí a 181 typů parametrů.
Pevná hodnota, napojená proměnná nebo šablona
Každý vstup přijme jednu ze tří možností. Šablona míchá tvůj vlastní text s vloženými proměnnými.
Výběr proměnných zná typy
Skryje hodnoty, které nesedí, umí se prokopat do vlastností objektů, upozorní na hodnoty, které mohou být prázdné, a může za tebe přidat krok s převodem.
Napojené hodnoty se zobrazují jako čipy
Čipy na těchto řádcích jsou katalog otázek a kanál, takže vidíš, odkud hodnota pochází.
Každý krok má svou cenu
Od Zdarma po Velmi náročný, a flow ti před aktivací ukáže nejhorší možný případ.
Nemusíš začínat s prázdným flow. Dashboard obsahuje šablony, které můžeš otevřít a upravit: odpovídač na pozdravy, uvítání nových členů, příkaz /warn, příkaz /remind, systém XP, návrhy a přihlášky na event.
Otázka dne
AktivníUložitSpouštěč
ZměnitPlán, každý den v 09:00
Získat hodnotu z úložiště(get-storage-value)
Načti katalog otázek z{questions}
Vybrat další záznam(array-at)
Ten po včerejším
Odeslat zprávu(send-message)
Vstupní parametry
Kanál:#general
Zpráva:Otázka dne
Vytvořit vlákno(start-thread-from-message)
Otevři vlákno pod touto zprávou
Zvýšit hodnotu v úložišti(increment-storage-value)
Započítej otázku jako položenou v{asked}
Jen ilustrace – skutečné rozhraní se může lišit
Větve a smyčky
Automatizace potřebují rozhodování. Podmínka, Přepínač, Náhodná větev a Větev podle podpříkazu rozdělují flow, Pro každou položku, Pro každý záznam mapy a Opakovat procházejí seznamy a mapy s příkazy Přerušit a Pokračovat a blok Zkusit ti dá místo pro nápravu, když Discord řekne ne.
Každá větev má své vlastní proměnné
Hodnota nastavená uvnitř větve patří jen té větvi.
Zkusit s větví Při chybě
Může se přepínat podle kódu chyby: Chybí oprávnění, Nenalezeno, Neplatný vstup, Chyba úložiště, Vypršel čas, Interakce vypršela.
Zastav tam, kde je to správné řešení
Podmínka v tomto flow zveřejní připomínku v kanálu staffu a skončí, místo aby zveřejnila prázdnou otázku.
Smyčka, která se utrhne z řetězu, se zastaví sama, takže chyba skončí, místo aby běžela celé dopoledne.
Otázka dne
AktivníUložitSpouštěč
ZměnitPlán, každý den v 09:00
Získat hodnotu z úložiště(get-storage-value)
Načti katalog otázek z{questions}
Podmínka(if-condition)
Katalog je prázdný: zveřejni připomínku v #staff a skonči
Pro každou položku(for-each)
Procházej katalog, dokud se nenajde nepoužitá otázka
Odeslat zprávu(send-message)
Zveřejni otázku jako embed v#general
Vytvořit vlákno(start-thread-from-message)
Otevři vlákno pod touto zprávou
Jen ilustrace – skutečné rozhraní se může lišit
Flows mohou volat jiné flows a čekání je krok
Napiš chování jednou a volej ho odkudkoli. A když flow potřebuje před pokračováním odpověď, čekání se zapíše, místo aby se drželo v paměti, takže ho restart bota neztratí.
Zavolání jiného flow
Předej hodnoty a přečti výsledky zpět. Flows, které by se nakonec volaly v kruhu, se odmítnou.
Volané flow patří k běhu volajícího
Historie běhů to říká a odkazuje zpět na volajícího. Vlastní události jsou volnější varianta: jedno flow vysílá, jiné poslouchá.
Čekání přežije restart
Požádej o potvrzení, požádej o výběr, počkej na zprávu, zobraz formulář a počkej na odeslání. Restart mezitím čekání neztratí.
Plánované běhy
Akce Naplánovat běh flow zarezervuje pozdější běh zevnitř flow a existují akce pro zrušení a výpis čekajících běhů.
Pokud flow upravíš, zatímco jeho běh na někoho čeká, takový čekající běh se zastaví a protokol to uvede. Pro něco, co má zůstat použitelné měsíce, je lepším nástrojem tlačítko, které flow spouští: nestojí nic, dokud na něj nikdo neklikne, a nikdy nevyprší.
Posouzení návrhu
AktivníUložitSpouštěč
ZměnitFormulář odeslán, Navrhnout otázku
Odeslat zprávu(send-message)
Zveřejni návrh s tlačítkem Schválit v#staff
Čekat na tlačítko(wait-for-interaction)
Pozastav, dokud moderátor neklikne
Nastavit hodnotu v úložišti(set-storage-value)
Přidej otázku do{questions}
Zavolat jiné flow(call-flow)
Otázka dne, s novou otázkou jako argumentem
Jen ilustrace – skutečné rozhraní se může lišit
Podívej se na to, než to nasadíš
Testovací běh simuluje flow nad daty tvého serveru. Nic se neodešle, nezmění ani nesmaže. Vybereš, jako kdo běží, v jakém kanálu a co mu předá spouštěč, a výsledek ukáže každý krok s tím, co by udělal. Testování tvůj server nic nestojí.
Flow se také kontroluje, než se může aktivovat, takže problém najdeš v editoru, a ne v devět ráno. A smyčka, která se utrhne z řetězu, tvého bota nesundá: zastaví se sama.
Návrh, nebo aktivní
Koncepty se ukládají a kontrolují, ale nikdy neběží.
Uložení aktivního flow se projeví okamžitě
Tvůj bot převezme novou verzi hned po uložení. Pokud se to nepovede, flow dál obsluhuje verze, která už běžela, a můžeš to zkusit znovu.
Nic se neztratí omylem
Pokud flow uložil někdo jiný, zatímco jsi ho měl otevřené, dostaneš varování místo přepsání jeho práce. Smazané flows a moduly lze 30 dní obnovit.
Jedno ať je jasné: každý krok ukážou jen testovací běhy. Ostrý běh zaznamená svůj stav, časování a krok, na kterém selhal, ne všechno, čím prošel.
Testovací běh
Simulovaný běh, nic se neodeslaloZískat hodnotu z úložiště
Načtení katalogu, 120 záznamů
Vybrat další záznam
Otázka 42
Odeslat zprávu
Zveřejnila by v #general
Vytvořit vlákno
Otevřelo by vlákno pod touto zprávou
Zvýšit hodnotu v úložišti
Počítadlo položených otázek by vzrostlo ze 41 na 42
Jen ilustrace – skutečné rozhraní se může lišit
Otázky o flows
Flow, které na někoho čeká, ano. Čekání jako Požádat o potvrzení nebo Počkat na zprávu se zapisují, místo aby se držela v paměti, takže restart přežijí. Jedna výjimka stojí za zmínku: když flow upravíš, zatímco jeho běh čeká, takový běh se zastaví a protokol to uvede.
Víc o Custom Commands V3
Chceš svůj server do bety?
V3 je velký systém a pořád se rychle vyvíjí, proto servery přijímáme postupně, ne všechny najednou. Každou přihlášku čte člověk a ozveme se ti do pár dní.
Servery, které už v betě jsou, rozhodují o velké části toho, co budeme stavět dál. To, co vytvoříš, je tvoje: flows a moduly zůstanou i po skončení bety.