Construire

Comment les données circulent

Ce qu'un node peut lire, d'où ça vient, et pourquoi une valeur peut être vide.

Une exécution part d'un Event et suit les liens, node après node. En chemin, elle remplit un contexte : ce que l'Event a apporté, puis ce que chaque node a produit. Un node lit dans ce contexte, avec des expressions {{ … }}.

D'où viennent les données

SourceÉcritContient
L'Eventevents.<id>.…Ce qui l'a déclenché : le membre qui arrive, le message envoyé, les options saisies dans une commande
Une Actionactions.<id>.…Ce qu'elle a fait : le message qu'elle vient d'envoyer, le salon qu'elle vient de créer, la nouvelle valeur d'une Variable
Une Conditionconditions.<id>.resultSi elle est passée
Le serveurserver.…Le serveur où le Blueprint tourne : son nom, son nombre de membres, sa langue. Lisible partout
Les Variables temporairestemp.<nom>Ce que tu as rangé sous un nom, le temps de l'exécution

Un node écrit sa sortie une fois qu'il a tourné, jamais avant.

Certaines sorties sont un code pris dans une liste fixe : la raison d'un départ (kicked), le type d'un salon (voice), l'action d'un Event vocal (moved). Chacune a sa version en mots, dans la langue du serveur, juste à côté : reasonText (« expulsion »), typeText (« vocal »), actionText (« changement de salon »). Compare le code dans une Condition, écris les mots dans un message. La référence des nodes liste ce que chacun écrit, sortie par sortie, et l'onglet Sortie du panneau de propriétés le montre dans l'éditeur.

Ce qu'un node peut lire

Un node ne lit que ce qui a tourné avant lui sur le chemin qui y mène. Tape {{ dans un champ : l'éditeur ne propose que ces données-là, en suivant les liens du Blueprint. Un node d'une autre branche, ou qui vient après, n'est jamais proposé.

Une Action qui échoue prend sa sortie Échec et n'écrit que success (faux) et error : ce qui suit son Échec ne trouve pas le message qu'elle aurait envoyé. error.code dit ce qui s'est passé, error.message le dit dans la langue du serveur (Erreurs).

« Peut être vide »

Une valeur peut manquer au moment où un node la lit. L'éditeur la colore en orange dans le champ, dans deux cas :

  • le node qui l'écrit n'a pas tourné, ou pas réussi, sur tous les chemins qui mènent ici : un node relié à la fois au Succès et à l'Échec d'une Action, ou que deux chemins atteignent dont un seul passe par le node qui écrit ;
  • Discord ne l'envoie pas toujours : le salon vocal d'un membre qui n'est dans aucun, la catégorie d'un salon qui n'est dans aucune. La colonne « Peut être vide » de la référence le dit pour chaque champ.

Une valeur vide s'affiche comme rien dans un texte, et fait échouer un champ obligatoire. Donne-lui une valeur de secours : {{ default(events.<id>.member.voiceChannel.name, 'pas en vocal') }}. L'aperçu sous le champ, avec Si vide, montre ce que ça donne.

Plusieurs branches

Une sortie reliée à plusieurs nodes les exécute l'un après l'autre, dans l'ordre affiché sur ses liens : la première branche va jusqu'au bout, puis la deuxième commence. Voir Ajouter et relier des Nodes.

Les branches ne se voient pas dans l'éditeur : un node de la deuxième ne peut pas citer un node de la première. Pour passer une valeur de l'une à l'autre, range-la dans une Variable temporaire : la deuxième branche lit ce que la première y a écrit, puisqu'elle tourne après.

Ce qui dure plus longtemps

Le contexte disparaît à la fin de l'exécution. Pour retenir une valeur d'une exécution à l'autre (l'XP d'un membre, un compteur, le salon choisi avec /setup), utilise une Variable du serveur ou d'un membre : elle reste en base, et elle est écrite dès que son node tourne.

Après une attente, la branche reprend avec le contexte du moment où elle s'est arrêtée : les données de l'Event sont celles du départ, pas celles d'aujourd'hui.

Un exemple de bout en bout

Un Blueprint d'accueil :

  1. Membre ajouté démarre l'exécution. Il écrit events.<id>.member : le nouveau membre, avec son nom, son avatar, sa date de création de compte.
  2. Ajouter à une Variable, sur une Variable du serveur arrivees, ajoute 1. Il écrit actions.<id>.value, la nouvelle valeur.
  3. Envoyer un message dans le salon d'accueil :
    Bienvenue {{ events.<id>.member.displayName }} ! Tu es le {{ actions.<id>.value }}ᵉ membre arrivé ici, sur {{ server.memberCount }}.
    

    Il lit l'Event (étape 1), la Variable (étape 2) et le serveur. Il écrit actions.<id>.message, le message envoyé.
  4. Ajouter une réaction sur ce message lit son salon et son id dans la sortie de l'étape 3 : {{ actions.<id>.message.channel.id }} et {{ actions.<id>.message.id }}.

Si le bot n'a pas le droit d'écrire dans le salon, l'étape 3 prend sa sortie Échec : la réaction, reliée à son Succès, ne tourne pas. Un node relié à l'Échec peut écrire {{ actions.<id>.error.message }} dans un salon de logs.