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

# Referencia de variables

> Todas las variables marcador de Vetox, agrupadas por función, y por qué unas usan corchetes y otras llaves.

Las variables son marcadores que se reemplazan por valores reales cuando se envía un mensaje.

## Dos sintaxis distintas

<Warning>
  **Vetox usa dos sintaxis, y no son intercambiables.**

  | Sintaxis      | Usada por                                     |
  | ------------- | --------------------------------------------- |
  | `[Corchetes]` | Mensajes de Bienvenidas, despedidas y saludos |
  | `{llaves}`    | Todo lo demás                                 |

  Un `{User}` en un mensaje de bienvenida se imprime literalmente. Un `[user]` en un mensaje de ticket se imprime literalmente.
</Warning>

## La regla universal

<Warning>
  **Una variable desconocida se convierte en texto vacío, no en un error**, y en los embeds, **un campo cuyo título o valor acabe vacío se descarta del mensaje por completo.**

  Esta es la causa individual más común de "mi campo de embed sigue desapareciendo". Casi siempre es una variable mal escrita o que no existe para esa función.
</Warning>

## Welcomer, despedida y saludo

| Variable       | Valor                                                           |
| -------------- | --------------------------------------------------------------- |
| `[User]`       | El miembro                                                      |
| `[ServerName]` | El nombre de tu servidor                                        |
| `[UsersCount]` | El nuevo número de miembros                                     |
| `[Inviter]`    | Quién lo invitó, solo en bienvenidas                            |
| `[Code]`       | El código de invitación usado, solo en bienvenidas              |
| `[CountUrl]`   | Una URL de imagen del recuento de miembros, solo en bienvenidas |

<Warning>
  **`[Server]` no es una variable.** Aparece en el mensaje de bienvenida por defecto y se imprime literalmente. Sustitúyelo por `[ServerName]`.
</Warning>

<Note>
  `[Inviter]` y `[Code]` necesitan **Gestionar servidor** para que Vetox pueda leer las invitaciones.
</Note>

## Tickets

El conjunto más amplio de Vetox. Utilizable en embeds de ticket, formatos de nombre de canal y mensajes de horario de soporte.

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

  <Accordion title="El 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 y opción" icon="hashtag">
    `{channel}` `{channel.mention}` `{channel.name}` `{channel.id}` `{panel}` `{panel.name}` `{panel-name}` `{option}` `{option.label}`
  </Accordion>

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

  <Accordion title="Staff y acciones" 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="Respuestas del formulario" icon="clipboard-list">
    `{form.1}`, `{form.2}`… — **indexado desde 1**, en el orden en que aparecen tus preguntas.

    `{form.Etiqueta}` también funciona, usando la propia etiqueta de la pregunta.
  </Accordion>

  <Accordion title="Tiempo y estadísticas" icon="clock">
    `{date}` `{time}` `{timestamp}` `{time.created}` `{time.opened}` `{time.claimed}` `{time.closed}` — cada una también acepta `.age`.

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

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

### Modificadores

Las variables de ticket aceptan modificadores con `{variable?modificador=valor}`: `upper`, `lower`, `capitalize`, `truncate`, `slice`, `padleft`, `padright`, `replace`, `fallback`, `date`, `timestamp`, `math`, `ordinal`, `join`, `if`.

<Tip>
  `{user.name?upper}` grita el nombre. `{ticket.closeReason?fallback=Sin motivo indicado}` evita que un campo vacío se descarte, que es la solución más limpia para los campos de embed que desaparecen.
</Tip>

## Conteo

`{count}` `{user}` `{record}` — más `{start}` y `{savesLeft}` en los mensajes de reinicio y de salvado.

<Warning>
  `{server}` se ofrece pero **siempre se renderiza vacío**. Escribe el nombre de tu servidor directamente.
</Warning>

## Starboard

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

## Autoroles

`[Role]` — el nombre del rol, en las notificaciones por MD.

## Plantillas de sorteo

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

## Notificaciones

Cada plataforma tiene su propio conjunto. Usar la variable de una plataforma en otra se resuelve como vacío.

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

    Solo en vivo: `{stream.title}` `{stream.game}` `{stream.viewers}` `{stream.thumbnail}`
  </Accordion>

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

    Solo en vivo: `{stream.title}` `{stream.category}` `{stream.viewers}` `{stream.thumbnail}`

    Fíjate en `{stream.category}`, no en `{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">
    Funcionan: `{episode.title}` `{episode.url}` `{episode.description}` `{podcast.name}`

    <Warning>
      `{episode.duration}`, `{podcast.author}` y `{podcast.artwork}` se ofrecen pero **nunca producen un valor**. Cualquier campo construido solo con ellas se descarta.
    </Warning>
  </Accordion>
</AccordionGroup>

## Variables que no funcionan

<Warning>
  No funcionales confirmadas. Evítalas:

  | Variable                                    | Dónde                                 | Comportamiento                                                          |
  | ------------------------------------------- | ------------------------------------- | ----------------------------------------------------------------------- |
  | `[Server]`                                  | Welcomer                              | No es una variable: se imprime literalmente                             |
  | `{server}`                                  | Hitos de Conteo                       | Siempre vacío                                                           |
  | `{episode.duration}`                        | Podcasts                              | Siempre vacío                                                           |
  | `{podcast.author}`                          | Podcasts                              | Siempre vacío                                                           |
  | `{podcast.artwork}`                         | Podcasts                              | Casi siempre vacío                                                      |
  | `{username}`, `{server.name}`, `{nickname}` | **Acciones del flujo de Solicitudes** | Siempre vacío: funcionan en mensajes MD pero no en plantillas de acción |
  | `{stream.*}`                                | Anuncios **offline** de Twitch/Kick   | Vacío; solo en vivo                                                     |
</Warning>

<Card title="Solución de problemas" icon="wrench" horizontal href="/es/help/troubleshooting">
  Cuando un mensaje no llega en absoluto.
</Card>
