Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
322 changes: 322 additions & 0 deletions docs/3.autres/6.variables.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,322 @@
---
title: Variables
description: Le système de variables permet d'insérer dynamiquement des informations contextuelles dans vos messages. Ces variables suivent un format spécifique et peuvent être enrichies avec des paramètres et modificateurs pour personnaliser l'affichage.
navigation.icon: 'twemoji:dna'
contributors: ['elbaguetto']
updatedAt: '2025-10-23'
---

## Syntaxe générale

- `{variable}` : Variable simple
- `{variable:paramètres}` : Variable avec paramètres
- `{variable?modifieur}` : Variable avec modificateur
- `{variable:paramètres?modifieur}` : Variable avec paramètres et modificateur

## Paramètres

Les paramètres permettent d'affiner le comportement d'une variable en lui transmettant des informations complémentaires. Ils s'ajoutent après le nom de la variable, chacun étant précédé du symbole deux-points `:`.

Chaque paramètre suit la structure `nom=valeur`. Lorsque vous souhaitez utiliser plusieurs paramètres simultanément, ajoutez simplement un nouveau `:` suivi du paramètre suivant.

**Exemple :**

- `{level.rank:user_id=123456789012345678}`
- `{user.created_at:user_id=123456789012345678:format=DD MMMM YYYY}`

## Modificateurs

Les modificateurs permettent de transformer l'affichage des variables. Ils s'ajoutent après le nom de la variable ou après le ou les paramètres, précédés du symbole point d'interrogation `?`.

::hint{ type="warning" }
Les modificateurs ne sont pas cumulables sur une même variable.
::

| Modificateur | Description | Exemple |
|--------------|-------------|---------|
| `uppercase` | Texte en majuscules | `{user.username?uppercase}` → DRAFTBOT |
| `lowercase` | Texte en minuscules | `{server.name?lowercase}` → draftbot support |
| `capitalize` | Première lettre majuscule | `{user.username?capitalize}` → Draftbot |
| `ordinal` | Nombre ordinal | `{level.rank?ordinal}` → 3ème |
| `maxLength=N` | Limitation de longueur | `{suggest.title?maxLength=50}` |
| `formatNumber` | Format de nombre localisé | `{money?formatNumber}` → 1 234 |

## Variables de base

### Utilisateur

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{user}` | Mention de l'utilisateur | @draftbot |
| `{user.id}` | Identifiant de l'utilisateur | 318312854816161792 |
| `{user.username}` | Pseudo du compte | draftbot |
| `{user.globalname}` | Nom affiché global | DraftBot |
| `{user.nickname}` | Surnom sur le serveur | ❕DraftBot |
| `{user.tag}` | Tag (déprécié) | draftbot#0535 |
| `{user.rolecount}` | Nombre de rôles | 2 |
| `{user.created_at}` | Date de création du compte | 28/05/2017 |
| `{user.joined_at}` | Date d'arrivée sur le serveur | 11/03/2018 |

**Paramètres :**
- `user_id` : Identifiant d'un utilisateur.
- `format` : Format d'affichage de la date (par défaut : `L`). Accepte `relative` pour un affichage relatif (ex : "il y a 2 heures") ou un format personnalisé comme `DD/MM/YYYY`.

### Serveur

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{server}` | Nom du serveur | DraftBot Support |
| `{server.id}` | Identifiant du serveur | 422112414964908042 |
| `{server.name}` | Nom du serveur | DraftBot Support |
| `{server.description}` | Description du serveur | Serveur officiel et Support de DraftBot |
| `{server.membercount}` | Nombre total de membres | 65536 |
| `{server.humancount}` | Nombre de membres humains | 65535 |
| `{server.botcount}` | Nombre de bots | 1 |
| `{server.rolecount}` | Nombre de rôles | 69 |
| `{server.channelcount}` | Nombre de salons | 20 |
| `{server.boosts.level}` | Niveau de boosts du serveur | 2 |
| `{server.boosts.count}` | Nombre de boosts du serveur | 27 |
| `{server.created_at}` | Date de création du serveur | 10/03/2018 |

**Paramètres :**
- `format` : Format d'affichage de la date (par défaut : `L`). Accepte `relative` pour un affichage relatif (ex : "il y a 2 heures") ou un format personnalisé comme `DD/MM/YYYY`.

### Salon

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{channel}` | Mention du salon | #bavardage➖🐱 |
| `{channel.id}` | Identifiant du salon | 700375095297835096 |
| `{channel.name}` | Nom du salon | bavardage➖🐱 |
| `{channel.created_at}` | Date de création | 16/04/2020 |
| `{channel.parent}` | Mention du salon parent | #▬▬▬ Communauté ▬▬▬ |
| `{channel.parent.id}` | ID du salon parent | 700370977019658332 |
| `{channel.parent.name}` | Nom du salon parent | ▬▬▬ Communauté ▬▬▬ |
| `{channel.parent.created_at}` | Date de création parent | 16/04/2020 |

**Paramètres :**
- `channel_id` : Identifiant d'un salon.
- `format` : Format d'affichage de la date (par défaut : `L`). Accepte `relative` pour un affichage relatif (ex : "il y a 2 heures") ou un format personnalisé comme `DD/MM/YYYY`.

### Rôle

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{role}` | Mention du rôle | @Equipe |
| `{role.id}` | ID du rôle | 698990778084491314 |
| `{role.name}` | Nom du rôle | Equipe |
| `{role.color}` | Couleur hexadécimale | #FD9A60 |
| `{role.position}` | Position du rôle | 5 |
| `{role.membercount}` | Nombre de membres | 13 |
| `{role.created_at}` | Date de création | 12/04/2020 |

**Paramètres :**
- `role_id` : Identifiant d'un rôle.
- `format` : Format d'affichage de la date (par défaut : `L`). Accepte `relative` pour un affichage relatif (ex : "il y a 2 heures") ou un format personnalisé comme `DD/MM/YYYY`.

::hint{ type="warning" }
Le paramètre `role_id` est obligatoire.
::

### Temporalité

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{date}` | Date actuelle | 28/05/2017 |
| `{time}` | Heure actuelle | 11:01 |
| `{timestamp}` | Timestamp Discord | 1495962098 |

**Paramètres (date et time) :**
- `format` : Format d'affichage de la date ou de l'heure (par défaut : `L` ou `LT`). Accepte `relative` pour un affichage relatif (ex : "il y a 2 heures") ou un format personnalisé comme `DD/MM/YYYY` ou `hh:mm a`. La liste des différents formats est disponible sur la [documentation](https://day.js.org/docs/en/display/format) de la bibliothèque **dayjs**.

**Paramètres (timestamp) :**
- `style` : Style d'affichage du timestamp. Vous pouvez retrouver la liste complète sur la [documentation](https://discord.com/developers/docs/reference#message-formatting-timestamp-styles) de Discord.

## Variables par modules

### Économie

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{money}` | Argent | 1 234 |
| `{money.record}` | Record d'argent | 5 678 |
| `{money.rank}` | Position dans le classement | 3 |
| `{money.currency_icon}` | Icône de la devise | 💰 |
| `{money.next_user}` | Membre précédent dans le classement | @DraftBot |
| `{money.next_user.id}` | Identifiant du membre précédent dans le classement | 318312854816161792 |
| `{money.next_user.money}` | Quantité d'argent du membre précédent dans le classement | 2 500 |
| `{money.next_user.money_diff}` | Différence d'argent avec le membre précédent dans le classement | 2 500 |
| `{money.to_position:position=N}` | Argent nécessaire pour atteindre la position N dans le classement | 1 200 |

**Paramètres :**
- `user_id` : Identifiant d'un utilisateur.

### Niveaux

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{level}` | Niveau | 25 |
| `{level.rank}` | Position dans le classement | 5 |
| `{xp}` | Expérience totale | 12 500 |
| `{xp.current_level}` | Expérience du niveau actuel | 250 |
| `{xp.next_level}` | Expérience nécessaire pour atteindre le niveau suivant | 750 |
| `{xp.to_level:level=N}` | Expérience nécessaire pour atteindre le niveau N | 15 000 |
| `{xp.next_user}` | Membre précédent dans le classement | @DraftBot |
| `{xp.next_user.id}` | Identifiant du membre précédent dans le classement | 318312854816161792 |
| `{xp.next_user.xp}` | Quantité d'expériene du membre précédent dans le classement | 2 500 |
| `{xp.next_user.xp_diff}` | Différence d'expérience avec le membre précédent dans le classement | 15 389 |
| `{xp.next_user.level}` | Niveau du membre précédent dans le classement | 2 500 |
| `{xp.next_user.level_diff}` | Différence de niveaux avec le membre précédent dans le classement | 2 |
| `{xp.to_position:position=N}` | Expérience nécessaire pour atteindre la position N dans le classement | 5,000 |

**Paramètres :**
- `user_id` : Identifiant d'un utilisateur.

### Récompenses de niveaux

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{level.reward}` | Récompense reçue | Rôle VIP |
| `{level.reward.next_level}` | Niveaux avant la prochaine récompense | 5 |
| `{level.reward.next_xp}` | Expérience avant la prochaine récompense | 2 500 |

::hint{ type="info" }
Les variables de [niveaux](#niveaux) sont aussi disponibles dans les messages de récompenses de niveaux.
::

### Tickets

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{ticket.number}` | Numéro de ticket | 42 |

### Suggestions

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{suggest.title}` | Titre de la suggestion | Système de questionnaire |
| `{suggest.count}` | Nombre de suggestions en cours | 3 |
| `{suggest.max}` | Nombre maximum de suggestions | 5 |

### Récompenses de suggestions

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{suggest.reward}` | Récompense reçue | 100 💰 |
| `{suggest.target.type}` | Type de statut | acceptées |
| `{suggest.target.count}` | Nombre de suggestions | 10 |

### Commandes personnalisées

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{birthday.date}` | Date de naissance | 15 mars |
| `{birthday.next}` | Prochain anniversaire | Dans 2 mois |
| `{age}` | Âge de l'utilisateur | 25 ans |

**Paramètres :**
- `user_id` : Identifiant d'un utilisateur.

::hint{ type="info" }
Les variables d'[économie](#economie) et de [niveaux](#niveaux) sont aussi disponibles dans les commandes personnalisées.
::

### Starboards

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{starboard.emoji}` | Emoji du starboard | ⭐ |
| `{starboard.emoji.count}` | Nombre de réactions | 15 |
| `{starboard.message.url}` | Lien du message | https://discord.com/... |

### Signalements

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{report.target}` | Membre signalé | @draftman |
| `{report.target_message.url}` | Lien du message signalé | https://discord.com/... |
| `{report.reason}` | Motif du signalement | Spam |

### Anniversaire

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{birthday.user}` | Membre(s) fêtant leur anniversaire | @John, @Jane |
| `{birthday.role}` | Rôle temporaire d'anniversaire | @Anniversaire |
| `{birthday.gifts}` | Récompenses données | 500 💰, Rôle VIP |

### Statistiques

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{stats.count}` | Statistique du salon | 1 250 |

::hint{ type="warning" }
Cette variable doit obligatoirement être présente dans le format du salon de statistiques.
::

### Salons vocaux temporaires

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{privateroom.index}` | Numérotation du salon | 5 |
| `{privateroom.random_word}` | Mot aléatoire prédéfini | trampoline |
| `{privateroom.custom_word}` | Mot aléatoire personnalisé | licorne |

### Route de l'infini

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{infinite_road.number}` | Nombre indiqué | 4956 |
| `{infinite_road.discussion}` | Discussion du membre (s'il y en a une) | bientôt les 5k |

### Récompenses route de l'infini

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{infinite_road.reward}` | Récompense gagnée lors du passage d'un palier | 5 000 💰 |

## Variables de notifications sociales

### YouTube

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{video.author}` | Nom de la chaîne | DraftBot |
| `{video.title}` | Titre de la vidéo | Comment utiliser DraftBot |
| `{video.url}` | Lien de la vidéo | https://youtube.com/... |

### Twitch

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{stream.author}` | Nom de la chaîne | StreamerName |
| `{stream.title}` | Titre du live | Live de développement |
| `{stream.game}` | Jeu en live | Just Chatting |
| `{stream.url}` | Lien du live | https://twitch.tv/... |
| `{stream.start_at}` | Date de début | il y a 2 heures |
| `{stream.tags}` | Tags du live | français, développement |

**Paramètres (start_at) :**
- `format` : Format d'affichage de la date ou de l'heure (par défaut : `relative`). Accepte `relative` pour un affichage relatif (ex : "il y a 2 heures") ou un format personnalisé comme `DD/MM/YYYY` ou `hh:mm a`. La liste des différents formats est disponible sur la [documentation](https://day.js.org/docs/en/display/format) de la bibliothèque **dayjs**.

**Paramètres (tags) :**

- `separator` : Caractères de séparation des différents tags du stream (par défaut : `, `)

### Reddit

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{post.subreddit}` | Nom du subreddit | r/discord |
| `{post.title}` | Titre du post | Question sur DraftBot |
| `{post.description}` | Description du post | Comment configurer... |
| `{post.url}` | Lien du post | https://reddit.com/... |

### Flux RSS

| Variable | Description | Exemple |
|----------|-------------|---------|
| `{feed.name}` | Nom du flux | Blog DraftBot |
| `{feed.url}` | Lien du flux | https://draftbot.fr/... |