Variables lié aux evenements.
Liste des variables lié aux evenements.
Variables disponibles par événement (Exhaustif)
Les variables d’événement sont résolues dans les templates via la syntaxe ((nomDeLaVariable)). Elles sont injectées automatiquement par le dispatcher d’événements du Runner au moment où l’événement correspondant se produit sur Discord.
1. Variables globales toujours disponibles
Ces variables de base sont fournies avec tous les événements déclenchés par la Gateway Discord.
| Variable | Type | Description |
|---|---|---|
((event.name)) |
string |
Nom de l’événement déclenché (ex: messageCreate, guildMemberAdd, voiceStateUpdate). |
((timestamp)) |
string |
Timestamp exact de l’exécution (en millisecondes depuis l’époque). |
((actualTime)) |
string |
Date et heure de l’événement au format ISO8601. |
((guildId)) |
string |
ID du serveur concerné (si applicable, vide sinon). |
((channelId)) |
string |
ID du salon concerné (si applicable, vide sinon). |
((userId)) |
string |
ID de l’utilisateur concerné/initiateur (si applicable, vide sinon). |
((workflow.type)) |
string |
Fixé à event pour tous les événements. |
((bot.uptime)) |
string |
Durée de fonctionnement du bot en millisecondes. |
2. Variables de l’Application Bot
Ces détails caractérisent le bot en cours d’exécution et sont injectés à chaque événement.
| Variable | Type | Description |
|---|---|---|
((bot.id)) |
string |
Snowflake ID unique du bot. |
((bot.username)) |
string |
Nom d’utilisateur du bot. |
((bot.guildCount)) |
string |
Nombre total de serveurs où le bot est installé. |
((bot.guildNames)) |
string |
Liste des noms de serveurs (séparés par des virgules). |
((bot.invite)) |
string |
Lien d’invitation OAuth2 du bot. |
((bot.ping)) / ((ping)) |
string |
Latence de la Gateway Discord en millisecondes. |
((bot.shardId)) |
string |
ID du Shard actuel (généralement 0). |
((bot.nodeVersion)) |
string |
Version du moteur d’exécution (ex: Dart 3.x.x). |
3. Hydratation automatique de contexte (Serveur, Salon, Membre)
Si l’événement fournit un ID de serveur (guildId), de salon (channelId) ou d’utilisateur (userId), le moteur extrait automatiquement les ensembles de variables suivants :
Contexte Serveur (guild.*)
Disponible si guildId est renseigné.
((guild.id)): ID unique du serveur.((guild.name)): Nom du serveur.((guild.memberCount))/((guild.count)): Nombre de membres du serveur.((guild.ownerId)): ID du propriétaire du serveur.((guild.preferredLocale)): Langue préférée du serveur.((guild.description)): Description du serveur (si définie).((guild.vanityUrlCode)): Code d’invitation personnalisée (si défini).((guild.verificationLevel)): Niveau de vérification du serveur.((guild.mfaLevel)): Niveau de double authentification requis.((guild.nsfwLevel)): Niveau de filtrage NSFW.((guild.premiumTier)): Niveau de Boost de serveur.((guild.premiumSubscriptionCount)): Nombre de Boosts actuels.((guild.features)): Fonctionnalités activées sur le serveur (séparées par des virgules).((guild.features.count)): Nombre de fonctionnalités activées.((guild.systemChannelId)): ID du salon système.((guild.rulesChannelId)): ID du salon des règles.((guild.afkChannelId)): ID du salon AFK.((guild.afkTimeout)): Délai de mise en AFK (en secondes).((guild.icon)): URL de l’icône du serveur.((guild.roleCount)): Nombre total de rôles.((guild.roleNames)): Liste de tous les noms de rôles du serveur (séparés par des virgules).((guild.stickerCount)): Nombre total de stickers.((guild.emojiCount)): Nombre total d’émojis personnalisés.
Contexte Salon (channel.*)
Disponible si channelId est renseigné.
((channel.id)): ID du salon.((channel.name)): Nom du salon (ouDMsi message privé).((channel.type))/((channel.typeValue)): Type du salon (ex:0= texte,2= vocal).((channel.topic)): Description du salon.((channel.parentId))/((channel.categoryId)): ID de la catégorie parente.((channel.position)): Position dans la liste des salons.((channel.nsfw)):truesi le salon est NSFW, sinonfalse.((channel.slowmode)): Durée du mode lent (en secondes).((channel.bitrate)): Débit binaire du salon vocal/stage (en bps).((channel.userLimit)): Limite d’utilisateurs autorisés dans le salon vocal.((channel.mention)): Mention cliquable du salon (ex:<#123456>).((channel.thread.archived)):truesi le fil est archivé, sinonfalse.((channel.thread.locked)):truesi le fil est verrouillé, sinonfalse.((channel.thread.ownerId)): ID du créateur du fil.((channel.thread.autoArchiveDuration)): Durée avant archivage automatique (en minutes).
Contexte Membre et Permissions (member.* et user.*)
Disponible si userId est renseigné et que l’événement s’est produit dans un serveur.
((member.id)): ID du membre concerné.((member.nick)): Surnom sur le serveur.((member.displayName)): Surnom si défini, sinon nom d’affichage global ou username.((member.avatar)): URL de l’avatar personnalisé sur le serveur (si défini).((member.joinedAt)): Date et heure d’arrivée sur le serveur (ISO8601).((member.roles)): IDs de rôles possédés (séparés par des virgules).((member.isBooster)):truesi le membre booste le serveur, sinonfalse.((member.premiumSince)): Date de début de boost (ISO8601, si applicable).((member.communicationDisabledUntil)): Date de fin d’exclusion temporaire (ISO8601, si applicable).((member.isAdmin))/((interaction.member.isAdmin)):truesi le membre est Administrateur, sinonfalse.((member.permissions))/((interaction.member.permissions)): Liste des permissions du membre (séparées par des virgules).((permissions.byId.<userId>)): Liste des permissions d’un utilisateur ciblé spécifique.((isAdmin.byId.<userId>)): Statut d’administration d’un utilisateur ciblé spécifique.((user.mention))/((author.mention))/((member.mention)): Mention cliquable de l’utilisateur (ex:<@123456>).
4. Variables spécifiques par Événement
En plus des ensembles de variables automatiques ci-dessus, chaque événement Gateway injecte ses propres variables spécifiques.
4.1 Événements de Messages
messageCreate / messageUpdate
Ces événements contiennent toutes les variables de contenu et de métadonnées du message ainsi que de son auteur.
- Message :
((message.id)): ID unique du message.((message.content)): Contenu texte brut du message.((message.word.count)): Nombre de mots dans le message.((message.isBot)):truesi l’auteur est un bot/webhook, sinonfalse.((message.channelId)): ID du salon.((message.isDM)):truesi c’est un message privé (DM).((message.isSystem)):truesi c’est un message système (ex: boost, bienvenue).((message.type)): Type brut du message (entier Discord).((message.mentions)): IDs des utilisateurs mentionnés (séparés par des virgules).((message.mention.count)): Nombre d’utilisateurs mentionnés.((message.timestamp)): Timestamp de création (millisecondes).((message.isEdited)):trueoufalse.((message.isPinned)):trueoufalse.((message.attachments)): URLs des pièces jointes (séparées par des virgules).((message.attachments.count)): Nombre de pièces jointes.((message.embeds.count)): Nombre d’embeds.((message.roleMentions)): IDs des rôles mentionnés (séparés par des virgules).((message.roleMentions.count)): Nombre de rôles mentionnés.((message.mentionsEveryone)):truesi le message mentionne@everyoneou@here.((message.url)): URL directe permettant de naviguer vers le message.((message.editedTimestamp)): Timestamp de la dernière modification (si applicable).((message.referencedMessage.id)): ID du message auquel ce message répond (si applicable).((message.content[0]))...((message.content[9])): Mot individuel à l’index spécifié (de 0 à 9).((message.mentions[0]))...((message.mentions[9])): ID de l’utilisateur mentionné à l’index spécifié (de 0 à 9).((message.oldContent)): Contenu initial du message (exclusif àmessageUpdate).
- Auteur (
author.*etuser.*) :((author.id))/((user.id)): ID de l’auteur du message.((author.username))/((user.username))/((userName)): Username unique Discord.((author.globalName))/((user.globalName)): Nom d’affichage global Discord.((author.displayName))/((user.displayName)): Nom d’affichage (surnom serveur si présent, sinon global).((author.tag))/((user.tag)): Discriminant ou0.((author.isBot)):truesi l’auteur est un bot.((author.avatar))/((user.avatar))/((userAvatar)): URL de l’avatar de l’auteur.((author.banner))/((user.banner)): URL de la bannière de l’auteur.((user.createdAt)): Date de création du compte de l’auteur (ISO8601).((user.bannerColor)): Code hexadécimal de la couleur de bannière de l’auteur.
messageDelete
Déclenché lorsqu’un message est supprimé.
((message.id)): ID du message supprimé.((message.content)): Contenu texte du message (si encore en cache).((author.id)): ID de l’auteur du message supprimé.((author.username)): Nom d’utilisateur de l’auteur.((author.tag)): Tag de l’auteur.
4.2 Événements de Membres et d’Utilisateurs
guildMemberAdd
Déclenché lorsqu’un nouvel utilisateur rejoint un serveur.
((member.id)): ID de l’utilisateur.((member.name))/((member.username)): Nom d’utilisateur unique.((member.tag)): Tag/Discriminant.((member.joinedAt)): Date et heure d’arrivée sur le serveur.
guildMemberRemove
Déclenché lorsqu’un membre quitte ou est banni d’un serveur.
((member.id)): ID du membre qui est parti.((member.name))/((member.username)): Nom d’utilisateur.((member.tag)): Tag/Discriminant.
guildMemberUpdate
Déclenché lorsque le profil d’un membre serveur change (surnom, rôles, avatar de guilde, boost).
- Nouvel état :
((member.id)): ID de l’utilisateur.((member.username)): Nom de l’utilisateur.((member.nick)): Nouveau surnom.((member.joinedAt)): Date d’arrivée initiale.((member.roles)): Nouvelle liste d’IDs de rôles (CSV).((member.avatar)): URL du nouvel avatar personnalisé sur le serveur.((member.isBooster)):trues’il booste maintenant le serveur.
- Ancien état (
member.old.*) :((member.old.nick)): Ancien surnom.((member.old.roles)): Ancienne liste de rôles (CSV).((member.old.avatar)): Ancien avatar de serveur.((member.old.isBooster)): Ancien état de boost (true/false).
userUpdate
Déclenché lorsque les informations globales d’un utilisateur changent (username, avatar global, bannière).
((user.id)): ID de l’utilisateur.((user.username)): Nouveau nom d’utilisateur global.((user.avatar)): URL du nouvel avatar global.((user.banner)): URL de la nouvelle bannière globale.((user.accentColor)): Nouvelle couleur d’accentuation.
4.3 Événements de Salons et de Fils
channelCreate / channelUpdate / channelDelete
Déclenchés lors de la gestion des salons.
((channel.id)): ID du salon.((channel.name)): Nom du salon.((channel.type)): Type du salon (ex:GuildTextChannel).
channelPinsUpdate
Déclenché lorsque des messages sont épinglés ou désépinglés.
((channel.lastPinTimestamp)): Date et heure de la dernière épingle.
threadCreate / threadUpdate / threadDelete
Déclenchés pour la gestion des Fils Discord.
((thread.id)): ID du fil.((thread.name)): Nom du fil.((thread.parent.id)): ID du salon texte parent.((thread.owner.id)): ID du créateur du fil.((thread.archived)):truesi le fil est archivé, sinonfalse.((thread.locked)):truesi le fil est verrouillé, sinonfalse.((thread.autoArchiveDuration)): Durée avant archivage automatique (en minutes).
threadMemberUpdate
Déclenché lorsque le statut d’un membre dans un fil spécifique change.
((thread.id)): ID du fil.((member.id)): ID de l’utilisateur.
threadMembersUpdate
Déclenché lorsque plusieurs membres rejoignent ou quittent un fil.
((thread.id)): ID du fil.((thread.members.added.count)): Nombre de membres ajoutés au fil.((thread.members.removed.count)): Nombre de membres retirés du fil.
4.4 Événements de Rôles
guildRoleCreate / guildRoleUpdate
Déclenchés pour la gestion des rôles du serveur.
((role.id)): ID unique du rôle.((role.name)): Nom du rôle.((role.color)): Couleur hexadécimale/décimale du rôle.((role.permissions)): Entier décimal représentant les permissions du rôle.((role.position)): Rang dans la hiérarchie des rôles.((role.mentionable)):truesi le rôle est mentionnable par tous, sinonfalse.((role.hoist)):truesi le rôle est affiché séparément des autres membres en ligne.
guildRoleDelete
Déclenché lorsqu’un rôle est supprimé.
((role.id)): ID du rôle supprimé.
4.5 Événements de Réactions et de Sondages
messageReactionAdd / messageReactionRemove / messageReactionRemoveEmoji
Déclenchés lors de l’ajout/retrait de réactions individuelles.
((message.id)): ID du message qui a reçu ou perdu la réaction.((reaction.emoji.name)): Nom de l’émoji utilisé (ex:🔥ou le nom de l’émoji personnalisé).((reaction.emoji.id)): ID de l’émoji si c’est un émoji personnalisé, vide sinon.((reaction.emoji.animated)):truesi l’émoji est animé, sinonfalse.
messageReactionRemoveAll
Déclenché lorsque toutes les réactions d’un message sont supprimées d’un coup.
((message.id)): ID du message nettoyé.
messagePollVoteAdd / messagePollVoteRemove
Déclenchés lors de l’expression ou du retrait d’un vote sur un Sondage Discord.
((message.id)): ID du message contenant le sondage.((poll.answer.id)): ID numérique de la réponse choisie/retirée.
4.6 Événements de Gestion du Serveur
guildCreate / guildUpdate
Déclenchés lorsque le bot rejoint un serveur ou que les propriétés d’un serveur changent.
Ces événements contiennent l’intégralité des variables de contexte guild.* listées dans la Section 3.
((guild.oldGuild.<prop>)): Propriété du serveur avant la mise à jour (ex:((guild.oldGuild.name)), exclusif àguildUpdate).
guildDelete
Déclenché lorsque le bot quitte un serveur ou que le serveur devient indisponible.
((guild.unavailable)):truesi le serveur est indisponible à cause d’une panne Discord, sinonfalse(bot exclu/parti).
guildAuditLogCreate
Déclenché lorsqu’une nouvelle entrée est ajoutée aux logs d’audit (modération, création de salon, etc.).
((auditLog.action)): Type d’action d’audit (ex:memberBanAdd,channelCreate).((auditLog.executorId)): ID du modérateur/administrateur qui a exécuté l’action.((auditLog.targetId)): ID de la cible affectée (utilisateur, salon, rôle…).
4.7 Événements d’Invitations
inviteCreate / inviteDelete
Déclenchés lors de la gestion des liens d’invitation du serveur.
((invite.code)): Code d’invitation (ex:bc-bot-creator).((invite.channelId)): ID du salon associé à l’invitation.((invite.inviterId)): ID de l’utilisateur qui a généré l’invitation (exclusif àinviteCreate).
4.8 Événements Vocaux et de Présence
voiceStateUpdate
Déclenché lorsqu’un utilisateur rejoint, quitte ou change de salon vocal (ou active son micro/casque).
((voice.channel.id)): ID du salon vocal rejoint/quitté.((voice.user.id)): ID de l’utilisateur concerné.((voice.state.sessionId)): ID de la session vocale active.((voice.selfMute)):truesi l’utilisateur s’est rendu muet lui-même.((voice.selfDeafen)):truesi l’utilisateur a coupé le son lui-même.((voice.mute)):truesi l’utilisateur est rendu muet par un modérateur sur le serveur.((voice.deafen)):truesi l’utilisateur a le son coupé par un modérateur sur le serveur.
voiceChannelEffectSend
Déclenché lorsqu’un effet de salon vocal est envoyé (ex: réaction visuelle ou bruit de soundboard).
((voice.effect.emoji)): Émoji associé à l’effet visuel.((voice.effect.soundId)): ID du son joué depuis le soundboard.
voiceServerUpdate
Déclenché lors de la mise à jour des paramètres de connexion vocale.
((voice.server.token)): Jeton de connexion de session.((voice.server.endpoint)): Nom d’hôte du serveur vocal Discord.
typingStart
Déclenché lorsqu’un utilisateur commence à écrire dans un salon.
((typing.timestamp)): Timestamp de début d’écriture (millisecondes).((typing.member.id)): ID de l’utilisateur.((typing.member.name)): Nom d’utilisateur unique.
presenceUpdate
Déclenché lors de la mise à jour du statut en ligne d’un utilisateur ou de ses activités (jeux, streaming, écoute).
- Statut utilisateur :
((user.id)): ID de l’utilisateur.((user.username)): Nom d’affichage/username.((user.tag)): Discriminant Discord.((user.avatar)): URL de l’avatar.((presence.status)): Statut actuel (online,idle,dndouoffline).((presence.activity.count)): Nombre total d’activités en cours.((presence.client.desktop)): Statut du client bureau (online,idle,dnd,offline).((presence.client.mobile)): Statut du client mobile.((presence.client.web)): Statut du client navigateur.
- Activité individuelle (
presence.activity[i].*aveciallant de0àcount - 1) :((presence.activity[i].name)): Nom du jeu ou de l’application (ex:Spotify,League of Legends).((presence.activity[i].type)): ID de type d’activité (ex:0= jeu,2= écoute).((presence.activity[i].typeName)): Libellé lisible de l’activité (playing,streaming,listening,watching,customoucompeting).((presence.activity[i].details)): Détails supplémentaires (ex: nom de l’artiste/album sur Spotify).((presence.activity[i].state)): État actuel (ex: titre de la chanson).((presence.activity[i].url)): URL associée (pour les streams Twitch/YouTube).
4.9 Événements d’Interactions (Composants UI, Boutons, Menus, Modals)
interactionCreate
Déclenché lorsqu’un utilisateur clique sur un bouton, sélectionne une option dans un menu déroulant, soumet un modal ou utilise une commande slash / autocomplete.
- Métadonnées de l’interaction :
((interaction.kind)): Nature de l’interaction (button,select,modal,commandouautocomplete).((interaction.customId)): Identifiant personnalisé attribué au composant ou au modal initiateur.((interaction.id)): ID unique de l’interaction générée.((interaction.token)): Jeton unique d’authentification temporaire pour répondre.((interaction.applicationId)): ID de l’application cliente Discord.((interaction.messageId)): ID du message source contenant le composant cliqué (si applicable).
- Champs de sélection / Menus Déroulants :
((interaction.values)): Liste formatée (CSV) de toutes les valeurs choisies dans un menu déroulant.((interaction.values.count)): Nombre d’options sélectionnées.((interaction.stringSelect.value))/((interaction.stringSelect.values))/((interaction.stringSelect.count)): Valeurs sélectionnées pour un menu déroulant textuel standard.((interaction.channelSelect.channelId))/((interaction.channelSelect.channelIds))/((interaction.channelSelect.channelCount)): IDs des salons sélectionnés dans un menu de type Salons.((interaction.userSelect.userId))/((interaction.userSelect.userIds))/((interaction.userSelect.userCount)): IDs des utilisateurs sélectionnés.((interaction.roleSelect.roleId))/((interaction.roleSelect.roleIds))/((interaction.roleSelect.roleCount)): IDs des rôles sélectionnés.((interaction.mentionableSelect.userId))/((interaction.mentionableSelect.userIds))/((interaction.mentionableSelect.userCount)): IDs des cibles (membres/rôles) sélectionnés.
- Champs de Formulaires Modals :
((modal.customId)): ID du modal soumis (alias pourinteraction.customId).((modal.<inputCustomId>)): Contenu textuel saisi par l’utilisateur pour le champ ayant l’identifiant<inputCustomId>.
- Commandes Slash & Autocomplete :
((interaction.command.name)): Nom de la commande slash appelée.((interaction.command.id)): ID unique de la commande.((interaction.command.type)): Type de la commande (ex:chatInput,user,message).
4.10 Événements Hors-Discord (Planification & Webhooks)
scheduled
Déclenché de manière autonome selon l’intervalle configuré par tâche planifiée.
((workflow.type)): Fixé àgeneral.((workflow.trigger)): Fixé àscheduled.((trigger.minutes)): Intervalle configuré d’exécution en minutes (ex:5).
inboundWebhook
Déclenché lorsqu’une requête HTTP POST est reçue sur l’adresse d’intégration webhook du bot.
((workflow.type)): Fixé àinboundWebhook.((inbound.event.name)): Fixé àinboundWebhook.((inbound.workflow.name)): Nom configuré du workflow récepteur.((inbound.request.id)): ID unique attribué à la requête HTTP entrante.((inbound.source.ip)): Adresse IP d’origine de l’appelant.((inbound.payload.json)): Payload HTTP complet brut sérialisé au format JSON.((inbound.payload.<key>)): Valeur associée à la clé<key>extraite directement du JSON envoyé dans le corps de la requête.((inbound.header.<header_name_lowercase>)): Valeur associée au header HTTP entré (nom converti en minuscules).