Custom Commands V3Flows και επεξεργαστής
Custom Commands V3Beta

Η λογική του bot σου, βήμα βήμα

Ένα flow είναι μια λίστα από βήματα. Το flow Καθημερινή ερώτηση έχει πέντε: διάβασε τον κατάλογο, διάλεξε την επόμενη ερώτηση, δημοσίευσέ την, άνοιξε νήμα, μέτρησέ την. Πρόσθεσε ένα βήμα, σύνδεσέ του μια τιμή, δοκίμασέ το και μετά ενεργοποίησέ το.

Καθημερινή ερώτηση

ΕνεργόΑποθήκευση

Trigger

Αλλαγή

Πρόγραμμα, κάθε μέρα στις 09:00

#1

Ανάγνωση τιμής αποθήκευσης(get-storage-value)

Διάβασε τον κατάλογο ερωτήσεων από το{questions}

#2

Επιλογή επόμενης εγγραφής(array-at)

Αυτή μετά τη χθεσινή

#3

Αποστολή μηνύματος(send-message)

Παράμετροι εισόδου

Κανάλι:#general

Μήνυμα:Ερώτηση της ημέρας

#4

Δημιουργία νήματος(start-thread-from-message)

Άνοιξε νήμα σε αυτό το μήνυμα

#5

Αύξηση τιμής αποθήκευσης(increment-storage-value)

Μέτρησε την ερώτηση ως δημοσιευμένη στο{asked}

Μόνο ενδεικτική εικόνα - το πραγματικό περιβάλλον μπορεί να διαφέρει

Τι παράγουν αυτά τα πέντε βήματα στις 09:00

Τα πέντε βήματα παράγουν ένα μήνυμα. Το νήμα από κάτω είναι εκεί που καταλήγουν οι απαντήσεις και ο μετρητής φροντίζει να πάρει η αυριανή μέρα την επόμενη ερώτηση.

general
Online
Το bot σουBOT09:00

Ερώτηση της ημέρας

Ποιο είναι το ένα παιχνίδι στο οποίο γυρνάς συνέχεια, όσο παλιό κι αν γίνεται;

Ερώτηση 42 από 120

Mira09:04

Terraria. Το ξαναεγκαθιστώ κάθε χειμώνα.

Μήνυμα στο #general

Μόνο ενδεικτική εικόνα - το πραγματικό περιβάλλον και η συμπεριφορά μπορεί να διαφέρουν

Βήματα, όχι scripts

Κάθε βήμα είναι μία ενέργεια από τον κατάλογο με δικές της εισόδους, και η τιμή που παράγει ένα βήμα μπορεί να συνδεθεί σε οποιοδήποτε επόμενο βήμα. Ο επεξεργαστής σού προσφέρει πάντα μόνο τις τιμές που ταιριάζουν. Πίσω από αυτόν τον επιλογέα υπάρχουν 691 ενέργειες και 181 τύποι παραμέτρων.

Σταθερή τιμή, συνδεδεμένη μεταβλητή ή πρότυπο

Κάθε είσοδος δέχεται ένα από τα τρία. Ένα πρότυπο συνδυάζει το δικό σου κείμενο με εισαγόμενες μεταβλητές.

Ο επιλογέας μεταβλητών ξέρει τους τύπους

Κρύβει τις τιμές που δεν ταιριάζουν, μπαίνει βαθιά στις ιδιότητες αντικειμένων, σε προειδοποιεί για τιμές που μπορεί να είναι κενές και μπορεί να προσθέσει για εσένα ένα βήμα μετατροπής.

Οι συνδεδεμένες τιμές εμφανίζονται ως chips

Τα chips σε αυτές τις γραμμές είναι ο κατάλογος ερωτήσεων και το κανάλι, ώστε να βλέπεις από πού προήλθε μια τιμή.

Κάθε βήμα έχει κόστος

Από Δωρεάν μέχρι Πολύ βαρύ, και το flow σού δείχνει το χειρότερο σενάριό του πριν το ενεργοποιήσεις.

Δεν χρειάζεται να ξεκινήσεις από κενό flow. Ο πίνακας ελέγχου έχει πρότυπα που μπορείς να ανοίξεις και να αλλάξεις: έναν απαντητή χαιρετισμού, καλωσόρισμα νέων μελών, μια εντολή /warn, μια εντολή /remind, ένα σύστημα XP, προτάσεις και εγγραφή σε εκδήλωση.

Καθημερινή ερώτηση

ΕνεργόΑποθήκευση

Trigger

Αλλαγή

Πρόγραμμα, κάθε μέρα στις 09:00

#1

Ανάγνωση τιμής αποθήκευσης(get-storage-value)

Διάβασε τον κατάλογο ερωτήσεων από το{questions}

#2

Επιλογή επόμενης εγγραφής(array-at)

Αυτή μετά τη χθεσινή

#3

Αποστολή μηνύματος(send-message)

Παράμετροι εισόδου

Κανάλι:#general

Μήνυμα:Ερώτηση της ημέρας

#4

Δημιουργία νήματος(start-thread-from-message)

Άνοιξε νήμα σε αυτό το μήνυμα

#5

Αύξηση τιμής αποθήκευσης(increment-storage-value)

Μέτρησε την ερώτηση ως δημοσιευμένη στο{asked}

Μόνο ενδεικτική εικόνα - το πραγματικό περιβάλλον μπορεί να διαφέρει

Διακλαδώσεις και βρόχοι

Οι αυτοματισμοί χρειάζονται αποφάσεις. Τα If, Switch, Random branch και Branch on subcommand χωρίζουν το flow, τα For each item, For each map entry και Repeat διατρέχουν λίστες και χάρτες με Break και Continue, και ένα μπλοκ Try σού δίνει ένα μέρος για την ανάκαμψη όταν το Discord λέει όχι.

Κάθε διακλάδωση έχει τις δικές της μεταβλητές

Μια τιμή που ορίζεται μέσα σε μια διακλάδωση ανήκει σε αυτή τη διακλάδωση.

Try, με διακλάδωση On error

Μπορεί να διακλαδίζεται ανάλογα με τον κωδικό σφάλματος: Missing permissions, Not found, Invalid input, Storage error, Timeout, Interaction expired.

Σταμάτα εκεί που το σταμάτημα είναι η σωστή απάντηση

Το If σε αυτό το flow δημοσιεύει μια υπενθύμιση στο κανάλι του staff και σταματά, αντί να δημοσιεύσει μια κενή ερώτηση.

Ένας βρόχος που ξεφεύγει σταματά μόνος του, οπότε ένα λάθος σταματά αντί να τρέχει όλο το πρωί.

Καθημερινή ερώτηση

ΕνεργόΑποθήκευση

Trigger

Αλλαγή

Πρόγραμμα, κάθε μέρα στις 09:00

#1

Ανάγνωση τιμής αποθήκευσης(get-storage-value)

Διάβασε τον κατάλογο ερωτήσεων από το{questions}

#2

If(if-condition)

Ο κατάλογος είναι άδειος: δημοσίευσε υπενθύμιση στο #staff και σταμάτα

#3

For each item(for-each)

Διέτρεξε τον κατάλογο μέχρι να βρεθεί μια αχρησιμοποίητη ερώτηση

#4

Αποστολή μηνύματος(send-message)

Δημοσίευσε την ερώτηση ως embed στο#general

#5

Δημιουργία νήματος(start-thread-from-message)

Άνοιξε νήμα σε αυτό το μήνυμα

Μόνο ενδεικτική εικόνα - το πραγματικό περιβάλλον μπορεί να διαφέρει

Τα flows μπορούν να καλούν άλλα flows και η αναμονή είναι βήμα

Γράψε μια συμπεριφορά μία φορά και κάλεσέ την από όπου τη χρειάζεσαι. Και όταν ένα flow χρειάζεται μια απάντηση πριν συνεχίσει, αυτή η αναμονή καταγράφεται αντί να κρατιέται στη μνήμη, οπότε μια επανεκκίνηση του bot δεν τη χάνει.

Κάλεσε άλλο flow

Δώσε τιμές και διάβασε πίσω αποτελέσματα. Flows που θα κατέληγαν να καλούν το ένα το άλλο κυκλικά απορρίπτονται.

Ένα flow που καλείται ανήκει στην εκτέλεση του καλούντος

Το ιστορικό εκτελέσεων το δείχνει και παραπέμπει πίσω στον καλούντα. Τα custom events είναι η πιο χαλαρή παραλλαγή: ένα flow στέλνει, ένα άλλο ακούει.

Οι αναμονές δεν χάνονται με επανεκκίνηση

Ζήτα επιβεβαίωση, ζήτα επιλογή, περίμενε ένα μήνυμα, εμφάνισε μια αναδυόμενη φόρμα και περίμενε την υποβολή. Μια επανεκκίνηση στο ενδιάμεσο δεν χάνει την αναμονή.

Προγραμματισμένες εκτελέσεις

Το Schedule flow run κλείνει μια μεταγενέστερη εκτέλεση μέσα από ένα flow, και υπάρχουν ενέργειες για ακύρωση και λίστα με ό,τι εκκρεμεί.

Αν επεξεργαστείς ένα flow ενώ μια εκτέλεσή του περιμένει κάποιον, αυτή η εκτέλεση σταματά και το αρχείο καταγραφής το λέει. Για κάτι που πρέπει να μένει χρήσιμο για μήνες, ένα κουμπί που ξεκινά ένα flow είναι το καλύτερο εργαλείο: δεν κοστίζει τίποτα όσο δεν το πατάει κανείς και δεν λήγει ποτέ.

Έλεγχος πρότασης

ΕνεργόΑποθήκευση

Trigger

Αλλαγή

Υποβλήθηκε αναδυόμενη φόρμα, Πρότεινε ερώτηση

#1

Αποστολή μηνύματος(send-message)

Δημοσίευσε την πρόταση με κουμπί Έγκριση στο#staff

#2

Αναμονή για κουμπί(wait-for-interaction)

Παύση μέχρι να πατήσει ένας συντονιστής

#3

Ορισμός τιμής αποθήκευσης(set-storage-value)

Πρόσθεσε την ερώτηση στο{questions}

#4

Κλήση άλλου flow(call-flow)

Καθημερινή ερώτηση, με τη νέα ερώτηση ως όρισμα

Μόνο ενδεικτική εικόνα - το πραγματικό περιβάλλον μπορεί να διαφέρει

Δες το πριν το ενεργοποιήσεις

Μια δοκιμαστική εκτέλεση προσομοιώνει το flow πάνω στα δεδομένα του δικού σου διακομιστή. Τίποτα δεν στέλνεται, δεν αλλάζει και δεν διαγράφεται. Διαλέγεις ως ποιος τρέχει, σε ποιο κανάλι τρέχει και τι του δίνει το trigger, και το αποτέλεσμα δείχνει κάθε βήμα με ό,τι θα είχε κάνει. Οι δοκιμές δεν κοστίζουν τίποτα στον διακομιστή σου.

Ένα flow ελέγχεται επίσης πριν μπορέσει να ενεργοποιηθεί, ώστε ένα πρόβλημα να βγει στον επεξεργαστή και όχι στις εννιά το πρωί. Και ένας βρόχος που ξεφεύγει δεν μπορεί να ρίξει το bot σου: σταματά μόνος του.

Προσχέδιο ή ενεργό

Τα προσχέδια αποθηκεύονται και ελέγχονται, και δεν τρέχουν ποτέ.

Η αποθήκευση ενός ενεργού flow ισχύει αμέσως

Το bot σου παίρνει τη νέα έκδοση μόλις αποθηκεύσεις. Αν αυτό δεν περάσει, η έκδοση που ήδη έτρεχε συνεχίζει να χειρίζεται το flow και μπορείς να ξαναδοκιμάσεις.

Τίποτα δεν χάνεται κατά λάθος

Αν κάποιος άλλος αποθήκευσε το flow ενώ το είχες ανοιχτό, παίρνεις προειδοποίηση αντί να γράψεις πάνω στη δουλειά του. Τα διαγραμμένα flows και modules μπορούν να επαναφερθούν για 30 ημέρες.

Να είμαστε σαφείς σε ένα πράγμα: μόνο οι δοκιμαστικές εκτελέσεις δείχνουν κάθε βήμα. Μια ζωντανή εκτέλεση καταγράφει την κατάστασή της, τον χρόνο της και το βήμα όπου απέτυχε, όχι ό,τι πέρασε.

Δοκιμαστική εκτέλεση

Προσομοιωμένη εκτέλεση, δεν στάλθηκε τίποτα

Ανάγνωση τιμής αποθήκευσης

Ανάγνωση του καταλόγου, 120 εγγραφές

Επιλογή επόμενης εγγραφής

Ερώτηση 42

Αποστολή μηνύματος

Θα δημοσιευόταν στο #general

Δημιουργία νήματος

Θα άνοιγε νήμα σε αυτό το μήνυμα

Αύξηση τιμής αποθήκευσης

Ο μετρητής ερωτήσεων θα πήγαινε από το 41 στο 42

Μόνο ενδεικτική εικόνα - το πραγματικό περιβάλλον μπορεί να διαφέρει

Ερωτήσεις για τα flows

Ένα flow που περιμένει κάποιον, ναι. Οι αναμονές όπως το Ask for confirmation ή το Wait for a message καταγράφονται αντί να κρατιούνται στη μνήμη, οπότε επιβιώνουν από επανεκκίνηση. Μία εξαίρεση που αξίζει να ξέρεις: αν επεξεργαστείς το flow ενώ μια εκτέλεσή του περιμένει, αυτή η εκτέλεση σταματά και το αρχείο καταγραφής το λέει.

Θέλεις τον διακομιστή σου στην beta;

Το V3 είναι ένα μεγάλο σύστημα και εξελίσσεται ακόμα γρήγορα, γι' αυτό οι διακομιστές μπαίνουν έναν έναν και όχι όλοι μαζί. Κάθε αίτηση τη διαβάζει άνθρωπος και σου απαντάμε μέσα σε λίγες μέρες.

Οι διακομιστές που είναι ήδη στην beta αποφασίζουν σε μεγάλο βαθμό τι θα χτίσουμε στη συνέχεια. Ό,τι φτιάχνεις είναι δικό σου: τα flows και τα modules μένουν όταν τελειώσει η beta.