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

# Variablen-Referenz

> Jede Platzhaltervariable in Vetox, nach Funktion gruppiert — und warum einige eckige Klammern und andere geschweifte Klammern verwenden.

Variablen sind Platzhalter, die beim Senden einer Nachricht durch echte Werte ersetzt werden.

## Zwei verschiedene Syntaxen

<Warning>
  **Vetox verwendet zwei Syntaxen, und sie sind nicht austauschbar.**

  | Syntax     | Verwendet von                             |
  | ---------- | ----------------------------------------- |
  | `[Square]` | Welcomer-, Goodbye- und Greet-Nachrichten |
  | `{curly}`  | Alles andere                              |

  Ein `{User}` in einer Willkommensnachricht wird wörtlich ausgegeben. Ein `[user]` in einer Ticketnachricht wird wörtlich ausgegeben.
</Warning>

## Die universelle Regel

<Warning>
  **Eine unbekannte Variable wird zu leerem Text, nicht zu einem Fehler** — und in Embeds **wird ein Feld, dessen Titel oder Wert leer wird, vollständig aus der Nachricht entfernt.**

  Dies ist die häufigste Ursache für "mein Embed-Feld verschwindet immer wieder". Es ist fast immer eine falsch geschriebene Variable oder eine, die für diese Funktion nicht existiert.
</Warning>

## Welcomer, Goodbye und Greet

| Variable       | Wert                                           |
| -------------- | ---------------------------------------------- |
| `[User]`       | Das Mitglied                                   |
| `[ServerName]` | Der Name deines Servers                        |
| `[UsersCount]` | Die neue Mitgliederzahl                        |
| `[Inviter]`    | Wer sie eingeladen hat — nur Welcome           |
| `[Code]`       | Der verwendete Einladungscode — nur Welcome    |
| `[CountUrl]`   | Eine Bild-URL mit Mitgliederzahl — nur Welcome |

<Warning>
  **`[Server]` ist keine Variable.** Sie erscheint in der Standard-Willkommensnachricht und wird wörtlich ausgegeben. Ersetze sie durch `[ServerName]`.
</Warning>

<Note>
  `[Inviter]` und `[Code]` benötigen **Server verwalten**, damit Vetox Einladungen lesen kann.
</Note>

## Tickets

Der reichste Satz in Vetox. Verwendbar in Ticket-Embeds, Kanalnamen-Formaten und Support-Stunden-Nachrichten.

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

  <Accordion title="Das 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="Kanal, Panel und Option" icon="hashtag">
    `{channel}` `{channel.mention}` `{channel.name}` `{channel.id}` `{panel}` `{panel.name}` `{panel-name}` `{option}` `{option.label}`
  </Accordion>

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

  <Accordion title="Mitarbeiter und Aktionen" 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="Formular-Antworten" icon="clipboard-list">
    `{form.1}`, `{form.2}` … — **1-indexiert**, in der Reihenfolge, in der deine Fragen erscheinen.

    `{form.Label}` funktioniert ebenfalls und verwendet das Label der Frage selbst.
  </Accordion>

  <Accordion title="Zeit und Statistiken" icon="clock">
    `{date}` `{time}` `{timestamp}` `{time.created}` `{time.opened}` `{time.claimed}` `{time.closed}` — jede akzeptiert auch `.age`.

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

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

### Modifikatoren

Ticket-Variablen akzeptieren Modifikatoren mit `{variable?modifier=value}`: `upper`, `lower`, `capitalize`, `truncate`, `slice`, `padleft`, `padright`, `replace`, `fallback`, `date`, `timestamp`, `math`, `ordinal`, `join`, `if`.

<Tip>
  `{user.name?upper}` schreit den Namen. `{ticket.closeReason?fallback=Kein Grund angegeben}` verhindert, dass ein leeres Feld verworfen wird — was die sauberste Lösung für verschwindende Embed-Felder ist.
</Tip>

## Counting

`{count}` `{user}` `{record}` — plus `{start}` und `{savesLeft}` in den Reset- und Save-Nachrichten.

<Warning>
  `{server}` wird angeboten, wird aber **immer leer gerendert**. Tippe den Namen deines Servers direkt ein.
</Warning>

## Starboard

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

## Self-Roles

`[Role]` — der Name der Rolle, in den DM-Benachrichtigungen.

## Giveaway-Vorlagen

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

## Benachrichtigungen

Jede Plattform hat ihren eigenen Satz. Die Variable einer Plattform auf einer anderen zu verwenden, wird zu leer aufgelöst.

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

    Nur live: `{stream.title}` `{stream.game}` `{stream.viewers}` `{stream.thumbnail}`
  </Accordion>

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

    Nur live: `{stream.title}` `{stream.category}` `{stream.viewers}` `{stream.thumbnail}`

    Beachte `{stream.category}`, nicht Twitchs `{stream.game}`.
  </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">
    Funktioniert: `{episode.title}` `{episode.url}` `{episode.description}` `{podcast.name}`

    <Warning>
      `{episode.duration}`, `{podcast.author}` und `{podcast.artwork}` werden angeboten, liefern aber **nie einen Wert**. Jedes nur aus ihnen gebaute Feld wird verworfen.
    </Warning>
  </Accordion>
</AccordionGroup>

## Variablen, die nicht funktionieren

<Warning>
  Bestätigt nicht funktional. Vermeide diese:

  | Variable                                    | Wo                                    | Verhalten                                                                   |
  | ------------------------------------------- | ------------------------------------- | --------------------------------------------------------------------------- |
  | `[Server]`                                  | Welcomer                              | Keine Variable — wird wörtlich ausgegeben                                   |
  | `{server}`                                  | Counting-Meilensteine                 | Immer leer                                                                  |
  | `{episode.duration}`                        | Podcasts                              | Immer leer                                                                  |
  | `{podcast.author}`                          | Podcasts                              | Immer leer                                                                  |
  | `{podcast.artwork}`                         | Podcasts                              | Meist leer                                                                  |
  | `{username}`, `{server.name}`, `{nickname}` | **Bewerbungs-Workflow-Aktionen**      | Immer leer — funktionieren in DM-Nachrichten, aber nicht in Aktionsvorlagen |
  | `{stream.*}`                                | Twitch/Kick **Offline**-Ankündigungen | Leer; nur live                                                              |
</Warning>

<Card title="Fehlerbehebung" icon="wrench" horizontal href="/de/help/troubleshooting">
  Wenn eine Nachricht gar nicht ankommt.
</Card>
