> ## 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.

# Referência de variáveis

> Toda variável placeholder no Vetox, agrupada por recurso — e por que algumas usam colchetes e outras chaves.

Variáveis são placeholders substituídos por valores reais quando uma mensagem é enviada.

## Duas sintaxes diferentes

<Warning>
  **O Vetox usa duas sintaxes, e elas não são intercambiáveis.**

  | Sintaxe    | Usada por                              |
  | ---------- | -------------------------------------- |
  | `[Square]` | Welcomer, mensagens de goodbye e greet |
  | `{curly}`  | Todo o resto                           |

  Um `{User}` numa mensagem de boas-vindas é impresso literalmente. Um `[user]` numa mensagem de ticket é impresso literalmente.
</Warning>

## A regra universal

<Warning>
  **Uma variável desconhecida vira texto vazio, não um erro** — e em embeds, **um campo cujo título ou valor termina vazio é totalmente removido da mensagem.**

  Essa é a causa mais comum de "meu campo de embed continua sumindo". Quase sempre uma variável com erro de digitação ou uma que não existe para aquele recurso.
</Warning>

## Welcomer, goodbye e greet

| Variável       | Valor                                                      |
| -------------- | ---------------------------------------------------------- |
| `[User]`       | O membro                                                   |
| `[ServerName]` | O nome do seu servidor                                     |
| `[UsersCount]` | A nova contagem de membros                                 |
| `[Inviter]`    | Quem o convidou — apenas welcome                           |
| `[Code]`       | O código de convite usado — apenas welcome                 |
| `[CountUrl]`   | Uma URL de imagem com contagem de membros — apenas welcome |

<Warning>
  **`[Server]` não é uma variável.** Aparece na mensagem de boas-vindas padrão e é impresso literalmente. Troque por `[ServerName]`.
</Warning>

<Note>
  `[Inviter]` e `[Code]` precisam de **Manage Server** para que o Vetox possa ler convites.
</Note>

## Tickets

O conjunto mais rico do Vetox. Utilizáveis em embeds de ticket, formatos de nome de canal e mensagens de horário de suporte.

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

  <Accordion title="O 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="Canal, panel e option" icon="hashtag">
    `{channel}` `{channel.mention}` `{channel.name}` `{channel.id}` `{panel}` `{panel.name}` `{panel-name}` `{option}` `{option.label}`
  </Accordion>

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

  <Accordion title="Staff e ações" 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="Respostas de formulário" icon="clipboard-list">
    `{form.1}`, `{form.2}` … — **indexadas a partir de 1**, na ordem em que suas perguntas aparecem.

    `{form.Label}` também funciona, usando o próprio label da pergunta.
  </Accordion>

  <Accordion title="Tempo e estatísticas" icon="clock">
    `{date}` `{time}` `{timestamp}` `{time.created}` `{time.opened}` `{time.claimed}` `{time.closed}` — cada uma também aceita `.age`.

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

  <Accordion title="Horário de suporte" icon="business-time">
    `{supportHours.status}` `{supportHours.nextOpen}` `{supportHours.nextOpenTime}` `{supportHours.nextOpenRelative}` `{supportHours.closesAt}` `{supportHours.closesAtTime}`
  </Accordion>
</AccordionGroup>

### Modificadores

Variáveis de ticket aceitam modificadores com `{variable?modifier=value}`: `upper`, `lower`, `capitalize`, `truncate`, `slice`, `padleft`, `padright`, `replace`, `fallback`, `date`, `timestamp`, `math`, `ordinal`, `join`, `if`.

<Tip>
  `{user.name?upper}` grita o nome. `{ticket.closeReason?fallback=No reason given}` evita que um campo vazio seja descartado — que é a correção mais limpa para campos de embed que somem.
</Tip>

## Counting

`{count}` `{user}` `{record}` — além de `{start}` e `{savesLeft}` nas mensagens de reset e save.

<Warning>
  `{server}` é oferecido mas **sempre renderiza vazio**. Digite o nome do seu servidor diretamente.
</Warning>

## Starboard

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

## Self-Roles

`[Role]` — o nome do cargo, nas notificações por DM.

## Templates de giveaway

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

## Notificações

Cada plataforma tem seu próprio conjunto. Usar a variável de uma plataforma em outra resolve como vazio.

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

    Apenas ao vivo: `{stream.title}` `{stream.game}` `{stream.viewers}` `{stream.thumbnail}`
  </Accordion>

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

    Apenas ao vivo: `{stream.title}` `{stream.category}` `{stream.viewers}` `{stream.thumbnail}`

    Note `{stream.category}`, e não o `{stream.game}` do 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">
    Funcionando: `{episode.title}` `{episode.url}` `{episode.description}` `{podcast.name}`

    <Warning>
      `{episode.duration}`, `{podcast.author}` e `{podcast.artwork}` são oferecidos mas **nunca produzem valor**. Qualquer campo construído apenas com eles é descartado.
    </Warning>
  </Accordion>
</AccordionGroup>

## Variáveis que não funcionam

<Warning>
  Confirmadas como não funcionais. Evite estas:

  | Variável                                    | Onde                                 | Comportamento                                                             |
  | ------------------------------------------- | ------------------------------------ | ------------------------------------------------------------------------- |
  | `[Server]`                                  | Welcomer                             | Não é uma variável — imprime literalmente                                 |
  | `{server}`                                  | Milestones de Counting               | Sempre vazio                                                              |
  | `{episode.duration}`                        | Podcasts                             | Sempre vazio                                                              |
  | `{podcast.author}`                          | Podcasts                             | Sempre vazio                                                              |
  | `{podcast.artwork}`                         | Podcasts                             | Geralmente vazio                                                          |
  | `{username}`, `{server.name}`, `{nickname}` | **Ações de workflow de Application** | Sempre vazio — funcionam em mensagens de DM, mas não em templates de ação |
  | `{stream.*}`                                | Anúncios **offline** do Twitch/Kick  | Vazio; apenas ao vivo                                                     |
</Warning>

<Card title="Solução de problemas" icon="wrench" horizontal href="/pt/help/troubleshooting">
  Quando uma mensagem não chega.
</Card>
