> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vetox.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Référence des variables

> Chaque variable placeholder dans Vetox, groupée par fonctionnalité — et pourquoi certaines utilisent des crochets et d'autres des accolades.

Les variables sont des placeholders remplacés par des valeurs réelles quand un message est envoyé.

## Deux syntaxes différentes

<Warning>
  **Vetox utilise deux syntaxes, et elles ne sont pas interchangeables.**

  | Syntaxe       | Utilisée par                           |
  | ------------- | -------------------------------------- |
  | `[Crochets]`  | Messages Welcomer, adieu et salutation |
  | `{accolades}` | Tout le reste                          |

  Un `{User}` dans un message de bienvenue s'imprime littéralement. Un `[user]` dans un message de ticket s'imprime littéralement.
</Warning>

## La règle universelle

<Warning>
  **Une variable inconnue devient un texte vide, pas une erreur** — et dans les embeds, **un champ dont le titre ou la valeur finit vide est supprimé du message entièrement.**

  C'est la cause la plus courante de « mon champ d'embed continue de disparaître ». C'est presque toujours une variable mal orthographiée ou qui n'existe pas pour cette fonctionnalité.
</Warning>

## Welcomer, adieu et salutation

| Variable       | Valeur                                                      |
| -------------- | ----------------------------------------------------------- |
| `[User]`       | Le membre                                                   |
| `[ServerName]` | Le nom de votre serveur                                     |
| `[UsersCount]` | Le nouveau nombre de membres                                |
| `[Inviter]`    | Qui l'a invité — bienvenue uniquement                       |
| `[Code]`       | Le code d'invitation utilisé — bienvenue uniquement         |
| `[CountUrl]`   | Une URL d'image de nombre de membres — bienvenue uniquement |

<Warning>
  **`[Server]` n'est pas une variable.** Elle apparaît dans le message de bienvenue par défaut et s'imprime littéralement. Remplacez-la par `[ServerName]`.
</Warning>

<Note>
  `[Inviter]` et `[Code]` ont besoin de **Gérer le serveur** pour que Vetox puisse lire les invitations.
</Note>

## Tickets

Le plus riche ensemble dans Vetox. Utilisable dans les embeds de tickets, les formats de nom de salon et les messages d'heures d'ouverture.

<AccordionGroup>
  <Accordion title="Le membre" icon="user">
    `{user}` `{mention}` `{username}` `{userid}` `{user.mention}` `{user.name}` `{user.username}` `{user.tag}` `{user.id}`
  </Accordion>

  <Accordion title="Le ticket" icon="ticket">
    `{ticket}` `{number}` `{num}` `{ticket.number}` `{ticket-number}` `{#number}` `{ticket.channel}` `{ticket.channelName}` `{ticket.priority}` `{ticket.closeReason}` `{ticket.openedAt}` `{ticket.createdAt}` `{ticket.closedAt}` `{ticket.users}`
  </Accordion>

  <Accordion title="Salon, panneau et option" icon="hashtag">
    `{channel}` `{channel.mention}` `{channel.name}` `{channel.id}` `{panel}` `{panel.name}` `{panel-name}` `{option}` `{option.label}`
  </Accordion>

  <Accordion title="Le serveur" icon="server">
    `{server}` `{server.name}` `{server.id}` `{server.members}` `{server.icon}` `{server.banner}` `{guild}` `{members}`
  </Accordion>

  <Accordion title="Personnel et actions" icon="user-shield">
    `{staff}` `{staff.mention}` `{staff.name}` `{claim.user}` `{claim.name}` `{close.user}` `{close.name}` `{close.reason}` `{escalate.reason}` `{escalate.panel}` `{reason}`
  </Accordion>

  <Accordion title="Réponses de formulaire" icon="clipboard-list">
    `{form.1}`, `{form.2}` … — **indexé à partir de 1**, dans l'ordre où vos questions apparaissent.

    `{form.Label}` fonctionne aussi, en utilisant le propre libellé de la question.
  </Accordion>

  <Accordion title="Temps et statistiques" icon="clock">
    `{date}` `{time}` `{timestamp}` `{time.created}` `{time.opened}` `{time.claimed}` `{time.closed}` — chacune accepte aussi `.age`.

    `{statistics.tickets.open}` `{statistics.tickets.created}` `{statistics.tickets.closed}` `{statistics.tickets.claimed}` `{statistics.tickets.averageRating}`
  </Accordion>

  <Accordion title="Heures d'ouverture" icon="business-time">
    `{supportHours.status}` `{supportHours.nextOpen}` `{supportHours.nextOpenTime}` `{supportHours.nextOpenRelative}` `{supportHours.closesAt}` `{supportHours.closesAtTime}`
  </Accordion>
</AccordionGroup>

### Modificateurs

Les variables de ticket acceptent des modificateurs avec `{variable?modifier=value}` : `upper`, `lower`, `capitalize`, `truncate`, `slice`, `padleft`, `padright`, `replace`, `fallback`, `date`, `timestamp`, `math`, `ordinal`, `join`, `if`.

<Tip>
  `{user.name?upper}` crie le nom. `{ticket.closeReason?fallback=Aucune raison donnée}` évite qu'un champ vide soit supprimé — c'est la solution la plus propre aux champs d'embed qui s'évaporent.
</Tip>

## Comptage

`{count}` `{user}` `{record}` — plus `{start}` et `{savesLeft}` dans les messages de réinitialisation et de sauvegarde.

<Warning>
  `{server}` est proposé mais **rend toujours vide**. Tapez directement le nom de votre serveur.
</Warning>

## Starboard

`{author}` `{stars}` `{channel}` `{link}` `{content}` `{emoji}`

## Self-Roles

`[Role]` — le nom du rôle, dans les notifications MP.

## Modèles de giveaway

`{prize}` `{winners}` `{host}` `{endsAt}` `{id}` `{description}` `{requiredRole}` `{minAccountAge}` `{entryCount}`

## Notifications

Chaque plateforme a son propre ensemble. Utiliser la variable d'une plateforme sur une autre se résout à vide.

<AccordionGroup>
  <Accordion title="Twitch" icon="twitch">
    `{streamer.name}` `{streamer.url}` `{streamer.avatar}`

    En direct uniquement : `{stream.title}` `{stream.game}` `{stream.viewers}` `{stream.thumbnail}`
  </Accordion>

  <Accordion title="Kick" icon="tower-broadcast">
    `{streamer.name}` `{streamer.url}` `{streamer.avatar}`

    En direct uniquement : `{stream.title}` `{stream.category}` `{stream.viewers}` `{stream.thumbnail}`

    Notez `{stream.category}`, pas le `{stream.game}` de Twitch.
  </Accordion>

  <Accordion title="YouTube" icon="youtube">
    `{channel.name}` `{channel.avatar}` `{video.title}` `{video.url}` `{video.thumbnail}` `{video.type}`
  </Accordion>

  <Accordion title="Reddit" icon="reddit">
    `{post.title}` `{post.url}` `{post.author}` `{post.content}` `{post.flair}` `{post.thumbnail}` `{subreddit.name}` `{subreddit.url}` `{subreddit.icon}`
  </Accordion>

  <Accordion title="Bluesky" icon="cloud">
    `{post.text}` `{post.url}` `{post.image}` `{post.likes}` `{author.name}` `{author.handle}` `{author.avatar}`
  </Accordion>

  <Accordion title="Steam" icon="steam">
    `{news.title}` `{news.url}` `{news.content}` `{news.category}` `{news.author}` `{game.name}` `{game.image}`
  </Accordion>

  <Accordion title="RSS" icon="rss">
    `{item.title}` `{item.url}` `{item.description}` `{item.author}` `{feed.name}` `{feed.url}`
  </Accordion>

  <Accordion title="Podcasts" icon="podcast">
    Fonctionnelles : `{episode.title}` `{episode.url}` `{episode.description}` `{podcast.name}`

    <Warning>
      `{episode.duration}`, `{podcast.author}` et `{podcast.artwork}` sont proposées mais **ne produisent jamais de valeur**. Tout champ construit uniquement à partir de celles-ci est supprimé.
    </Warning>
  </Accordion>
</AccordionGroup>

## Variables qui ne fonctionnent pas

<Warning>
  Confirmé non fonctionnel. Évitez celles-ci :

  | Variable                                    | Où                                    | Comportement                                                                                |
  | ------------------------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------- |
  | `[Server]`                                  | Welcomer                              | Pas une variable — s'imprime littéralement                                                  |
  | `{server}`                                  | Jalons de comptage                    | Toujours vide                                                                               |
  | `{episode.duration}`                        | Podcasts                              | Toujours vide                                                                               |
  | `{podcast.author}`                          | Podcasts                              | Toujours vide                                                                               |
  | `{podcast.artwork}`                         | Podcasts                              | Généralement vide                                                                           |
  | `{username}`, `{server.name}`, `{nickname}` | **Actions de workflow d'application** | Toujours vides — elles fonctionnent dans les messages MP mais pas dans les modèles d'action |
  | `{stream.*}`                                | Annonces Twitch/Kick **hors ligne**   | Vide ; en direct uniquement                                                                 |
</Warning>

<Card title="Dépannage" icon="wrench" horizontal href="/fr/help/troubleshooting">
  Quand un message n'arrive pas du tout.
</Card>
