# Робота з посиланнями

## Посилання з повідомленням про клік <a href="#dlya-raboty-s-ssylkami" id="dlya-raboty-s-ssylkami"></a>

proxy() | proxy\_date() | proxy\_timeout()

&#x20;<mark style="color:red;">**ЛЕГЕНДА:**</mark>

<mark style="color:red;">**!**</mark> - Обов’язкові параметри

**proxy(lnk, one-shot)** - генерує посилання з повідомленням про клік. Функція приймає такі параметри:\ <mark style="color:red;">!</mark> **посилання** -посилання \
**one-shot** -індикатор, що посилання одноразове. Просто передайте значення 1.

**proxy\_date(lnk, date, time)** -  генерує посилання з повідомленням про клік і вказаним часом закінчення дії. Функція приймає такі параметри:\ <mark style="color:red;">!</mark> **посилання** - посилання\ <mark style="color:red;">!</mark> **date** - дата завершення дії посилання \ <mark style="color:red;">!</mark> **time** - час завершення дії посилання\
**one-shot** - індикатор, що посилання одноразове. Просто передайте 1.

**proxy\_timeout(lnk, minutes, one-shot)** - генерує посилання з повідомленням про клік і вказаним таймером доступу. Функція приймає такі параметри:\ <mark style="color:red;">!</mark> **посилання** - посилання\ <mark style="color:red;">!</mark> **minutes** - кількість хвилин, протягом яких посилання залишається активним.\
**one-shot** - індикатор, що посилання одноразове. Просто передайте 1.

<details>

<summary>Приклад</summary>

Розгляньмо простий приклад:

<div data-with-frame="true"><figure><img src="/files/d441aa6dd03a9a5ce669f96ab7cb2e53b12896e8" alt=""><figcaption></figcaption></figure></div>

Ми створили два proxy-посилання і вставили їх у кнопки та текст повідомлення. Оскільки ми тестуємо в Telegram, це гарна нагода пригадати, як правильно форматувати посилання за допомогою Markdown. Для обробки спеціальних символів ми використали функцію tg\_escape().

Ось як їх бачить клієнт, наприклад, у Telegram:

<div data-with-frame="true"><figure><img src="/files/32cc125c2ac71b6b96cfa0bb08618cacb89d15c5" alt="" width="188"><figcaption></figcaption></figure></div>

Коли клієнт натискає на посилання, ми отримуємо callback:

<div data-with-frame="true"><figure><img src="/files/6ba28deaf289092fc61818d93872a1ff15202e7b" alt="" width="563"><figcaption></figcaption></figure></div>

Давайте налаштуємо відповідь на цю подію:

<div data-with-frame="true"><figure><img src="/files/48fbe6f35d4056de06c706ad238196aa4f7e2ce5" alt="" width="563"><figcaption></figcaption></figure></div>

Тепер давайте протестуємо функції видалення посилань:

<div data-with-frame="true"><figure><img src="/files/66f597ae04c04b1ef3c3a8e02f9c7ac09c763a1e" alt="" width="375"><figcaption></figcaption></figure></div>

Таким чином, якщо клієнт спробує скористатися одноразовим посиланням після його видалення, він отримає помилку, оскільки посилання більше не існує.

Давайте видалимо посилання з обмеженим часом:

<div data-with-frame="true"><figure><img src="/files/66f597ae04c04b1ef3c3a8e02f9c7ac09c763a1e" alt="" width="375"><figcaption></figcaption></figure></div>

Після виконання функції в картці клієнта не залишається proxy-посилань, і будь-яка спроба перейти за посиланням повертає ту саму помилку.

</details>

<details>

<summary>Приклад коду для копіювання</summary>

Приклад коду для поля "Повідомлення" (не забудьте увімкнути **Markdown** якщо ви працюєте з Telegram):

```
*Тестування посилань:*
[Натисніть](#{link3})
```

або протестуйте, використовуючи такий формат виводу:

<pre><code><strong>Тестування посилань:
</strong>#{link2}
</code></pre>

Приклад коду в полі "Калькулятор":&#x20;

```
link1=proxy('https://mavibot.ai/', 1) 
link2=short_date('https://mavibot.ai/#tariff', '11.06.2025', '2pm') 
link3=tg_escape(link2)
```

</details>

{% hint style="info" %}
Коли клієнт натискає на proxy-посилання, ви отримаєте callback у вигляді **link\_was\_pressed** . Це дає змогу налаштувати реакцію на натискання посилання.

Для цього введіть отриманий callback у поле "Умова" та встановіть тип збігу Exact Match.
{% endhint %}

## Скорочення посилань

short() | short\_date() | short\_timeout()

&#x20;<mark style="color:red;">**ЛЕГЕНДА:**</mark>

<mark style="color:red;">**!**</mark> - Обов’язкові параметри

**short(lnk, one-shot)** - генерує посилання без повідомлення про клік. Функція приймає такі параметри:\ <mark style="color:red;">!</mark> **посилання** -посилання \
**one-shot** -індикатор, що посилання одноразове. Просто передайте значення 1.

**short\_date(lnk, date, time)** - генерує посилання без повідомлення про клік і з указаним часом завершення дії. Функція приймає такі параметри:\ <mark style="color:red;">!</mark> **посилання** - посилання\ <mark style="color:red;">!</mark> **date** - дата завершення дії посилання \ <mark style="color:red;">!</mark> **time** - час завершення дії посилання\
**one-shot** - індикатор, що посилання одноразове. Просто передайте 1.

**short\_timeout(lnk, minutes, one-shot)** - генерує посилання без повідомлення про клік і з указаним таймером доступу. Функція приймає такі параметри:\ <mark style="color:red;">!</mark> **посилання** - посилання\ <mark style="color:red;">!</mark> **minutes** - кількість хвилин, протягом яких посилання залишається активним.\
**one-shot** - індикатор, що посилання одноразове. Просто передайте 1.

## **Видалення посилань**

remove\_links() | remove\_one\_time\_links()| remove\_timer\_links()

<mark style="color:red;">**ЛЕГЕНДА:**</mark>

<mark style="color:red;">**!**</mark> - Обов’язкові параметри

**remove\_links()** - деактивація всіх скорочених посилань, надісланих клієнту

\
**remove\_one\_time\_links()** - деактивація всіх одноразових посилань, надісланих клієнту<br>

**remove\_timer\_links()** - деактивація всіх посилань з обмеженим часом, надісланих клієнту

## Посилання для квізу в Telegram-боті

quiz\_link\_timeout() | quiz\_link\_date() | quiz\_link()

{% hint style="warning" %}
Зверніть увагу!

Термін дії посилання обмежений 21 днем, тому його потрібно оновлювати!
{% endhint %}

Щоб увімкнути відображення квізу в Telegram, потрібно:

1\. Скопіювати ID сторінки сайту. Для цього перейдіть у розділ "Сайти" та виберіть потрібний сайт:

<div data-with-frame="true"><figure><img src="/files/2211978c88d84abe18b5a3387f9dc985dd5bee56" alt="" width="563"><figcaption></figcaption></figure></div>

Далі в тексті ми будемо називати **mini\_landing\_page\_id** назвою змінної.

2\. У полі "Калькулятор" використайте одну з таких функцій:

<mark style="color:red;">**ЛЕГЕНДА:**</mark>

<mark style="color:red;">**!**</mark> - Обов’язкові параметри

**quiz\_link\_timeout(mini\_landing\_page\_id, minutes)  -** генерує посилання з обмеженням терміну дії, заданим у хвилинах

Параметри:

<mark style="color:red;">**!**</mark>**&#x20;mini\_landing\_page\_id** - ID сторінки сайту\
**minutes -** час дії посилання в хвилинах (тип: число)

**quiz\_link\_date(mini\_landing\_page\_id, date, time) -** генерує посилання із завершенням дії у певні дату й час

Параметри:

<mark style="color:red;">**!**</mark>**&#x20;mini\_landing\_page\_id** - ID сторінки сайту\
**date** - дата активності посилання (формат: dd.mm.yyyy)\
**time** - час активності посилання (формат: hh:mm)

&#x20;**quiz\_link(mini\_landing\_page\_id)** - генерує посилання без часу завершення дії

Параметри:

<mark style="color:red;">**!**</mark>**&#x20;mini\_landing\_page\_id** - ID сторінки сайту

<details>

<summary>Приклад</summary>

<div data-with-frame="true"><figure><img src="/files/73f50de46d1d6f2ceda0f9b3094d6b03806d2638" alt="" width="563"><figcaption></figcaption></figure></div>

3\. Створіть **Telegram Web App** кнопку та вкажіть назву змінної у фігурних дужках зі знаком решітки.

<div data-with-frame="true"><figure><img src="/files/8f51210595aa159cb5ae5a82bc3b78a5e1d223cd" alt="" width="375"><figcaption></figcaption></figure></div>

<mark style="color:red;">**Важливо!**</mark> \
Переконайтеся, що значення змінної правильно збережено в розширених налаштуваннях.

<div data-with-frame="true"><figure><img src="/files/b4cb37472458765c91d606b2ff0100ce0aec56a6" alt="" width="563"><figcaption></figcaption></figure></div>

Якщо ви використовуєте **quiz\_link\_timeout** для перенаправлення клієнта на сторінку сайту, ви можете використовувати змінні клієнта в заголовку та описі сторінки. Наприклад, якщо у клієнта є змінна **name** зі значенням "John", а опис сторінки містить **"Hi #{name}, how are you?"**, вивід буде "Hi John, how are you?". Однак якщо в клієнта немає цієї змінної, значення буде взято із глобальних змінних проєкту.

{% hint style="warning" %}
**Увага!** Будьте обережні, використовуючи посилання без часу завершення дії. Якщо посилання буде передано комусь іншому, і ця людина пройде квіз, результати буде записано за клієнтом, для якого посилання було спочатку згенеровано.
{% endhint %}

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/uk/chatbot/functions/kalkulyator/links.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
