Custom Commands V3Flows et éditeur
Custom Commands V3Bêta

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

ActifEnregistrer

Déclencheur

Modifier

Planification, tous les jours à 09:00

#1

Lire une valeur de stockage(get-storage-value)

Lire le catalogue de questions dans{questions}

#2

Choisir l'entrée suivante(array-at)

Celle qui suit celle d'hier

#3

Envoyer un message(send-message)

Paramètres d'entrée

Salon:#général

Message:Question du jour

#4

Créer un fil(start-thread-from-message)

Ouvrir un fil sur ce message

#5

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.

général
En ligne
Ton botBOT09:00

Question du jour

Quel est le seul jeu auquel tu reviens toujours, même s'il prend de l'âge ?

Question 42 sur 120

Mira09:04

Terraria. Je le réinstalle chaque hiver.

Envoyer un message dans #général

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

ActifEnregistrer

Déclencheur

Modifier

Planification, tous les jours à 09:00

#1

Lire une valeur de stockage(get-storage-value)

Lire le catalogue de questions dans{questions}

#2

Choisir l'entrée suivante(array-at)

Celle qui suit celle d'hier

#3

Envoyer un message(send-message)

Paramètres d'entrée

Salon:#général

Message:Question du jour

#4

Créer un fil(start-thread-from-message)

Ouvrir un fil sur ce message

#5

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

ActifEnregistrer

Déclencheur

Modifier

Planification, tous les jours à 09:00

#1

Lire une valeur de stockage(get-storage-value)

Lire le catalogue de questions dans{questions}

#2

Si(if-condition)

Le catalogue est vide : publier un rappel dans #staff et s'arrêter

#3

Pour chaque élément(for-each)

Parcourir le catalogue jusqu'à trouver une question encore inutilisée

#4

Envoyer un message(send-message)

Publier la question sous forme d'embed dans#général

#5

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

ActifEnregistrer

Déclencheur

Modifier

Formulaire envoyé, Suggérer une question

#1

Envoyer un message(send-message)

Publier la suggestion avec un bouton Approuver dans#staff

#2

Attendre un bouton(wait-for-interaction)

Mettre en pause jusqu'au clic d'un modérateur

#3

Définir une valeur de stockage(set-storage-value)

Ajouter la question à{questions}

#4

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.

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.