Custom Commands V3Flows a editor
Custom Commands V3Beta

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žit

Spouštěč

Změnit

Plán, každý den v 09:00

#1

Získat hodnotu z úložiště(get-storage-value)

Načti katalog otázek z{questions}

#2

Vybrat další záznam(array-at)

Ten po včerejším

#3

Odeslat zprávu(send-message)

Vstupní parametry

Kanál:#general

Zpráva:Otázka dne

#4

Vytvořit vlákno(start-thread-from-message)

Otevři vlákno pod touto zprávou

#5

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.

general
Online
Tvůj botBOT09:00

Otázka dne

Jaká je ta jedna hra, ke které se pořád vracíš, ať je jakkoli stará?

Otázka 42 ze 120

Mira09:04

Terraria. Každou zimu si ji znovu nainstaluju.

Napsat do #general

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žit

Spouštěč

Změnit

Plán, každý den v 09:00

#1

Získat hodnotu z úložiště(get-storage-value)

Načti katalog otázek z{questions}

#2

Vybrat další záznam(array-at)

Ten po včerejším

#3

Odeslat zprávu(send-message)

Vstupní parametry

Kanál:#general

Zpráva:Otázka dne

#4

Vytvořit vlákno(start-thread-from-message)

Otevři vlákno pod touto zprávou

#5

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žit

Spouštěč

Změnit

Plán, každý den v 09:00

#1

Získat hodnotu z úložiště(get-storage-value)

Načti katalog otázek z{questions}

#2

Podmínka(if-condition)

Katalog je prázdný: zveřejni připomínku v #staff a skonči

#3

Pro každou položku(for-each)

Procházej katalog, dokud se nenajde nepoužitá otázka

#4

Odeslat zprávu(send-message)

Zveřejni otázku jako embed v#general

#5

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žit

Spouštěč

Změnit

Formulář odeslán, Navrhnout otázku

#1

Odeslat zprávu(send-message)

Zveřejni návrh s tlačítkem Schválit v#staff

#2

Čekat na tlačítko(wait-for-interaction)

Pozastav, dokud moderátor neklikne

#3

Nastavit hodnotu v úložišti(set-storage-value)

Přidej otázku do{questions}

#4

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 neodeslalo

Zí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.

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.