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

# Referencja zmiennych

> Każda zmienna placeholderowa w Vetox, pogrupowana według funkcji — i dlaczego jedne używają nawiasów kwadratowych, a inne klamrowych.

Zmienne to placeholdery zastępowane rzeczywistymi wartościami, gdy wiadomość jest wysyłana.

## Dwie różne składnie

<Warning>
  **Vetox używa dwóch składni i nie są one wymienne.**

  | Składnia   | Używana przez                        |
  | ---------- | ------------------------------------ |
  | `[Square]` | Wiadomości Welcomer, goodbye i greet |
  | `{curly}`  | Wszystko inne                        |

  `{User}` w wiadomości powitalnej jest drukowane dosłownie. `[user]` w wiadomości ticketu jest drukowane dosłownie.
</Warning>

## Uniwersalna zasada

<Warning>
  **Nieznana zmienna staje się pustym tekstem, a nie błędem** — i w embedach **pole, którego tytuł lub wartość okazuje się puste, jest usuwane z wiadomości w całości.**

  To zdecydowanie najczęstsza przyczyna „moje pole embed ciągle znika". Prawie zawsze to źle napisana zmienna albo taka, która nie istnieje dla tej funkcji.
</Warning>

## Welcomer, goodbye i greet

| Zmienna        | Wartość                                    |
| -------------- | ------------------------------------------ |
| `[User]`       | Członek                                    |
| `[ServerName]` | Nazwa Twojego serwera                      |
| `[UsersCount]` | Nowa liczba członków                       |
| `[Inviter]`    | Kto ich zaprosił — tylko welcome           |
| `[Code]`       | Użyty kod zaproszenia — tylko welcome      |
| `[CountUrl]`   | URL obrazu liczby członków — tylko welcome |

<Warning>
  **`[Server]` nie jest zmienną.** Pojawia się w domyślnej wiadomości powitalnej i drukuje dosłownie. Zastąp ją `[ServerName]`.
</Warning>

<Note>
  `[Inviter]` i `[Code]` potrzebują **Manage Server**, aby Vetox mógł czytać zaproszenia.
</Note>

## Tickety

Najbogatszy zestaw w Vetox. Do użycia w embedach ticketów, formatach nazw kanałów i wiadomościach godzin wsparcia.

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

  <Accordion title="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="Kanał, panel i opcja" icon="hashtag">
    `{channel}` `{channel.mention}` `{channel.name}` `{channel.id}` `{panel}` `{panel.name}` `{panel-name}` `{option}` `{option.label}`
  </Accordion>

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

  <Accordion title="Personel i akcje" 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="Odpowiedzi z formularzy" icon="clipboard-list">
    `{form.1}`, `{form.2}` … — **indeksowane od 1**, w kolejności pojawiania się pytań.

    `{form.Label}` również działa, używając własnej etykiety pytania.
  </Accordion>

  <Accordion title="Czas i statystyki" icon="clock">
    `{date}` `{time}` `{timestamp}` `{time.created}` `{time.opened}` `{time.claimed}` `{time.closed}` — każdy przyjmuje też `.age`.

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

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

### Modyfikatory

Zmienne ticketów akceptują modyfikatory z `{variable?modifier=value}`: `upper`, `lower`, `capitalize`, `truncate`, `slice`, `padleft`, `padright`, `replace`, `fallback`, `date`, `timestamp`, `math`, `ordinal`, `join`, `if`.

<Tip>
  `{user.name?upper}` krzyczy imię. `{ticket.closeReason?fallback=No reason given}` unika odrzucenia pustego pola — najczystsza poprawka na znikające pola embed.
</Tip>

## Counting

`{count}` `{user}` `{record}` — plus `{start}` i `{savesLeft}` w wiadomościach resetu i zapisu.

<Warning>
  `{server}` jest oferowane, ale **zawsze renderuje się jako puste**. Wpisz nazwę serwera bezpośrednio.
</Warning>

## Starboard

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

## Self-Roles

`[Role]` — nazwa roli, w powiadomieniach DM.

## Szablony konkursów

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

## Powiadomienia

Każda platforma ma własny zestaw. Użycie zmiennej jednej platformy na innej rozwiązuje się do pustego.

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

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

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

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

    Zwróć uwagę na `{stream.category}`, nie na `{stream.game}` z Twitcha.
  </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="Podcasty" icon="podcast">
    Działające: `{episode.title}` `{episode.url}` `{episode.description}` `{podcast.name}`

    <Warning>
      `{episode.duration}`, `{podcast.author}` i `{podcast.artwork}` są oferowane, ale **nigdy nie produkują wartości**. Każde pole zbudowane tylko z nich jest odrzucane.
    </Warning>
  </Accordion>
</AccordionGroup>

## Zmienne, które nie działają

<Warning>
  Potwierdzone niedziałające. Unikaj tych:

  | Zmienna                                     | Gdzie                              | Zachowanie                                                             |
  | ------------------------------------------- | ---------------------------------- | ---------------------------------------------------------------------- |
  | `[Server]`                                  | Welcomer                           | Nie jest zmienną — drukuje dosłownie                                   |
  | `{server}`                                  | Kamienie milowe Counting           | Zawsze puste                                                           |
  | `{episode.duration}`                        | Podcasty                           | Zawsze puste                                                           |
  | `{podcast.author}`                          | Podcasty                           | Zawsze puste                                                           |
  | `{podcast.artwork}`                         | Podcasty                           | Zwykle puste                                                           |
  | `{username}`, `{server.name}`, `{nickname}` | **Akcje workflow aplikacji**       | Zawsze puste — działają w wiadomościach DM, ale nie w szablonach akcji |
  | `{stream.*}`                                | Twitch/Kick ogłoszenia **offline** | Puste; tylko live                                                      |
</Warning>

<Card title="Rozwiązywanie problemów" icon="wrench" horizontal href="/pl/help/troubleshooting">
  Gdy wiadomość w ogóle nie dociera.
</Card>
