Custom Commands V3Flows i uređivač
Custom Commands V3Beta

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

AktivnoSpremi

Okidač

Promijeni

Raspored, svaki dan u 09:00

#1

Dohvati vrijednost pohrane(get-storage-value)

Pročitaj katalog pitanja iz{questions}

#2

Odaberi sljedeći unos(array-at)

Onaj nakon jučerašnjeg

#3

Pošalji poruku(send-message)

Ulazni parametri

Kanal:#general

Poruka:Pitanje dana

#4

Stvori nit(start-thread-from-message)

Otvori nit na toj poruci

#5

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.

general
Na mreži
Tvoj botBOT09:00

Pitanje dana

Koja je ona jedna igra kojoj se stalno vraćaš, bez obzira koliko ostari?

Pitanje 42 od 120

Mira09:04

Terraria. Instaliram je svake zime.

Pošalji poruku u #general

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

AktivnoSpremi

Okidač

Promijeni

Raspored, svaki dan u 09:00

#1

Dohvati vrijednost pohrane(get-storage-value)

Pročitaj katalog pitanja iz{questions}

#2

Odaberi sljedeći unos(array-at)

Onaj nakon jučerašnjeg

#3

Pošalji poruku(send-message)

Ulazni parametri

Kanal:#general

Poruka:Pitanje dana

#4

Stvori nit(start-thread-from-message)

Otvori nit na toj poruci

#5

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

AktivnoSpremi

Okidač

Promijeni

Raspored, svaki dan u 09:00

#1

Dohvati vrijednost pohrane(get-storage-value)

Pročitaj katalog pitanja iz{questions}

#2

Ako(if-condition)

Katalog je prazan: objavi podsjetnik u #staff i stani

#3

Za svaku stavku(for-each)

Prolazi katalog dok se ne pojavi neiskorišteno pitanje

#4

Pošalji poruku(send-message)

Objavi pitanje kao embed u#general

#5

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

AktivnoSpremi

Okidač

Promijeni

Skočni obrazac poslan, Predloži pitanje

#1

Pošalji poruku(send-message)

Objavi prijedlog s gumbom Odobri u#staff

#2

Čekaj gumb(wait-for-interaction)

Pauziraj dok moderator ne klikne

#3

Postavi vrijednost pohrane(set-storage-value)

Dodaj pitanje u{questions}

#4

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 poslano

Dohvati 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.