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

# Довідник змінних

> Кожен плейсхолдер у Vetox, згрупований за функцією, і чому одні використовують квадратні дужки, а інші — фігурні.

Змінні — це плейсхолдери, що замінюються реальними значеннями під час надсилання повідомлення.

## Два різні синтаксиси

<Warning>
  **У Vetox використовуються два синтаксиси, і вони не взаємозамінні.**

  | Синтаксис  | Де використовується                           |
  | ---------- | --------------------------------------------- |
  | `[Square]` | Welcomer, goodbye та привітальні повідомлення |
  | `{curly}`  | Усе інше                                      |

  `{User}` у вітальному повідомленні друкується буквально. `[user]` у повідомленні тикета друкується буквально.
</Warning>

## Універсальне правило

<Warning>
  **Невідома змінна перетворюється на порожній текст, а не помилку**, — і в embed **поле, у якому заголовок або значення в результаті порожні, повністю викидається з повідомлення.**

  Це найпоширеніша причина «поле мого embed постійно зникає». Майже завжди — неправильно написана змінна або та, що не існує для цієї функції.
</Warning>

## Welcomer, goodbye та greet

| Змінна         | Значення                                             |
| -------------- | ---------------------------------------------------- |
| `[User]`       | Учасник                                              |
| `[ServerName]` | Назва сервера                                        |
| `[UsersCount]` | Нова кількість учасників                             |
| `[Inviter]`    | Хто запросив — лише в welcome                        |
| `[Code]`       | Використаний код запрошення — лише в welcome         |
| `[CountUrl]`   | URL зображення лічильника учасників — лише в welcome |

<Warning>
  **`[Server]` не є змінною.** Вона є в стандартному вітальному повідомленні й друкується буквально. Замініть її на `[ServerName]`.
</Warning>

<Note>
  Для `[Inviter]` і `[Code]` потрібен **Manage Server**, щоб Vetox міг читати запрошення.
</Note>

## Тикети

Найбагатший набір у Vetox. Використовується в embed тикетів, форматах назв каналів і повідомленнях про години підтримки.

<AccordionGroup>
  <Accordion title="Учасник" icon="user">
    `{user}` `{mention}` `{username}` `{userid}` `{user.mention}` `{user.name}` `{user.username}` `{user.tag}` `{user.id}`
  </Accordion>

  <Accordion title="Тикет" 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="Канал, панель та опція" icon="hashtag">
    `{channel}` `{channel.mention}` `{channel.name}` `{channel.id}` `{panel}` `{panel.name}` `{panel-name}` `{option}` `{option.label}`
  </Accordion>

  <Accordion title="Сервер" icon="server">
    `{server}` `{server.name}` `{server.id}` `{server.members}` `{server.icon}` `{server.banner}` `{guild}` `{members}`
  </Accordion>

  <Accordion title="Персонал і дії" 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="Відповіді з форми" icon="clipboard-list">
    `{form.1}`, `{form.2}` … — **нумерація з 1**, у тому порядку, у якому йдуть питання.

    Також працює `{form.Label}` за назвою питання.
  </Accordion>

  <Accordion title="Час і статистика" icon="clock">
    `{date}` `{time}` `{timestamp}` `{time.created}` `{time.opened}` `{time.claimed}` `{time.closed}` — кожна приймає й `.age`.

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

  <Accordion title="Години підтримки" icon="business-time">
    `{supportHours.status}` `{supportHours.nextOpen}` `{supportHours.nextOpenTime}` `{supportHours.nextOpenRelative}` `{supportHours.closesAt}` `{supportHours.closesAtTime}`
  </Accordion>
</AccordionGroup>

### Модифікатори

Змінні тикетів приймають модифікатори у вигляді `{variable?modifier=value}`: `upper`, `lower`, `capitalize`, `truncate`, `slice`, `padleft`, `padright`, `replace`, `fallback`, `date`, `timestamp`, `math`, `ordinal`, `join`, `if`.

<Tip>
  `{user.name?upper}` кричить іменем. `{ticket.closeReason?fallback=No reason given}` уникає викидання порожнього поля — і це найохайніше рішення проти зникнення embed-полів.
</Tip>

## Лічильник (Counting)

`{count}` `{user}` `{record}` — плюс `{start}` і `{savesLeft}` у повідомленнях скидання та збереження.

<Warning>
  `{server}` пропонується, але **завжди рендериться порожнім**. Вводьте назву сервера напряму.
</Warning>

## Starboard

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

## Self-Roles

`[Role]` — назва ролі у DM-сповіщеннях.

## Шаблони розіграшів

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

## Сповіщення

У кожної платформи власний набір. Використання змінної однієї платформи в іншій дасть порожнє значення.

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

    Лише в ефірі: `{stream.title}` `{stream.game}` `{stream.viewers}` `{stream.thumbnail}`
  </Accordion>

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

    Лише в ефірі: `{stream.title}` `{stream.category}` `{stream.viewers}` `{stream.thumbnail}`

    Зверніть увагу: `{stream.category}`, а не `{stream.game}` як у 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="Подкасти" icon="podcast">
    Працюють: `{episode.title}` `{episode.url}` `{episode.description}` `{podcast.name}`

    <Warning>
      `{episode.duration}`, `{podcast.author}` і `{podcast.artwork}` пропонуються, але **ніколи не дають значення**. Будь-яке поле, побудоване лише з них, буде викинуте.
    </Warning>
  </Accordion>
</AccordionGroup>

## Змінні, що не працюють

<Warning>
  Підтверджено як непрацюючі. Уникайте їх:

  | Змінна                                      | Де                                | Поведінка                                                           |
  | ------------------------------------------- | --------------------------------- | ------------------------------------------------------------------- |
  | `[Server]`                                  | Welcomer                          | Не змінна — друкується буквально                                    |
  | `{server}`                                  | Counting milestones               | Завжди порожня                                                      |
  | `{episode.duration}`                        | Подкасти                          | Завжди порожня                                                      |
  | `{podcast.author}`                          | Подкасти                          | Завжди порожня                                                      |
  | `{podcast.artwork}`                         | Подкасти                          | Зазвичай порожня                                                    |
  | `{username}`, `{server.name}`, `{nickname}` | **Дії робочого процесу заявок**   | Завжди порожні — працюють у DM-повідомленнях, але не в шаблонах дій |
  | `{stream.*}`                                | **Офлайн**-оголошення Twitch/Kick | Порожні; лише в ефірі                                               |
</Warning>

<Card title="Усунення несправностей" icon="wrench" horizontal href="/uk/help/troubleshooting">
  Коли повідомлення взагалі не приходить.
</Card>
