# Zmienne komend

> Wszystkie zmienne komend KickBot z przykładami, od {{sender.followage}} dla followage na Kick po losowe liczby i żądania API w odpowiedziach na czacie.

Source: https://kickbot.com/pl/docs/chat-bot/command-variables

Zmienne to miejsca w odpowiedzi komendy, w które KickBot wstawia aktualną wartość za każdym razem, gdy ktoś użyje komendy. Na przykład odpowiedź `!followage` ze zmienną `{{sender.followage}}` pokazuje, jak długo widz obserwuje Twój kanał Kick. Zmienne działają we [własnych komendach](https://kickbot.com/pl/docs/chat-bot/custom-commands) i w odpowiedziach [wbudowanych komend](https://kickbot.com/pl/docs/chat-bot/built-in-commands).

Każdą zmienną pisz z dwoma nawiasami klamrowymi z każdej strony, dokładnie tak jak na tej stronie. Wielkość liter ma znaczenie: `{{sender.username}}` działa, a `{{Sender.Username}}` nie.

## Dodaj zmienną do odpowiedzi

1. Otwórz komendę na stronie [Własne komendy](https://kickbot.com/dashboard/commands) albo kliknij **Dodaj komendę**.
2. Pod polem **Odpowiedź** użyj **Wstaw zmienną**. Wybierz grupę (**Nadawca**, **Streamer**, **Otagowany użytkownik / Parametr**, **Stream**, **Losowe** albo **Żądanie API**).
3. Kliknij zmienną. KickBot wstawi ją tam, gdzie jest kursor.

Podgląd **Na czacie Kick** pokazuje przykładowe wartości, więc sprawdzisz odpowiedź przed zapisaniem.

![Menu Wstaw zmienną z otwartą grupą Stream i podglądem z przykładowymi wartościami followage, kategorii i liczby widzów](https://kickbot.com/docs/images/chat-bot/command-variables/01-variables.webp "Podgląd wstawia przykładowe wartości. Na czacie KickBot używa prawdziwych wartości.")

Przykłady poniżej dotyczą widza o nazwie KickBotDev na kanale yourchannel.

## Nadawca

Widz, który wpisał komendę.

| Zmienna | Co wstawia | Przykładowy wynik |
| --- | --- | --- |
| `{{sender.username}}` | Nazwę widza tak jak w linku do jego kanału (małymi literami) | `kickbotdev` |
| `{{sender.followers}}` | Liczbę obserwujących własnego kanału widza | `128` |
| `{{sender.followage}}` | Jak długo widz obserwuje Twój kanał | `4 months 12 days` |
| `{{sender.url}}` | Link do kanału Kick widza | `https://kick.com/kickbotdev` |
| `{{sender.bio}}` | Opis (bio) z profilu Kick widza | `Variety streamer from Texas` |
| `{{sender.instagram}}` | Nazwę na Instagramie z profilu Kick widza | `yourhandle` |
| `{{sender.twitter}}` | Nazwę na X (Twitterze) z profilu Kick widza | `yourhandle` |
| `{{sender.youtube}}` | YouTube z profilu Kick widza | `yourhandle` |
| `{{sender.discord}}` | Discord z profilu Kick widza | `discord.gg/your-server-code` |
| `{{sender.tiktok}}` | Nazwę na TikToku z profilu Kick widza | `yourhandle` |
| `{{sender.facebook}}` | Nazwę na Facebooku z profilu Kick widza | `yourhandle` |

### Followage na Kick

Jeśli widz nie obserwuje Twojego kanału, KickBot zamiast Twojej odpowiedzi wysyła: `@kickbotdev is not following @yourchannel`.

Wbudowana komenda `!followage` używa tej zmiennej. Jej odpowiedź to `@{{sender.username}} has been following for {{sender.followage}}`, więc na czacie wygląda to tak: `@kickbotdev has been following for 4 months 12 days`.

## Streamer

Ty, właściciel kanału.

| Zmienna | Co wstawia | Przykładowy wynik |
| --- | --- | --- |
| `{{streamer.username}}` | Nazwę Twojego kanału tak jak w linku do kanału | `yourchannel` |
| `{{streamer.followers}}` | Liczbę Twoich obserwujących | `2450` |
| `{{streamer.url}}` | Link do Twojego kanału Kick | `https://kick.com/yourchannel` |
| `{{streamer.bio}}` | Twój opis (bio) na Kick | `Chill streams every night` |
| `{{streamer.instagram}}` | Nazwę na Instagramie z Twojego profilu Kick | `yourhandle` |
| `{{streamer.twitter}}` | Nazwę na X (Twitterze) z Twojego profilu Kick | `yourhandle` |
| `{{streamer.youtube}}` | YouTube z Twojego profilu Kick | `yourhandle` |
| `{{streamer.discord}}` | Discord z Twojego profilu Kick | `discord.gg/your-server-code` |
| `{{streamer.tiktok}}` | Nazwę na TikToku z Twojego profilu Kick | `yourhandle` |
| `{{streamer.facebook}}` | Nazwę na Facebooku z Twojego profilu Kick | `yourhandle` |

> **Caution:** Zmienne profilu (bio, Instagram, X, YouTube, Discord, TikTok, Facebook) czytają profil Kick. Jeśli to pole w profilu jest puste, zmienna zostaje w odpowiedzi jako zwykły tekst, na przykład `{{streamer.tiktok}}`. Używaj ich tylko dla profili, w których to pole jest wypełnione.

## Otagowany użytkownik i parametr

Tekst albo nazwa, którą widz wpisuje po komendzie. Na przykład widz wpisuje `!so @SomeChannel` albo `!hug @friend`.

| Zmienna | Co wstawia | Przykład dla `!so @SomeChannel great stream` |
| --- | --- | --- |
| `{{param}}` | Cały tekst po komendzie | `@SomeChannel great stream` |
| `{{taggedUser.username}}` | Nazwę po pierwszym `@` | `SomeChannel` |
| `{{taggedUser.url}}` | Link do otagowanego kanału | `https://kick.com/SomeChannel` |
| `{{taggedUser.followers}}` | Liczbę obserwujących otagowanego kanału | `57` |
| `{{taggedUser.followage}}` | Jak długo otagowany widz obserwuje Twój kanał | `2 months 3 days` |

Otagowany użytkownik ma też zmienne profilu: `{{taggedUser.bio}}`, `{{taggedUser.instagram}}`, `{{taggedUser.twitter}}`, `{{taggedUser.youtube}}`, `{{taggedUser.discord}}`, `{{taggedUser.tiktok}}` i `{{taggedUser.facebook}}`.

Jeśli widz nikogo nie otaguje, `{{taggedUser.username}}` jest puste. Jeśli otagowana nazwa nie jest kanałem Kick, zmienne, które pobierają dane (obserwujący, bio i inne pola profilu), nie mogą zadziałać, a KickBot zamiast odpowiedzi wysyła `404 tagged user not found`.

Przykład: wbudowana komenda `!so` (shout-out) ma odpowiedź `Go check @{{taggedUser.username}}'s channel! {{taggedUser.url}}`.

## Stream

Twój bieżący stream. Te zmienne działają, gdy jesteś na żywo.

| Zmienna | Co wstawia | Przykładowy wynik |
| --- | --- | --- |
| `{{stream.title}}` | Tytuł Twojego streama | `Spokojny stream, wpadaj` |
| `{{stream.category}}` | Kategorię Twojego streama | `Just Chatting` |
| `{{stream.viewers}}` | Aktualną liczbę widzów | `342` |

Gdy jesteś offline, KickBot nie może odczytać Twojego streama, więc komenda z tymi zmiennymi nie wysyła zwykłej odpowiedzi. Może zamiast niej wysłać `404 stream not found`.

## Losowe

Używaj ich w grach i zabawnych komendach. Za każdym razem wypada nowa wartość.

| Zmienna | Co wstawia | Przykładowy wynik |
| --- | --- | --- |
| `{{randomRange(1,100)}}` | Liczbę całkowitą od pierwszej do drugiej liczby, obie włącznie | `42` |
| `{{randomItem("kamień","papier","nożyce")}}` | Jeden element z listy, każdy z taką samą szansą | `papier` |
| `{{randomItemPercentage("zwykły":70,"rzadki":25,"legendarny":5)}}` | Jeden element z listy, z szansą podaną przy każdym elemencie | `zwykły` |

Zasady:

- `randomRange` przyjmuje dwie liczby całkowite równe 0 lub większe. Pierwsza nie może być większa od drugiej.
- Każdy element wpisz w prostym cudzysłowie (`"`), a elementy oddziel przecinkami. Elementy mogą mieć spacje, na przykład `"Zapytaj później"`.
- W `randomItemPercentage` wpisz liczbę zaraz po dwukropku, bez spacji. Liczby to wagi. Przy 70, 25 i 5 pierwszy element wypada mniej więcej 70 razy na 100. `randomItemPercentage` nie ma w menu **Wstaw zmienną**. Wpisz ją samodzielnie.

## Żądanie API

`{{request("https://...")}}` pobiera dane z adresu internetowego (API) i wstawia je do odpowiedzi. Tak pokażesz żart, rangę w grze albo cokolwiek innego, co zwraca publiczne API.

```text
{{request("https://uselessfacts.jsph.pl/api/v2/facts/random").text}}
```

KickBot otwiera adres, czyta odpowiedź JSON i wysyła pole `text`. Na przykład: `The praying mantis is the only insect that can turn its head`.

Jak to działa:

- **Wybierz pole.** Dopisz ścieżkę po nawiasie zamykającym. Używaj kropek dla nazw i `[0]` dla elementów listy, na przykład `.data[0].name`. Bez ścieżki albo gdy ścieżki nie ma w odpowiedzi, KickBot wysyła całą odpowiedź.
- **Używaj zmiennych w adresie.** Na przykład `{{request("https://example.com/rank?user={{sender.username}}").rank}}`. KickBot wstawia wartość i zamienia ją na bezpieczną dla adresu internetowego (spacja staje się `%20`). Żądanie wewnątrz żądania nie jest dozwolone.
- **Tylko żądania GET.** KickBot nie może wysłać treści (body) ani nagłówków. Jeśli API wymaga klucza, dodaj go do adresu jako parametr zapytania.
- **Limity.** Tylko adresy `http` i `https` w publicznym internecie. KickBot czeka na odpowiedź do 3 sekund, więc używaj API, które odpowiada szybko i krótko.

> **Caution:** Każdy, kto widzi ustawienia Twoich komend, zobaczy klucz API w adresie. Używaj kluczy, które tylko odczytują publiczne dane.

## Więcej zmiennych

Te zmienne działają, ale nie ma ich w menu **Wstaw zmienną**.

| Zmienna | Co wstawia | Przykładowy wynik |
| --- | --- | --- |
| `{{user}}` | Nazwę widza z zachowaniem wielkich liter | `KickBotDev` |
| `{{sender.fullUsername}}` | Nazwę widza z `@` na początku | `@KickBotDev` |
| `{{commands}}` | Wszystkie włączone komendy oddzielone przecinkami | `commands, followage, lurk, me, so, welcome, discord` |

Wbudowana komenda `!commands` używa `{{commands}}`. Jej odpowiedź to `Enabled commands: {{commands}}`.

## Częste błędy

- **Jeden nawias zamiast dwóch.** `{sender.username}` zostaje jako tekst. Użyj `{{sender.username}}`.
- **Literówka w nazwie.** Nieznana zmienna, na przykład `{{sender.name}}`, sprawia, że komenda nie wysyła odpowiedzi. Porównaj pisownię z tą stroną.
- **Zaokrąglone cudzysłowy.** `randomItem` i `request` potrzebują prostych cudzysłowów (`"`). Niektóre telefony i edytory tekstu zamieniają je na zaokrąglone (`“ ”`). Dla pewności wpisuj je w panelu.

## Najczęstsze pytania

**Jak zrobić komendę followage na Kick?**

KickBot ma wbudowaną komendę `!followage`, która jest włączona na każdym kanale. Żeby zrobić własną, dodaj komendę z odpowiedzią na przykład `@{{sender.username}} has followed for {{sender.followage}}`.

**Jak pokazać nazwę widza w komendzie?**

Użyj `{{sender.username}}` dla nazwy tak jak w linku do kanału albo `{{user}}` dla nazwy z zachowaniem wielkich liter. Dodaj `@` na początku, jeśli chcesz, żeby Kick pokazał ją jako oznaczenie, na przykład `@{{sender.username}}`.

**Czy komenda może pokazać liczbę widzów albo tytuł streama?**

Tak. Użyj `{{stream.viewers}}` i `{{stream.title}}`. Działają, gdy jesteś na żywo.
