Custom Commands V3Flows și editorul
Custom Commands V3Beta

Logica botului tău, pas cu pas

Un flow este o listă de pași. Flow-ul Întrebarea zilei are cinci: citește catalogul, alege următoarea întrebare, postează-o, deschide un fir, numără-o. Adaugă un pas, conectează-i o valoare, testează-l, apoi pornește-l.

Întrebarea zilei

ActivSalvează

Declanșator

Schimbă

Programare, în fiecare zi la 09:00

#1

Citește valoarea din stocare(get-storage-value)

Citește catalogul de întrebări din{questions}

#2

Alege următoarea intrare(array-at)

Cea de după cea de ieri

#3

Trimite mesaj(send-message)

Parametri de intrare

Canal:#general

Mesaj:Întrebarea zilei

#4

Creează fir(start-thread-from-message)

Deschide un fir pe acel mesaj

#5

Crește valoarea din stocare(increment-storage-value)

Numără întrebarea ca pusă în{asked}

Doar ilustrație - interfața reală poate diferi

Ce produc acei cinci pași la 09:00

Cei cinci pași produc un singur mesaj. Firul de sub el e locul unde ajung răspunsurile, iar contorul se asigură că mâine primește următoarea întrebare.

general
Online
Botul tăuBOT09:00

Întrebarea zilei

Care e jocul la care te întorci mereu, oricât de vechi ar deveni?

Întrebarea 42 din 120

Mira09:04

Terraria. Îl reinstalez în fiecare iarnă.

Mesaj în #general

Doar ilustrație - interfața și comportamentul real pot diferi

Pași, nu scripturi

Fiecare pas este o acțiune din catalog, cu propriile intrări, iar valoarea produsă de un pas poate fi conectată la orice pas următor. Editorul îți oferă mereu doar valorile potrivite. În spatele selectorului sunt 691 de acțiuni și 181 de tipuri de parametri.

Valoare fixă, variabilă conectată sau șablon

Fiecare intrare acceptă una dintre cele trei. Un șablon îmbină textul tău cu variabile inserate.

Selectorul de variabile ține cont de tip

Ascunde valorile care nu se potrivesc, intră în proprietățile obiectelor, te avertizează despre valori care pot fi goale și poate adăuga pentru tine un pas de conversie.

Valorile conectate apar ca etichete

Etichetele de pe aceste rânduri sunt catalogul de întrebări și canalul, ca să vezi de unde vine o valoare.

Fiecare pas are un cost

De la Gratuit la Foarte greu, iar flow-ul îți arată cel mai rău caz înainte să-l activezi.

Nu trebuie să pornești de la un flow gol. Dashboard-ul vine cu șabloane pe care le poți deschide și modifica: un răspuns la salut, întâmpinarea membrilor noi, o comandă /warn, o comandă /remind, un sistem de XP, sugestii și o înscriere la eveniment.

Întrebarea zilei

ActivSalvează

Declanșator

Schimbă

Programare, în fiecare zi la 09:00

#1

Citește valoarea din stocare(get-storage-value)

Citește catalogul de întrebări din{questions}

#2

Alege următoarea intrare(array-at)

Cea de după cea de ieri

#3

Trimite mesaj(send-message)

Parametri de intrare

Canal:#general

Mesaj:Întrebarea zilei

#4

Creează fir(start-thread-from-message)

Deschide un fir pe acel mesaj

#5

Crește valoarea din stocare(increment-storage-value)

Numără întrebarea ca pusă în{asked}

Doar ilustrație - interfața reală poate diferi

Ramuri și bucle

Automatizările au nevoie de decizii. If, Switch, Random branch și Branch on subcommand împart flow-ul, For each item, For each map entry și Repeat parcurg liste și hărți cu Break și Continue, iar un bloc Try îți dă un loc unde să pui remedierea când Discord spune nu.

Fiecare ramură are propriile variabile

O valoare setată într-o ramură aparține acelei ramuri.

Try, cu o ramură On error

Poate comuta după codul erorii: Missing permissions, Not found, Invalid input, Storage error, Timeout, Interaction expired.

Oprește-te acolo unde oprirea e răspunsul corect

If-ul din acest flow postează un memento în canalul staff-ului și se oprește, în loc să posteze o întrebare goală.

O buclă scăpată de sub control se oprește singură, așa că o greșeală se oprește în loc să ruleze toată dimineața.

Întrebarea zilei

ActivSalvează

Declanșator

Schimbă

Programare, în fiecare zi la 09:00

#1

Citește valoarea din stocare(get-storage-value)

Citește catalogul de întrebări din{questions}

#2

Dacă(if-condition)

Catalogul este gol: postează un memento în #staff și oprește-te

#3

Pentru fiecare element(for-each)

Parcurge catalogul până apare o întrebare nefolosită

#4

Trimite mesaj(send-message)

Postează întrebarea ca embed în#general

#5

Creează fir(start-thread-from-message)

Deschide un fir pe acel mesaj

Doar ilustrație - interfața reală poate diferi

Flow-urile pot apela alte flow-uri, iar așteptarea este un pas

Scrie un comportament o dată și apelează-l de oriunde ai nevoie. Iar când un flow are nevoie de un răspuns înainte să continue, acea așteptare este notată, nu ținută în memorie, așa că o repornire a botului nu o pierde.

Apelează alt flow

Transmite valori și citește rezultatele înapoi. Flows care ar ajunge să se apeleze reciproc în cerc sunt refuzate.

Un flow apelat aparține rulării apelantului

Istoricul rulărilor o arată și face legătura înapoi la apelant. Evenimentele custom sunt varianta mai liberă: un flow trimite, altul ascultă.

Așteptările supraviețuiesc unei reporniri

Cere o confirmare, cere o alegere, așteaptă un mesaj, arată o fereastră pop-up și așteaptă trimiterea. O repornire pe parcurs nu pierde așteptarea.

Rulări programate

Schedule flow run rezervă o rulare ulterioară din interiorul unui flow și există acțiuni pentru anularea și listarea celor în așteptare.

Dacă editezi un flow în timp ce o rulare a lui așteaptă pe cineva, acea rulare se oprește, iar jurnalul o spune. Pentru ceva care trebuie să rămână utilizabil luni de zile, un buton care pornește un flow e unealta mai bună: nu costă nimic cât timp nimeni nu dă clic și nu expiră niciodată.

Evaluează o sugestie

ActivSalvează

Declanșator

Schimbă

Fereastră pop-up trimisă, Sugerează o întrebare

#1

Trimite mesaj(send-message)

Postează sugestia cu un buton Aprobă în#staff

#2

Așteaptă butonul(wait-for-interaction)

Pune pe pauză până când un moderator dă clic

#3

Setează valoarea din stocare(set-storage-value)

Adaugă întrebarea în{questions}

#4

Apelează alt flow(call-flow)

Întrebarea zilei, cu noua întrebare ca argument

Doar ilustrație - interfața reală poate diferi

Vezi-l înainte să-l publici

O rulare de test simulează flow-ul pe datele propriului tău server. Nu se trimite, nu se schimbă și nu se șterge nimic. Alegi ca cine rulează, în ce canal rulează și ce îi transmite declanșatorul, iar rezultatul arată fiecare pas cu ce ar fi făcut. Testarea nu costă nimic serverul tău.

Un flow este verificat și înainte să poată deveni activ, așa că o problemă apare în editor, nu la nouă dimineața. Iar o buclă scăpată de sub control nu-ți poate doborî botul: se oprește singură.

Ciornă sau activ

Ciornele sunt salvate și verificate, dar nu rulează niciodată.

Salvarea unui flow activ intră în vigoare imediat

Botul tău preia noua versiune de îndată ce salvezi. Dacă nu reușește, versiunea care rula deja continuă să gestioneze flow-ul și poți încerca din nou.

Nimic nu se pierde din greșeală

Dacă altcineva a salvat flow-ul cât timp îl aveai deschis, primești un avertisment în loc să-i suprascrii munca. Flows și modulele șterse pot fi restaurate timp de 30 de zile.

Un lucru trebuie să fie clar: doar rulările de test îți arată fiecare pas. O rulare live își înregistrează starea, durata și pasul la care a eșuat, nu tot ce a parcurs.

Rulare de test

Rulare simulată, nu s-a trimis nimic

Get storage value

Citește catalogul, 120 de intrări

Alege următoarea intrare

Întrebarea 42

Trimite mesaj

Ar fi postat în #general

Creează fir

Ar fi deschis un fir pe acel mesaj

Increase storage value

Contorul întrebat ar trece de la 41 la 42

Doar ilustrație - interfața reală poate diferi

Întrebări despre flow-uri

Unul care așteaptă pe cineva, da. Așteptările precum Ask for confirmation sau Wait for a message sunt notate, nu ținute în memorie, deci supraviețuiesc unei reporniri. O excepție bună de știut: dacă editezi flow-ul în timp ce o rulare a lui așteaptă, acea rulare se oprește, iar jurnalul o spune.

Vrei serverul tău în beta?

V3 este un sistem mare și încă evoluează repede, așa că serverele intră pe rând, nu toate odată. Fiecare cerere este citită de o persoană, iar răspunsul îl primești în câteva zile.

Serverele deja aflate în beta decid o bună parte din ce construim mai departe. Ce construiești este al tău: flows și modulele rămân și după încheierea beta.