Logika tvog bota, korak po korak
Flow je popis koraka. Flow Dnevno pitanje ima ih pet: pročitaj katalog, odaberi sljedeće pitanje, objavi ga, otvori nit, prebroji ga. Dodaj korak, spoji vrijednost s njim, testiraj, pa ga uključi.
Dnevno pitanje
AktivnoSpremiOkidač
PromijeniRaspored, svaki dan u 09:00
Dohvati vrijednost pohrane(get-storage-value)
Pročitaj katalog pitanja iz{questions}
Odaberi sljedeći unos(array-at)
Onaj nakon jučerašnjeg
Pošalji poruku(send-message)
Ulazni parametri
Kanal:#general
Poruka:Pitanje dana
Stvori nit(start-thread-from-message)
Otvori nit na toj poruci
Povećaj vrijednost pohrane(increment-storage-value)
Broji pitanje kao postavljeno u{asked}
Samo ilustracija - stvarno sučelje može se razlikovati
Što tih pet koraka daje u 09:00
Pet koraka daje jednu poruku. Nit ispod nje je mjesto gdje stižu odgovori, a brojač pazi da sutra dođe sljedeće pitanje.
Samo ilustracija - stvarno sučelje i ponašanje mogu se razlikovati
Koraci, ne skripte
Svaki je korak jedna radnja iz kataloga s vlastitim ulazima, a vrijednost koju korak proizvede može se spojiti u bilo koji kasniji korak. Uređivač ti nudi samo vrijednosti koje odgovaraju. Iza tog odabira stoji 691 radnja i 181 tip parametra.
Fiksna vrijednost, spojena varijabla ili predložak
Svaki ulaz prima jedno od tri. Predložak miješa tvoj tekst s umetnutim varijablama.
Birač varijabli zna tipove
Skriva vrijednosti koje ne odgovaraju, zalazi u svojstva objekata, upozorava na vrijednosti koje mogu biti prazne i može umjesto tebe dodati korak pretvorbe.
Spojene vrijednosti vide se kao čipovi
Čipovi na ovim recima su katalog pitanja i kanal, pa vidiš odakle je vrijednost došla.
Svaki korak ima cijenu
Od Besplatno do Vrlo teško, a flow ti prije aktivacije pokazuje svoj najgori slučaj.
Ne moraš krenuti od praznog flowa. Nadzorna ploča donosi predloške koje možeš otvoriti i mijenjati: odgovor na pozdrav, dobrodošlica novim članovima, naredba /warn, naredba /remind, XP sustav, prijedlozi i prijava na događaj.
Dnevno pitanje
AktivnoSpremiOkidač
PromijeniRaspored, svaki dan u 09:00
Dohvati vrijednost pohrane(get-storage-value)
Pročitaj katalog pitanja iz{questions}
Odaberi sljedeći unos(array-at)
Onaj nakon jučerašnjeg
Pošalji poruku(send-message)
Ulazni parametri
Kanal:#general
Poruka:Pitanje dana
Stvori nit(start-thread-from-message)
Otvori nit na toj poruci
Povećaj vrijednost pohrane(increment-storage-value)
Broji pitanje kao postavljeno u{asked}
Samo ilustracija - stvarno sučelje može se razlikovati
Grane i petlje
Automatizacije trebaju odluke. Ako, Switch, Nasumična grana i Grana po podnaredbi dijele flow, Za svaku stavku, Za svaki unos mape i Ponovi prolaze popise i mape uz Break i Continue, a blok Try daje ti mjesto za oporavak kad Discord kaže ne.
Svaka grana ima vlastite varijable
Vrijednost postavljena unutar grane pripada toj grani.
Try, s granom On error
Može se prebacivati po kodu pogreške: Missing permissions, Not found, Invalid input, Storage error, Timeout, Interaction expired.
Zaustavi se kad je to pravi odgovor
Ako u ovom flowu objavi podsjetnik u kanalu osoblja i stane, umjesto da objavi prazno pitanje.
Petlja koja izmakne kontroli sama staje, pa greška zaustavi izvođenje umjesto da traje cijelo jutro.
Dnevno pitanje
AktivnoSpremiOkidač
PromijeniRaspored, svaki dan u 09:00
Dohvati vrijednost pohrane(get-storage-value)
Pročitaj katalog pitanja iz{questions}
Ako(if-condition)
Katalog je prazan: objavi podsjetnik u #staff i stani
Za svaku stavku(for-each)
Prolazi katalog dok se ne pojavi neiskorišteno pitanje
Pošalji poruku(send-message)
Objavi pitanje kao embed u#general
Stvori nit(start-thread-from-message)
Otvori nit na toj poruci
Samo ilustracija - stvarno sučelje može se razlikovati
Flowovi mogu pozivati druge flowove, a čekanje je korak
Napiši ponašanje jednom i pozovi ga odakle god trebaš. A kad flow treba odgovor prije nastavka, to je čekanje zapisano, a ne držano u memoriji, pa ga ponovno pokretanje bota ne gubi.
Pozovi drugi flow
Predaj vrijednosti i pročitaj rezultate. Flowovi koji bi se na kraju pozivali u krug odbijaju se.
Pozvani flow pripada izvođenju pozivatelja
Povijest izvođenja to kaže i vodi natrag do pozivatelja. Prilagođeni događaji su slobodnija varijanta: jedan flow šalje, drugi sluša.
Čekanja prežive ponovno pokretanje
Zatraži potvrdu, zatraži odabir, čekaj poruku, prikaži skočni obrazac i čekaj slanje. Ponovno pokretanje usred toga ne gubi čekanje.
Zakazana izvođenja
Schedule flow run unutar flowa rezervira kasnije izvođenje, a postoje i radnje za otkazivanje i popis onoga što čeka.
Ako urediš flow dok njegovo izvođenje nekoga čeka, to izvođenje staje, a dnevnik to javlja. Za nešto što treba ostati upotrebljivo mjesecima, bolji je alat gumb koji pokreće flow: ne košta ništa dok nitko ne klikne i nikad ne istječe.
Pregled prijedloga
AktivnoSpremiOkidač
PromijeniSkočni obrazac poslan, Predloži pitanje
Pošalji poruku(send-message)
Objavi prijedlog s gumbom Odobri u#staff
Čekaj gumb(wait-for-interaction)
Pauziraj dok moderator ne klikne
Postavi vrijednost pohrane(set-storage-value)
Dodaj pitanje u{questions}
Pozovi drugi flow(call-flow)
Dnevno pitanje, s novim pitanjem kao argumentom
Samo ilustracija - stvarno sučelje može se razlikovati
Vidi prije nego pustiš u pogon
Testno izvođenje simulira flow na podacima tvog servera. Ništa se ne šalje, ne mijenja i ne briše. Biraš kao tko se izvodi, u kojem kanalu i što mu okidač predaje, a rezultat prikazuje svaki korak s onim što bi učinio. Testiranje tvoj server ne košta ništa.
Flow se provjerava i prije nego što postane aktivan, pa se problem pojavi u uređivaču, a ne u devet ujutro. A petlja koja izmakne kontroli ne može srušiti tvog bota: sama staje.
Nacrt ili aktivan
Nacrti se spremaju i provjeravaju, ali se nikad ne izvode.
Spremanje aktivnog flowa stupa na snagu odmah
Tvoj bot preuzima novu verziju čim spremiš. Ako to ne uspije, verzija koja je već radila nastavlja obrađivati flow i možeš pokušati ponovno.
Ništa se ne gubi slučajno
Ako je netko drugi spremio flow dok si ga imao otvorenog, dobiješ upozorenje umjesto da prepišeš njegov rad. Obrisani flowovi i moduli mogu se vratiti 30 dana.
Jedna stvar mora biti jasna: samo testna izvođenja prikazuju svaki korak. Pravo izvođenje bilježi svoj status, trajanje i korak na kojem je pao, a ne sve kroz što je prošlo.
Testno izvođenje
Simulirano izvođenje, ništa nije poslanoDohvati vrijednost pohrane
Pročitan katalog, 120 unosa
Odaberi sljedeći unos
Pitanje 42
Pošalji poruku
Objavio bi u #general
Stvori nit
Otvorio bi nit na toj poruci
Povećaj vrijednost pohrane
Traženi brojač išao bi s 41 na 42
Samo ilustracija - stvarno sučelje može se razlikovati
Pitanja o flowovima
Flow koji nekoga čeka nastavlja. Čekanja poput Zatraži potvrdu ili Čekaj poruku zapisana su, a ne držana u memoriji, pa prežive ponovno pokretanje. Jedna iznimka koju vrijedi znati: ako urediš flow dok njegovo izvođenje čeka, to izvođenje staje, a dnevnik to javlja.
Želiš svoj server u beti?
V3 je velik sustav i još se brzo mijenja, pa serveri ulaze jedan po jedan, a ne svi odjednom. Svaku prijavu čita čovjek, a odgovor dobivaš u nekoliko dana.
Serveri koji su već u beti odlučuju o velikom dijelu onoga što gradimo dalje. Ono što izgradiš tvoje je: flowovi i moduli ostaju i nakon što beta završi.