La logique de ton bot, pas à pas
Un flow est une liste d'étapes. Le flow Question du jour en compte cinq : lire le catalogue, choisir la prochaine question, la publier, ouvrir un fil, la compter. Ajoute une étape, branche-y une valeur, teste, puis active.
Question du jour
ActifEnregistrerDéclencheur
ModifierPlanification, tous les jours à 09:00
Lire une valeur de stockage(get-storage-value)
Lire le catalogue de questions dans{questions}
Choisir l'entrée suivante(array-at)
Celle qui suit celle d'hier
Envoyer un message(send-message)
Paramètres d'entrée
Salon:#général
Message:Question du jour
Créer un fil(start-thread-from-message)
Ouvrir un fil sur ce message
Incrémenter une valeur de stockage(increment-storage-value)
Compter la question comme posée dans{asked}
Illustration uniquement : l'interface réelle peut différer
Ce que ces cinq étapes produisent à 09:00
Les cinq étapes produisent un seul message. Le fil en dessous accueille les réponses, et le compteur garantit que demain aura la question suivante.
Illustration uniquement : l'interface et le comportement réels peuvent différer
Des étapes, pas des scripts
Chaque étape est une action du catalogue avec ses propres entrées, et la valeur produite par une étape peut être branchée sur n'importe quelle étape suivante. L'éditeur ne te propose que les valeurs qui conviennent. Derrière ce sélecteur, il y a 691 actions et 181 types de paramètres.
Valeur fixe, variable branchée ou modèle
Chaque entrée accepte l'un des trois. Un modèle mélange ton propre texte et des variables insérées.
Le sélecteur de variables connaît les types
Il masque les valeurs qui ne conviennent pas, explore les propriétés des objets, te prévient des valeurs qui peuvent être vides et peut ajouter pour toi une étape de conversion.
Les valeurs branchées apparaissent sous forme de pastilles
Les pastilles de ces lignes sont le catalogue de questions et le salon, pour que tu voies d'où vient une valeur.
Chaque étape a un coût
De Gratuit à Très lourd, et le flow te montre son pire scénario avant que tu l'actives.
Tu n'as pas à partir d'un flow vide. Le tableau de bord propose des modèles que tu peux ouvrir et modifier : un répondeur de salutations, l'accueil des nouveaux membres, une commande /warn, une commande /remind, un système d'XP, des suggestions et une inscription à un événement.
Question du jour
ActifEnregistrerDéclencheur
ModifierPlanification, tous les jours à 09:00
Lire une valeur de stockage(get-storage-value)
Lire le catalogue de questions dans{questions}
Choisir l'entrée suivante(array-at)
Celle qui suit celle d'hier
Envoyer un message(send-message)
Paramètres d'entrée
Salon:#général
Message:Question du jour
Créer un fil(start-thread-from-message)
Ouvrir un fil sur ce message
Incrémenter une valeur de stockage(increment-storage-value)
Compter la question comme posée dans{asked}
Illustration uniquement : l'interface réelle peut différer
Branches et boucles
Une automatisation doit pouvoir décider. Si, Switch, Branche aléatoire et Branche selon la sous-commande divisent le flow ; Pour chaque élément, Pour chaque entrée de table et Répéter parcourent listes et tables avec Interrompre et Continuer, et un bloc Essayer te donne un endroit où gérer le problème quand Discord dit non.
Chaque branche a ses propres variables
Une valeur définie dans une branche appartient à cette branche.
Essayer, avec une branche En cas d'erreur
Elle peut réagir selon le code d'erreur : Permissions manquantes, Introuvable, Entrée invalide, Erreur de stockage, Délai dépassé, Interaction expirée.
S'arrêter quand c'est la bonne réponse
Le Si de ce flow publie un rappel dans le salon du staff et s'arrête, au lieu de publier une question vide.
Une boucle qui s'emballe s'arrête toute seule : une erreur s'arrête net au lieu de tourner toute la matinée.
Question du jour
ActifEnregistrerDéclencheur
ModifierPlanification, tous les jours à 09:00
Lire une valeur de stockage(get-storage-value)
Lire le catalogue de questions dans{questions}
Si(if-condition)
Le catalogue est vide : publier un rappel dans #staff et s'arrêter
Pour chaque élément(for-each)
Parcourir le catalogue jusqu'à trouver une question encore inutilisée
Envoyer un message(send-message)
Publier la question sous forme d'embed dans#général
Créer un fil(start-thread-from-message)
Ouvrir un fil sur ce message
Illustration uniquement : l'interface réelle peut différer
Les flows peuvent en appeler d'autres, et attendre est une étape
Écris un comportement une fois et appelle-le d'où tu veux. Et quand un flow a besoin d'une réponse avant de continuer, cette attente est consignée au lieu d'être gardée en mémoire : un redémarrage du bot ne la perd pas.
Appeler un autre flow
Transmets des valeurs et récupère les résultats. Les flows qui finiraient par s'appeler en boucle sont refusés.
Un flow appelé fait partie de l'exécution de l'appelant
L'historique des exécutions l'indique et renvoie vers l'appelant. Les événements personnalisés sont la variante plus souple : un flow envoie, un autre écoute.
Les attentes résistent à un redémarrage
Demander une confirmation, demander un choix, attendre un message, afficher un formulaire et attendre son envoi. Un redémarrage entre-temps ne fait pas perdre l'attente.
Exécutions planifiées
Planifier l'exécution d'un flow réserve une exécution ultérieure depuis un flow, et des actions permettent d'annuler et de lister ce qui est en attente.
Si tu modifies un flow pendant qu'une de ses exécutions attend quelqu'un, cette exécution s'arrête, et le journal le précise. Pour quelque chose qui doit rester utilisable pendant des mois, un bouton qui lance un flow est le meilleur outil : il ne coûte rien tant que personne ne clique et il n'expire jamais.
Examiner une suggestion
ActifEnregistrerDéclencheur
ModifierFormulaire envoyé, Suggérer une question
Envoyer un message(send-message)
Publier la suggestion avec un bouton Approuver dans#staff
Attendre un bouton(wait-for-interaction)
Mettre en pause jusqu'au clic d'un modérateur
Définir une valeur de stockage(set-storage-value)
Ajouter la question à{questions}
Appeler un autre flow(call-flow)
Question du jour, avec la nouvelle question en argument
Illustration uniquement : l'interface réelle peut différer
Vois le résultat avant la mise en ligne
Une exécution de test simule le flow avec les données de ton propre serveur. Rien n'est envoyé, modifié ou supprimé. Tu choisis en tant que qui il s'exécute, dans quel salon, et ce que le déclencheur lui transmet, et le résultat montre chaque étape avec ce qu'elle aurait fait. Tester ne coûte rien à ton serveur.
Un flow est aussi vérifié avant de pouvoir devenir actif, donc un problème apparaît dans l'éditeur plutôt qu'à neuf heures du matin. Et une boucle qui s'emballe ne peut pas faire tomber ton bot : elle s'arrête d'elle-même.
Brouillon ou actif
Les brouillons sont enregistrés et vérifiés, mais ils ne s'exécutent jamais.
Enregistrer un flow actif s'applique tout de suite
Ton bot récupère la nouvelle version dès que tu enregistres. Si ça ne passe pas, la version qui tournait déjà continue de gérer le flow et tu peux réessayer.
Rien ne se perd par accident
Si quelqu'un d'autre a enregistré le flow pendant que tu l'avais ouvert, tu reçois un avertissement au lieu d'écraser son travail. Les flows et modules supprimés peuvent être restaurés pendant 30 jours.
Une précision importante : seules les exécutions de test te montrent chaque étape. Une exécution réelle enregistre son statut, sa durée et l'étape où elle a échoué, pas tout ce qu'elle a traversé.
Exécution de test
Exécution simulée, rien n'a été envoyéLire une valeur de stockage
Lire le catalogue, 120 entrées
Choisir l'entrée suivante
Question 42
Envoyer un message
Aurait publié dans #general
Créer un fil
Aurait ouvert un fil sur ce message
Incrémenter une valeur de stockage
Le compteur de questions posées passerait de 41 à 42
Illustration uniquement : l'interface réelle peut différer
Questions sur les flows
Un flow qui attend quelqu'un, oui. Les attentes comme Demander une confirmation ou Attendre un message sont consignées au lieu d'être gardées en mémoire, donc elles survivent à un redémarrage. Une exception à connaître : si tu modifies le flow pendant qu'une de ses exécutions attend, cette exécution s'arrête, et le journal le précise.
En savoir plus sur Custom Commands V3
Tu veux faire entrer ton serveur dans la bêta ?
La V3 est un gros système qui évolue encore vite, donc les serveurs entrent un par un plutôt que tous d'un coup. Chaque candidature est lue par une personne, et tu as une réponse sous quelques jours.
Les serveurs déjà dans la bêta décident d'une bonne partie de ce que nous construisons ensuite. Ce que tu construis t'appartient : les flows et les modules restent à la fin de la bêta.