# Налаштування чату та месенджера Telegram

**Робота з platform ID у MaviBot**

У MaviBot усі Telegram-об’єкти (користувачі, групи, канали) ідентифікуються за універсальною `platform_id` змінною. Ця змінна не розрізняє типи об’єктів.

**Проблема:** Щоб використовувати функції на кшталт `accept` або `reject` які вимагають конкретних типів об’єктів, потрібно знати і *chat* ID, і *user* ID окремо.

**Рішення:** Коли ви отримуєте callback або повідомлення, одразу збережіть `platform_id` значення у дві окремі змінні з відповідними назвами:

* **`chat_id`** — для збереження ID групи/каналу.
* **`user_id`** — для збереження ID окремого користувача.

Це дозволяє пізніше звертатися до правильного ID у логіці вашого застосунку.

## Як змінити назву чату через Telegram-бота

<details>

<summary>Опис</summary>

**tg\_set\_group\_title(platform\_id, title)** -&#x20;

Параметри:

<table><thead><tr><th width="294.828125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td> <mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a>  </td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> title</strong></td><td>нова назва чату</td></tr></tbody></table>

</details>

## Як змінити опис чату через Telegram-бота

<details>

<summary>Опис</summary>

**tg\_set\_chat\_description(platform\_id, description)**

<table><thead><tr><th width="294.828125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td> <mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a>  </td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> description</strong></td><td>нова назва чату</td></tr></tbody></table>

</details>

## Як встановити аватар у групі/чаті в Telegram

<details>

<summary>Опис</summary>

**tg\_set\_chat\_photo(platform\_id, photo)**

<table><thead><tr><th width="294.828125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td> <mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a><strong>,</strong> в якому ви хочете встановити аватар</td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong>  фото</strong></td><td>посилання на фото</td></tr></tbody></table>

</details>

## Як видалити аватар у групі/чаті в Telegram

<details>

<summary>Опис</summary>

**tg\_delete\_chat\_photo(platform\_id)**

<table><thead><tr><th width="294.828125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td> <mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a><strong>,</strong> в якому потрібно встановити аватар</td></tr></tbody></table>

</details>

## Як забанити Telegram-групу

<details>

<summary>Опис</summary>

**tg\_ban\_chat\_sender\_chat(platform\_id, sender\_chat\_id)**&#x20;

Параметри:

<table><thead><tr><th width="294.828125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td> <mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a><strong>, яку потрібно забанити</strong></td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> sender_chat_id</strong></td><td>ID чату, який буде забанено</td></tr></tbody></table>

Водночас власник забаненого чату не зможе писати від імені своїх інших чатів, доки його не буде розбанено.

</details>

## Як розбанити Telegram-групу

<details>

<summary>Опис</summary>

**tg\_unban\_chat\_sender\_chat(platform\_id, sender\_chat\_id)**

Параметр:

<table><thead><tr><th width="294.828125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td> <mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a><strong>,</strong> у якому ви розбанюєте </td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> sender_chat_id</strong></td><td>ID чату, який ви розбанюєте </td></tr></tbody></table>

</details>

## Як створити посилання-запрошення для приєднання до Telegram-чату

<details>

<summary>Опис</summary>

**tg\_create\_chat\_invite\_link(platform\_id, member\_limit, hours, request, name)**&#x20;

Параметр:

<table><thead><tr><th width="282.87109375">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr><tr><td><strong>member_limit</strong></td><td>ліміт кількості учасників</td></tr><tr><td><strong>hours</strong></td><td>час дії посилання (у годинах)</td></tr><tr><td><strong>request</strong></td><td>параметр, за якого після натискання на посилання має бути створено запит на приєднання до чату.</td></tr><tr><td><strong>name</strong> </td><td>назва посилання</td></tr></tbody></table>

{% hint style="info" %}
Під час передавання **member\_limit** параметра значення **request** параметра автоматично змінюється на **False**. Якщо вам потрібно приймати заявки на вступ, тоді залиште **member\_limit** параметр порожнім.
{% endhint %}

**Створення посилання-запрошення до чату**

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

</details>

## Як видалити посилання-запрошення до чату в Telegram

<details>

<summary>Опис</summary>

**tg\_revoke\_chat\_invite\_link(platform\_id, invite\_link)**

Параметри:

<table><thead><tr><th width="294.828125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td> <mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td> <mark style="color:red;"><strong>!</strong></mark><strong> invite_link</strong></td><td>посилання, яке потрібно видалити</td></tr></tbody></table>

</details>

## Як деактивувати всі наявні посилання й замінити їх одним посиланням&#x20;

<details>

<summary>Опис</summary>

&#x20;**tg\_export\_chat\_link(platform\_id)**

Параметри:

<table><thead><tr><th width="294.828125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td> <mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td> <mark style="color:red;"><strong>!</strong></mark><strong> invite_link</strong></td><td>посилання, яке потрібно видалити</td></tr></tbody></table>

У результаті — це посилання буде єдиним способом потрапити до групи, доки додаткові посилання не буде створено іншими способами.

{% hint style="warning" %}
Використовуйте з обережністю. Усі наявні посилання для входу до вашої групи стануть неактивними.
{% endhint %}

</details>

## Як прийняти запит і додати користувача в Telegram-канал/чат

<details>

<summary>Опис</summary>

**tg\_approve\_chat\_join\_request(chat\_id, user\_id)**

Параметри:

<table><thead><tr><th width="279.9765625"></th><th></th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> chat_id</strong></td><td>ID групи/каналу в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> user_id</strong></td><td>ID користувача в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr></tbody></table>

Прийняття запиту:

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

</details>

## Як відхилити запит у Telegram-каналі/чаті

<details>

<summary>Опис</summary>

**tg\_decline\_chat\_join\_request(chat\_id, user\_id)**&#x20;

Параметри:

<table><thead><tr><th width="279.9765625"></th><th></th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> chat_id</strong></td><td>ID групи/каналу в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> user_id</strong></td><td>ID користувача в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr></tbody></table>

Відхилення запиту

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

</details>

## Як заблокувати користувача в Telegram

<details>

<summary>Опис</summary>

**tg\_ban\_chat\_member(chat\_id, user\_id, hours)**&#x20;

Параметри:

<table><thead><tr><th width="283.67578125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> chat_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> user_id</strong></td><td>ID користувача в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> для блокування</td></tr><tr><td><strong>hours</strong></td><td>Тривалість блокування в годинах. За замовчуванням блокування є постійним. Якщо ви вкажете тривалість блокування понад 366 днів, блокування буде встановлено як постійне.</td></tr></tbody></table>

</details>

## Як розблокувати користувача в Telegram&#x20;

<details>

<summary>Опис</summary>

**tg\_unban\_chat\_member(chat\_id, user\_id)** &#x20;

Параметри:

<table><thead><tr><th width="283.67578125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> chat_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> user_id</strong></td><td>ID користувача в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a><strong>,</strong>  якого потрібно розблокувати</td></tr></tbody></table>

</details>

## Як перевірити статус підписки в Telegram

<details>

<summary>Опис</summary>

**tg\_get\_chat\_member(chat\_id, user\_id)**&#x20;

Параметри:

<table><thead><tr><th width="283.67578125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> chat_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> user_id</strong></td><td>ID користувача в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a><strong>,</strong> чию підписку ми перевіряємо</td></tr></tbody></table>

</details>

## Як визначити кількість учасників у каналі/чаті&#x20;

<details>

<summary>Опис</summary>

**tg\_get\_chat\_member\_count(platform\_id)**

Параметри:

<table><thead><tr><th width="283.67578125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr></tbody></table>

</details>

## Як перевірити, чи є учасник чату у певному списку

<details>

<summary><strong>some_client_in_list(list_id, recepient)</strong></summary>

Параметри:

<table><thead><tr><th width="283.67578125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> list_id</strong></td><td>номер списку</td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> recepient</strong></td><td> ID користувача в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a>. Для клієнтів чату це значення міститься у змінній chat_member_id.</td></tr></tbody></table>

</details>

## Як показати користувачеві дії бота (друк/вибір стікера тощо)

<details>

<summary>Опис</summary>

**tg\_send\_chat\_action(platform\_id, bot\_action,  message\_thread\_id)**

<mark style="color:за замовчуванням;background-color:green;">**! Робота з Telegram business-account**</mark>

Параметри:

<table><thead><tr><th width="286.74609375">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a>  </td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> bot_action</strong></td><td>дія бота зі списку</td></tr><tr><td><strong>message_thread_id</strong> </td><td>ID теми (доступно для супергруп, якщо увімкнено функціонал форуму).</td></tr></tbody></table>

</details>

<details>

<summary><mark style="color:orange;">Список доступних дій <strong>bot_action</strong></mark></summary>

***typing*** для текстових повідомлень, \
\&#xNAN;***upload\_photo*** для фото, \
\&#xNAN;***record\_video*** або ***upload\_video*** для відео, \
\&#xNAN;***record\_voice*** або ***upload\_voice*** для голосових нотаток, \
\&#xNAN;***upload\_document*** для звичайних документів, \
\&#xNAN;***choose\_sticker*** для стікерів, \
\&#xNAN;***find\_location*** для даних про місцезнаходження, \
\&#xNAN;***record\_video\_note*** або ***upload\_video\_note*** для відеонотатки.&#x20;

</details>

{% hint style="info" %}
Це сповіщення буде відображатися, доки не буде отримано будь-яку відповідь від бота, але не довше ніж 5 секунд.
{% endhint %}

## Як показати користувачеві Alert-сповіщення

<details>

<summary>Опис</summary>

**tg\_answer\_callback\_query(callback\_query\_id, text,show\_alert,cache\_time)**&#x20;

<table><thead><tr><th width="309.5234375">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> callback_query_id</strong> <strong>(обов’язково)</strong></td><td>Цей ID дозволяє вам визначити людину, яка натиснула кнопку, і показати їй Alert-сповіщення.</td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> text (обов’язково)</strong> </td><td>Текст Alert-сповіщення.</td></tr><tr><td><strong>show_alert</strong></td><td>Ознака зникаючого сповіщення (False — спливаюча підказка, що зникає, True — постійне віконне сповіщення)</td></tr><tr><td><strong>cache_time</strong></td><td>Максимальний час у секундах, протягом якого результат callback-запиту може кешуватися на боці клієнта. Додатки Telegram підтримуватимуть кешування, починаючи з версії 3.14. Значення за замовчуванням — 0</td></tr></tbody></table>

</details>

<details>

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

Alert-сповіщення показуються лише в результаті натискання на кнопку callback у Telegram.

\
Наприклад, використаємо такі кнопки:

\[{"line":0,"index\_in\_line":0,"text":"111","type":"inline","callback":"first"}, {"line":1,"index\_in\_line":0,"text":"222","type":"inline","callback":"second"}, {"line":2,"index\_in\_line":0,"text":"333","type":"inline","callback":"third"}]&#x20;

<figure><img src="/files/4ad4132e21c79da9d76c82be382e4359dfca09db" alt="" width="563"><figcaption></figcaption></figure>

Після натискання кнопки приходить callback із текстом, що міститься у відповідному полі. Коли ви натиснете кнопку “111”, ви отримаєте callback із текстом “first".

<figure><img src="/files/99a771b4077aa3f676861f705f4f4b28f046f866" alt="" width="563"><figcaption></figcaption></figure>

Давайте створимо блок Start і вкажемо потрібний текст у тригері. У нашому випадку: **"first**

<figure><img src="/files/1af51b0b429b867813e554ae4242c73fdcd31c6a" alt=""><figcaption></figcaption></figure>

Якщо в полі **Matches** ви оберете **Ігнорування помилок і неточностей**, цей блок надалі можна буде повторно використовувати для всіх схожих варіантів, які відрізняються на 1–2 символи. Наприклад, щоб подякувати користувачеві за надану оцінку за допомогою такої кнопки.

Далі в калькуляторі використайте **tg\_answer\_callback\_query** функцію та передайте такі параметри:\
**callback\_query\_id** - цей ID дозволяє вам визначити користувача, який натиснув кнопку, і показати йому Alert - сповіщення              \
**text** - текст Alert-сповіщення.

<figure><img src="/files/67810b655a5a487a2dce96e8d71b9f8928566e6b" alt="" width="563"><figcaption></figcaption></figure>

Приклад коду для копіювання:

`tg_answer_callback_query('#{callback_query_id}', "Ви натиснули кнопку 111")`&#x20;

{% hint style="warning" %}
Увага! Параметр callback\_query\_id  потрібно передавати точно так, як показано в прикладі, тобто всередині  '#{}'
{% endhint %}

Якщо все налаштовано правильно, натискання кнопки призведе до Alert - сповіщення із зазначеним текстом. У мобільній версії ім’я бота відображатиметься як заголовок над текстом.

<figure><img src="/files/85a9f993c8907b9883cce6b1ee1eddd4275c4cfa" alt="" width="563"><figcaption></figcaption></figure>

Якщо ви хочете показати просте **спливаюче повідомлення** натомість, передайте **False** як третій параметр, як показано в прикладі нижче:\
tg\_answer\_callback\_query('#{callback\_query\_id}', "Ви натиснули кнопку 222", False)

<figure><img src="/files/9aafd4384988b277f11f0414d58ebb25002c20c9" alt="" width="563"><figcaption><p>Коли кнопку буде натиснуто<br>із цими параметрами, сповіщення такого типу<br>з’явиться на кілька секунд.</p></figcaption></figure>

</details>

## Додавання переходу до бота за допомогою тегу як відповіді на кнопку callback

<details>

<summary>Опис</summary>

**tg\_callback\_url\_open(callback\_query\_id, url, cache\_time)**

Параметри:

<table><thead><tr><th width="309.5234375">Параметри</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> callback_query_id</strong></td><td>Цей ID дозволяє вам визначити людину, яка натиснула кнопку, і показати їй Alert-сповіщення.</td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> url</strong> </td><td>URL, що веде до бота та параметр (формат: t.me/your_bot?start=XXXX, де your_bot — це ім’я бота)</td></tr><tr><td><strong>cache_time</strong></td><td>Максимальний час у секундах, протягом якого результат callback-запиту може кешуватися на боці клієнта. Додатки Telegram підтримуватимуть кешування, починаючи з версії 3.14. Значення за замовчуванням — 0</td></tr></tbody></table>

</details>

<details>

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

У відповіді на кнопку callback можна додати перехід до бота за допомогою тега tg\_callback\_url\_open('#{callback\_query\_id}', 't.me/bot\_name?start=XXXX')

Наприклад, використаємо такі кнопки:

\[{"line":0,"index\_in\_line":0,"text":"111","type":"inline","callback":"first"}, {"line":1,"index\_in\_line":0,"text":"222","type":"inline","callback":"second"}, {"line":2,"index\_in\_line":0,"text":"333","type":"inline","callback":"third"}]

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

Після натискання кнопки приходить callback із текстом, що міститься у відповідному полі. Коли ви натиснете кнопку “111”, ви отримаєте callback із текстом “first".

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

Створіть блок із перевіркою основної умови та вкажіть потрібний текст в умові. У нашому випадку: “first”:

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

Якщо в полі **Варіант збігу** ви оберете **Ігнорувати помилки та неточності**, цей блок надалі можна буде повторно використовувати для всіх схожих варіантів, які відрізняються на 1–2 символи. Наприклад, щоб подякувати користувачеві за надану оцінку за допомогою такої кнопки.

Далі в калькуляторі блоку вкажіть tg\_callback\_url\_open('#{callback\_query\_id}', 't.me/bot\_name?start=XXXX'):

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

</details>

## Як підвищити користувача до адміністратора в супергрупі або каналі

<details>

<summary>Опис</summary>

**tg\_promote\_user(platform\_id, user\_id, promote\_options\_list)**

Параметри:

<table><thead><tr><th width="269.9765625">Параметр</th><th width="515.17578125">Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ідентифікатор супергрупи або, якщо використовується в каналі, ім’я користувача каналу у форматі @channelusername в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> user_id</strong></td><td>ідентифікатор користувача в Telegram. <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> promote_options_list</strong></td><td>список дозволів, які потрібно ввімкнути. </td></tr></tbody></table>

</details>

<details>

<summary><mark style="color:red;">Обов’язковий параметр: <strong>promote_options_list</strong></mark></summary>

У параметрі **promote\_options\_list** :

1. **is\_anonymous** — приховує присутність адміністратора в чаті,&#x20;
2. **can\_manage\_chat** — адміністратор може отримати доступ до журналу подій чату, статистики чату, статистики повідомлень у каналах, переглядати учасників каналу, переглядати анонімних адміністраторів у супергрупах і обходити повільний режим. Це право надається за замовчуванням, якщо вказано будь-які з наступних привілеїв
3. **can\_post\_messages** — адміністратор може створювати публікації в каналі <mark style="color:red;">(лише канали)</mark>
4. **can\_edit\_messages** — адміністратор може редагувати повідомлення інших користувачів і закріплювати повідомлення <mark style="color:red;">(лише канали)</mark>&#x20;
5. **can\_delete\_messages** — адміністратор може видаляти повідомлення інших користувачів
6. **can\_manage\_video\_chats** — адміністратор може керувати відеочатами,
7. **can\_restrict\_members** — адміністратор може обмежувати учасників, банити/розбанювати їх у чаті,&#x20;
8. **can\_promote\_members** — адміністратор може призначати нових адміністраторів із частиною власних привілеїв або понижувати адміністраторів, яких він призначив безпосередньо чи опосередковано (наприклад, адміністраторів, призначених ним)
9. **can\_change\_info** — адміністратор може змінювати назву чату, фото та інші налаштування
10. **can\_invite\_users** — адміністратор може запрошувати нових користувачів до чату
11. **can\_pin\_messages** — адміністратор може закріплювати повідомлення <mark style="color:red;">(лише супергрупи).</mark>

</details>

<details>

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

Приклад: підвищення користувача до адміністратора в супергрупі:

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

У цьому прикладі, окрім зазначених дозволів, за замовчуванням буде надано дозвіл can\_manage\_chat.

<div data-with-frame="true"><figure><img src="/files/50aaaa582a88bf544b6f4cae97281beaf5588541" alt="" width="563"><figcaption><p>Призначення дозволів користувачеві</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/cfdc12caf67b2f42ca788d8aa7fd450780d44b7a" alt="" width="563"><figcaption><p>Встановлення власного заголовка адміністратора</p></figcaption></figure></div>

Приклад коду для копіювання

<pre data-full-width="false"><code><strong>Приклад 1. 
</strong><strong>promote_options_list = ‘[“can_promote_members”,”can_change_info”,”can_invite_users”]’ 
</strong>tg_promote_user(platform_id, user_id, promote_options_list)

Приклад 2. 
promote_options_list = '["can_manage_chat","can_post_messages","can_edit_messages","can_delete_messages","can_manage_video_chats","can_promote_members","can_restrict_members","can_invite_users","can_pin_messages"]' 
result=tg_promote_user(platform_id, reply_from, promote_options_list)  
</code></pre>

</details>

## Як змінити титул адміністратора за допомогою бота в Telegram

<details>

<summary>Опис</summary>

**tg\_set\_administrator\_title(platform\_id, user\_id, title)** &#x20;

Параметри:&#x20;

<table><thead><tr><th width="303.94921875">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ідентифікатор супергрупи в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> user_id</strong></td><td>ідентифікатор користувача в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a>  </td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> title</strong></td><td><p>титул адміністратора</p><p>Обмеження для титулу:</p><p>Довжина: 0–16 символів, емодзі не дозволені</p></td></tr></tbody></table>

{% hint style="warning" %}
ВАЖЛИВО!&#x20;

Це працює лише для користувачів, яких бот підвищив до адміністраторів у супергрупі
{% endhint %}

Приклад коду для копіювання:

```
result=tg_set_administrator_title(platform_id, reply_from, "firetitle")
```

</details>

## Загальні обмеження для звичайних учасників чату або конкретних користувачів Telegram

<details>

<summary>Опис</summary>

**tg\_chat\_permission(platform\_id, permission, media\_permissions)**

Параметри:

<table><thead><tr><th width="318.76171875">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ідентифікатор чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> permission</strong></td><td><p>масив значень зі списку обмежень (див. нижче).</p><p>1 = дія дозволена</p><p>0 = дія заборонена</p><p>Індекс масиву відповідає позиції у списку обмежень</p></td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> media_permissions</strong></td><td><p>масив значень, що визначає дозволи, пов’язані з медіа (детальніше нижче).</p><p>1 = дія дозволена</p><p>0 = дія заборонена</p><p>Індекс масиву відповідає позиції у списку медіадозволів</p></td></tr></tbody></table>

</details>

<details>

<summary><strong>Список обмежень для потрібного параметра </strong><mark style="color:red;"><strong>permission</strong></mark></summary>

**Список обмежень для** **permission:**\
1\. <mark style="color:red;">**!**</mark>**&#x20;can\_send\_messages** - дозвіл надсилати текстові повідомлення, контакти, місцезнаходження та місця.\
2\. <mark style="color:red;">**!**</mark>**&#x20;can\_send\_media\_messages** - дозвіл надсилати аудіо, документи, фото, відео, відеонотатки та голосові нотатки. Потрібно **can\_send\_messages**\
3\. <mark style="color:red;">**!**</mark>**&#x20;can\_send\_polls** - дозвіл надсилати опитування. Потрібно **can\_send\_messages**\
4\. <mark style="color:red;">**!**</mark>**&#x20;can\_send\_other\_messages** - дозвіл надсилати анімації, ігри, стікери та використовувати inline-ботів. Потрібно **can\_send\_media\_messages**\
5\. <mark style="color:red;">**!**</mark>**&#x20;can\_add\_web\_page\_previews** - дозвіл додавати попередній перегляд вебсторінок до повідомлень. Потрібно **can\_send\_media\_messages**\
6\. <mark style="color:red;">**!**</mark>**&#x20;can\_change\_info** - дозвіл змінювати назву чату, фото та інші налаштування. Це ігнорується в публічних супергрупах.\
7\. <mark style="color:red;">**!**</mark>**&#x20;can\_invite\_users** - дозвіл запрошувати користувачів\
8\. <mark style="color:red;">**!**</mark>**&#x20;can\_pin\_messages** - дозвіл закріплювати повідомлення. Це ігнорується в публічних супергрупах.\
9\. **can\_manage\_topics** - дозвіл створювати теми у форумних групах. Якщо використати у групі неправильного типу, функція завершиться помилкою та поверне помилку.

</details>

<details>

<summary><strong>Список значень для потрібного параметра </strong><mark style="color:red;"><strong>media_permissions</strong></mark></summary>

#### Значення для надання медіапов’язаних дозволів **media\_permissions:**&#x20;

1\. **can\_send\_audios** - дозвіл надсилати аудіофайли\
2\. **can\_send\_documents** - дозвіл надсилати документи\
3\. **can\_send\_photos** - дозвіл надсилати фото\
4\. **can\_send\_videos**  - дозвіл надсилати відео\
5\. **can\_send\_video\_notes** - дозвіл надсилати круглі відеоповідомлення\
6\. **can\_send\_voice\_notes** - дозвіл надсилати голосові повідомленняя

</details>

## Обмеження Telegram Personal для звичайних користувачів чату або для конкретних користувачів Telegram

<details>

<summary>Опис</summary>

**tg\_restrict\_chat\_member(platform\_id, user\_id, minutes, permission, media\_permissions).**

Параметри:

| Параметр                                                    | Опис                                                                                                                                                                                                                    |
| ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <mark style="color:red;">**!**</mark>**&#x20;platform\_id** | ID чату в Telegram [**\***](#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii)                                                                                                                                           |
| <mark style="color:red;">**!**</mark>**&#x20;user\_id**     | ID користувача в Telegram [**\***](#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii)                                                                                                                                    |
| **minutes**                                                 | кількість хвилин, протягом яких обмеження залишатиметься активним. Якщо ви не вкажете значення, за замовчуванням буде **3600**, що дорівнює **60 годинам**. Якщо ви встановите його на **0**, обмеження стане постійним |
| **permission**                                              | масив значень із [списку обмежень permission](#list-of-restrictions-for-the-required-parameter-permission).                                                                                                             |
| **media\_permissions**                                      | список значень для надання медіапов’язаних дозволів                                                                                                                                                                     |

</details>

<details>

<summary><strong>Список обмежень для потрібного параметра </strong><mark style="color:red;"><strong>permission</strong></mark></summary>

**Список обмежень для** **permission:**\
1\. <mark style="color:red;">**!**</mark>**&#x20;can\_send\_messages** - дозвіл надсилати текстові повідомлення, контакти, місцезнаходження та місця.\
2\. <mark style="color:red;">**!**</mark>**&#x20;can\_send\_media\_messages** - дозвіл надсилати аудіо, документи, фото, відео, відеонотатки та голосові нотатки. Потрібно **can\_send\_messages**\
3\. <mark style="color:red;">**!**</mark>**&#x20;can\_send\_polls** - дозвіл надсилати опитування. Потрібно **can\_send\_messages**\
4\. <mark style="color:red;">**!**</mark>**&#x20;can\_send\_other\_messages** - дозвіл надсилати анімації, ігри, стікери та використовувати inline-ботів. Потрібно **can\_send\_media\_messages**\
5\. <mark style="color:red;">**!**</mark>**&#x20;can\_add\_web\_page\_previews** - дозвіл додавати попередній перегляд вебсторінок до повідомлень. Потрібно **can\_send\_media\_messages**\
6\. <mark style="color:red;">**!**</mark>**&#x20;can\_change\_info** - дозвіл змінювати назву чату, фото та інші налаштування. Це ігнорується в публічних супергрупах.\
7\. <mark style="color:red;">**!**</mark>**&#x20;can\_invite\_users** - дозвіл запрошувати користувачів\
8\. <mark style="color:red;">**!**</mark>**&#x20;can\_pin\_messages** - дозвіл закріплювати повідомлення. Це ігнорується в публічних супергрупах.\
9\. **can\_manage\_topics** - дозвіл створювати теми у форумних групах. Якщо використати у групі неправильного типу, функція завершиться помилкою та поверне помилку.&#x20;

</details>

<details>

<summary>Список значень для потрібного параметра <mark style="color:red;"><strong>media_permissions</strong></mark></summary>

#### Значення для надання медіапов’язаних дозволів **media\_permissions:**&#x20;

1\. **can\_send\_audios** - дозвіл надсилати аудіофайли\
2\. **can\_send\_documents** - дозвіл надсилати документи\
3\. **can\_send\_photos** - дозвіл надсилати фото\
4\. **can\_send\_videos**  - дозвіл надсилати відео\
5\. **can\_send\_video\_notes** - дозвіл надсилати круглі відеоповідомлення\
6\. **can\_send\_voice\_notes** - дозвіл надсилати голосові повідомленняя

</details>

<details>

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

Приклад використання функції, де користувача обмежено в усьому на 3 хвилини:

<figure><img src="/files/eb19aac311c9c8fea1d37ab1dfaa787ea9c55834" alt="" width="563"><figcaption></figcaption></figure>

Коли користувач зайде в чат, він побачить сповіщення, що не може надсилати повідомлення в чаті.\
Якщо встановлено часовий ліміт, він також побачить тривалість цього обмеження.

<figure><img src="/files/846ac98b9c4de56b7557274c2f7103728ea6f76b" alt=""><figcaption></figcaption></figure>

Приклад коду для копіювання:

```
permission = [0, 0, 0, 0, 0, 0, 0, 0] 
tg_restrict_chat_member(-1001607137668, 473737685, 3, permission)
```

</details>

## Як закріпити повідомлення

<details>

<summary>Опис</summary>

**tg\_pin\_chat\_message(platform\_id, message\_id, disable\_notification)**&#x20;

Параметри:

<table><thead><tr><th width="311.3359375">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID чату в Telegram  <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><strong>message_id</strong></td><td>ID повідомлення, яке потрібно закріпити</td></tr><tr><td><strong>disable_notification</strong></td><td>Параметр визначає, чи слід надсилати сповіщення всім учасникам чату про нове закріплене повідомлення (у каналах і приватних чатах сповіщення завжди вимкнені).<br>Якщо ви не хочете надсилати сповіщення, встановіть параметр <strong>disable_notification</strong> на <strong>1</strong>.<br>Інакше встановіть його на <strong>0</strong>.</td></tr></tbody></table>

</details>

## Як відкріпити повідомлення

<details>

<summary>Опис</summary>

**tg\_unpin\_chat\_message(platform\_id, message\_id)**&#x20;

Параметри:

<table><thead><tr><th width="311.3359375">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><strong>message_id</strong></td><td>ID повідомлення, яке слід відкріпити. Якщо message_id не вказано, буде відкріплено найновіше закріплене повідомлення (за датою надсилання)</td></tr></tbody></table>

</details>

## Як відкріпити всі закріплені повідомлення

<details>

<summary>Опис</summary>

**tg\_unpin\_all(platform\_id)**

Параметри:

<table><thead><tr><th width="311.3359375">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr></tbody></table>

{% hint style="warning" %}
УВАГА!

Telegram має обмеження для функцій закріплення/відкріплення повідомлень.&#x20;

Часові ліміти для використання **tg\_pin\_chat\_message / tg\_unpin\_chat\_message / tg\_unpin\_all&#x20;**<mark style="color:red;">**НЕ встановлюються системою MaviBot.**</mark>&#x20;

**Якщо дозволений час для закріплення повідомлення минув, функція все одно поверне true, але Telegram не застосує зміну.**

Також важливо зазначити, що закріплені повідомлення можуть залишатися в кеші, тож вони можуть не зникнути візуально одразу.
{% endhint %}

</details>

## Як створити опитування в Telegram

<details>

<summary>Опис</summary>

**tg\_send\_poll(platform\_id, question, options, is\_anonymous, allows\_multiple\_answers, reply\_markup, disable\_notification, protect\_content, token, reply\_to\_message\_id,  message\_thread\_id, business\_connection\_id)**

Параметри:

<table><thead><tr><th width="311.3359375">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID чату в Telegram  <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a> </td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> question</strong> </td><td>question</td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> options</strong></td><td>масив варіантів відповіді</td></tr><tr><td><strong>is_anonymous</strong></td><td>1 - анонімне опитування , '' - не анонімне </td></tr><tr><td><strong>allows_multiple_answers</strong></td><td>1 - доступно кілька відповідей, '' - одна відповідь</td></tr><tr><td><strong>reply_markup</strong> </td><td>клавіатура або '' - без клавіатури </td></tr><tr><td><strong>disable_notification</strong></td><td>прапорець для надсилання зі звуковим сповіщенням (за замовчуванням 0)<br>1 – вимкнути сповіщення при отриманні, 0 – надіслати зі сповіщенням</td></tr><tr><td><strong>protect_content</strong></td><td>1 — щоб захистити від копіювання та знімків екрана, '' — без захисту</td></tr><tr><td><strong>token</strong></td><td>токен бота; якщо не вказано, використовується поточний</td></tr><tr><td>r<strong>eply_to_message_id</strong></td><td>ID цитованого повідомлення</td></tr><tr><td><strong>message_thread_id</strong></td><td>ID теми (доступно для супергруп, якщо функція форуму активна)</td></tr><tr><td><strong>business_connection_id</strong></td><td>значення під час підключення бота (Business ID). Відображається в каналах. Потрібно вказати, якщо використовується токен бота, а повідомлення має бути надіслане через обліковий запис користувача, підключений до бота</td></tr></tbody></table>

</details>

<details>

<summary>Важливо знати!</summary>

Примітки

1\. Функція повертає відповідь від Telegram з **message\_id**. Її краще зберегти. Використовуючи message\_id, ви можете зупинити опитування за допомогою **tg\_stop\_poll** (див. опис нижче) і отримати результат.

2\. Якщо користувач додає опитування в месенджері, до чату надсилається callback:

**poll\_added** - незмінна частина \
YOUR QUESTION - текст питання з опитування

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

Приклад колбеку при додаванні опитування в канал

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

Приклад колбеку при додаванні опитування в чат

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

Другий колбек після poll\_added містить цифри — це не що інше, як ідентифікатор користувача в Telegram, який додав опитування.

{% hint style="warning" %}
**Під час створення опитування ботом колбек не надходить.**
{% endhint %}

&#x33;**.** У каналі можна створювати лише анонімні опитування

{% hint style="info" %}
**Увага, рекомендується надсилати в групу лише анонімні опитування!**
{% endhint %}

4\. Після створення опитування збережіть його ідентифікатор у змінну, щоб розуміти, на яке опитування прийшов колбек.

</details>

<details>

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

Відгуки клієнтів є ключем до нашого зростання. Опитування пропонують простий спосіб зібрати цей зворотний зв’язок і перетворити його на конкретні бізнес-висновки.

Приклад коду для копіювання:

```
/* Приклад створення простого опитування */
options = ["white", "red", "blue", "green"]
poll1 = tg_send_poll(platform_id, 'Який ваш улюблений колір?', options, 1, '', '', 1, '')
```

**Функція для створення опитування в Telegram:**

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

**Опитування, яке ми створили в Telegram**

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

</details>

## Як створити вікторину в Telegram

<details>

<summary>Опис</summary>

**tg\_send\_quiz\_poll(platform\_id, question, options, explanation, correct\_option\_id, is\_anonymous, reply\_markup, parse\_mode, protect\_content, disable\_notification, token, reply\_to\_message\_id, message\_thread\_id )**

Параметри:&#x20;

<table><thead><tr><th width="311.25">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> question</strong> </td><td>question</td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> options</strong></td><td>масив варіантів відповіді</td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> explanation</strong></td><td>текст, який показується, коли користувач обирає неправильну відповідь або натискає на іконку лампочки у вікторинному опитуванні, 0–200 символів, не більше двох переносів рядка після парсингу сутностей.</td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> correct_option_id</strong></td><td>номер правильної відповіді, нумерація з 1</td></tr><tr><td><strong>is_anonymous</strong></td><td>1 - анонімне опитування , '' - не анонімне </td></tr><tr><td><strong>reply_markup</strong></td><td>клавіатура або '' - без клавіатури </td></tr><tr><td><strong>parse_mode</strong></td><td>формат пояснення: <code>markdown</code>, <code>html</code>, або <code>''</code> (порожній рядок, якщо форматування не потрібне)</td></tr><tr><td><strong>protect_content</strong></td><td>1 — щоб захистити від копіювання та знімків екрана, '' — без захисту</td></tr><tr><td><strong>disable_notification</strong></td><td>прапорець для надсилання зі звуковим сповіщенням (за замовчуванням 0)<br>1 – вимкнути сповіщення при отриманні, 0 – надіслати зі сповіщенням</td></tr><tr><td><strong>token</strong></td><td>токен бота; якщо не вказано, використовується поточний</td></tr><tr><td><strong>reply_to_message_id</strong></td><td>ID цитованого повідомлення</td></tr><tr><td><strong>message_thread_id</strong></td><td>ID теми (доступно в супергрупах з активними функціями форуму)</td></tr></tbody></table>

</details>

<details>

<summary><mark style="color:orange;">Важливо знати!</mark></summary>

#### **Примітки**

**1. Збережіть `message_id`**

Функція API повертає відповідь Telegram, що містить **`message_id`**. Завжди зберігайте цей ID, оскільки він потрібен для:

* Завершення вікторини за допомогою `tg_stop_poll` функції (див. опис нижче).
* Отримання фінальних результатів.

**2. Callback `poll_added`**

Якщо користувач додає опитування до **каналу**, бот отримує callback:

* **Формат:** `poll_added` + **Питання опитування**
* **Якщо додано до групового чату:** callback також містить **Telegram User ID** особи, яка додала опитування.

{% hint style="warning" %}
**Якщо створено ботом:** Ні `poll_added` callback не надсилається.
{% endhint %}

**3. Обмеження каналу**

Лише **анонімні вікторини** можна створювати в каналах.

**4. Callback `poll_answer` (Голосування користувача)**

Коли користувач голосує у вікторині, надісланій до **приватного чату** або **group**, до діалогу бота з цим клієнтом надсилається callback:

* **Формат:** `poll_answer` + **ID опитування** + **\[Індекс відповіді]**
* **Приклад:** `poll_answer 5325838371359031648 [3]`
* **Примітка:** нумерація відповідей починається з **0**. `[3]` означає, що користувач обрав четвертий варіант відповіді.

**5. Webhook для неанонімних групових опитувань**

Для **неанонімних опитувань** у групах, де бот є адміністратором, webhook надсилається для *кожного голосу*. Після отримання його бот пересилає `poll_answer` callback (як у пункті 4) до свого діалогу з відповідним клієнтом.

**6. Вимога активації та найкраща практика**

* **Вимога:** бот не може сам ініціювати розмову. Якщо клієнт ніколи не звертався до бота, ви не можете надіслати йому пряме повідомлення у відповідь на його голосування, доки він **спочатку не активує бота** (наприклад, надіславши `/start` команду).

{% hint style="info" %}
**Рекомендація:** щоб уникнути цього обмеження, **настійно рекомендується надсилати в групи лише анонімні вікторини.**
{% endhint %}

**7. Відстежуйте свої опитування**

Одразу після створення вікторини збережіть її унікальний **ID опитування** у змінну. Це дозволяє визначити, до якого саме опитування належить вхідний callback.

</details>

<details>

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

Приклад коду для копіювання.

```
options = ["white", "red", "blue", "green"] 
r = tg_send_quiz_poll(platform_id, "Якого кольору крокодил?", options, "Це пояснення", 4, '', '', '', '', 1)
```

Приклад: створення вікторини.

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

</details>

## Як завершити опитування

<details>

<summary>Опис</summary>

**tg\_stop\_poll(platform\_id, message\_id)**

Параметри:

<table><thead><tr><th width="303.45703125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> message_id</strong></td><td>ID повідомлення опитування/вікторини. Його можна отримати з webhook</td></tr></tbody></table>

{% hint style="info" %}
Виклик цієї функції для завершення опитування/вікторини повертає словник, що містить фінальні результати.
{% endhint %}

</details>

## Як працювати з темами в Telegram

{% hint style="warning" %}
Важливо: головна тема групи не має ID і для роботи з нею потрібні окремі функції.
{% endhint %}

### Як перейменувати загальну тему групи

<details>

<summary>Опис</summary>

**tg\_edit\_general\_forum\_topic(platform\_id, topic\_name)**

Параметри:

<table><thead><tr><th width="303.1171875">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> topic_name</strong></td><td>нова назва теми</td></tr><tr><td>bot_name</td><td><p>необов’язковий параметр: ім’я бота.</p><p>Під час роботи з темами ви можете вказати, який бот має виконувати функцію. Це корисно, якщо ваш проєкт використовує кілька ботів Telegram. Ім’я бота можна знайти в розділі "Channels", у полі "Group ID".</p></td></tr></tbody></table>

</details>

<details>

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

Загальну тему групи можна змінити за допомогою `tg_edit_general_forum_topic()` функції. Вона потребує двох обов’язкових параметрів: ID чату та нової назви теми групи:

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

</details>

<details>

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

*перейменувати чат загальної теми*/\
`answer = tg_edit_general_forum_topic(-1001839380031, 'General')`

</details>

### Як закрити загальну тему

<details>

<summary>Опис</summary>

**tg\_close\_general\_forum\_topic(platform\_id)**

Параметри:

<table><thead><tr><th width="315.3203125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td>bot_name</td><td><p>необов’язковий параметр: ім’я бота.</p><p>Під час роботи з темами ви можете вказати, який бот має виконувати функцію. Це корисно, якщо ваш проєкт використовує кілька ботів Telegram. Ім’я бота можна знайти в розділі "Channels", у полі "Group ID".</p></td></tr></tbody></table>

</details>

<details>

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

/*закрити чат загальної теми*/\
`answer = tg_close_general_forum_topic(-1001839380031)`

</details>

### Як знову відкрити раніше закриту загальну тему

<details>

<summary>Опис</summary>

**tg\_reopen\_general\_forum\_topic(platform\_id)**&#x20;

Параметри:

<table><thead><tr><th width="315.3203125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td>bot_name</td><td><p>необов’язковий параметр: ім’я бота.</p><p>Під час роботи з темами ви можете вказати, який бот має виконувати функцію. Це корисно, якщо ваш проєкт використовує кілька ботів Telegram. Ім’я бота можна знайти в розділі "Channels", у полі "Group ID".</p></td></tr></tbody></table>

</details>

<details>

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

/*знову відкрити чат загальної теми*/\
`answer = tg_reopen_general_forum_topic(-1001839380031)`

</details>

### Як приховати загальну тему

<details>

<summary>Опис</summary>

**tg\_hide\_general\_forum\_topic(platform\_id)**&#x20;

Параметри:

<table><thead><tr><th width="315.3203125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td>bot_name</td><td><p>необов’язковий параметр: ім’я бота.</p><p>Під час роботи з темами ви можете вказати, який бот має виконувати функцію. Це корисно, якщо ваш проєкт використовує кілька ботів Telegram. Ім’я бота можна знайти в розділі "Channels", у полі "Group ID".</p></td></tr></tbody></table>

Чат загальної теми можна закрити для учасників теми (вони зможуть читати, але не писати) і приховати з загального списку чатів Telegram для нових користувачів.

</details>

<details>

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

/приховати чат загальної теми/\
`answer = tg_hide_general_forum_topic(-1001839380031)`

</details>

### **Як показати загальну тему або відновити її видимість**

<details>

<summary>Опис</summary>

**tg\_unhide\_general\_forum\_topic(platform\_id)**&#x20;

Параметри:

<table><thead><tr><th width="315.3203125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong> </td><td>ID теми всередині Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td>bot_name</td><td><p>необов’язковий параметр: ім’я бота.</p><p>Під час роботи з темами ви можете вказати, який бот має виконувати функцію. Це корисно, якщо ваш проєкт використовує кілька ботів Telegram. Ім’я бота можна знайти в розділі "Channels", у полі "Group ID".</p></td></tr></tbody></table>

{% hint style="warning" %} <mark style="color:red;">**Важливо!**</mark>&#x20;

Ця функція не відкриває загальну тему; вона лише робить її видимою.
{% endhint %}

</details>

<details>

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

/*показати чат загальної теми*/\
`answer = tg_unhide_general_forum_topic(-1001839380031)`

</details>

### Як створити нову тему в Telegram

<details>

<summary>Опис</summary>

**tg\_create\_forum\_topic(platform\_id, name, icon, icon\_color)**&#x20;

Параметри:

<table><thead><tr><th width="312.953125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> name</strong></td><td>нова назва теми</td></tr><tr><td><strong>icon</strong></td><td>ID емодзі, який буде встановлено для теми. Передається як рядок. Ви можете використовувати лише емодзі зі списку, отриманого за допомогою <code>tg_get_forum_icon</code> функцію.</td></tr><tr><td><strong>icon_color</strong></td><td>колір емодзі зі списку: 7322096, 16766590, 13338331, 9367192, 16749490, 16478047. Не всі емодзі підтримують зміну кольору.</td></tr><tr><td>bot_name </td><td><p>необов’язковий параметр: ім’я бота.</p><p>Під час роботи з темами ви можете вказати, який бот має виконувати функцію. Це корисно, якщо ваш проєкт використовує кілька ботів Telegram. Ім’я бота можна знайти в розділі "Channels", у полі "Group ID".</p></td></tr></tbody></table>

{% hint style="info" %}
Встановлений колір не можна змінити; колір можна призначити лише під час створення теми.
{% endhint %}

Після виконання функція поверне відповідь із параметрами нової теми, включно з ID теми (потрібним для різних функцій).

</details>

<details>

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

Щоб створити додатковий чат теми\
`answer = tg_create_forum_topic(-1001839380031, 'second_bot_topic', None, 7322096)`

Щоб зберегти ID створеного додаткового чату теми\
`answer={"ok":true,"result":{"message_thread_id":254,"name":"second_bot_topic","icon_color":7322096}}/`\
`idtema1=answer['result']['message_thread_id']`

</details>

### Як редагувати тему. Як перейменувати та/або змінити емодзі для теми

<details>

<summary>Опис</summary>

**tg\_edit\_forum\_topic(platform\_id, message\_thread\_id, name, icon)**&#x20;

Параметри:

<table><thead><tr><th width="301.7578125">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> message_thread_id</strong></td><td>ID додаткового чату теми</td></tr><tr><td><strong>name</strong></td><td>нова назва теми</td></tr><tr><td><strong>icon</strong></td><td>ID емодзі, який буде встановлено для теми. Передається як рядок. Ви можете використовувати лише емодзі зі списку, отриманого за допомогою <code>tg_get_forum_icon</code> функцію.</td></tr><tr><td>bot_name</td><td><p>необов’язковий параметр: ім’я бота.</p><p>Під час роботи з темами ви можете вказати, який бот має виконувати функцію. Це корисно, якщо ваш проєкт використовує кілька ботів Telegram. Ім’я бота можна знайти в розділі "Channels", у полі "Group ID".</p></td></tr></tbody></table>

</details>

<details>

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

`answer = tg_edit_forum_topic(-1001839380031, 254)`

</details>

### Як закрити вибрану тему

<details>

<summary>Опис</summary>

Закриття теми означає переведення її в режим лише для читання; писати в закритій темі не можна.

**tg\_close\_forum\_topic(platform\_id, message\_thread\_id)**&#x20;

Параметри:

<table><thead><tr><th width="300.9765625">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> message_thread_id</strong></td><td>ID додаткового чату теми</td></tr><tr><td>bot_name</td><td><p>необов’язковий параметр: ім’я бота.</p><p>Під час роботи з темами ви можете вказати, який бот має виконувати функцію. Це корисно, якщо ваш проєкт використовує кілька ботів Telegram. Ім’я бота можна знайти в розділі "Channels", у полі "Group ID".</p></td></tr></tbody></table>

</details>

<details>

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

`answer = tg_close_forum_topic(-1001839380031, 254)`

</details>

### Як знову відкрити раніше закриту тему

<details>

<summary>Опис</summary>

**tg\_reopen\_forum\_topic(platform\_id, message\_thread\_id)**&#x20;

Параметри:

<table><thead><tr><th width="300.9765625">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> message_thread_id</strong></td><td>ID додаткового чату теми</td></tr><tr><td>bot_name</td><td><p>необов’язковий параметр: ім’я бота.</p><p>Під час роботи з темами ви можете вказати, який бот має виконувати функцію. Це корисно, якщо ваш проєкт використовує кілька ботів Telegram. Ім’я бота можна знайти в розділі "Channels", у полі "Group ID".</p></td></tr></tbody></table>

</details>

<details>

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

`answer = tg_reopen_forum_topic(-1001839380031, 254)`

</details>

### Як видалити тему та всі її повідомлення

<details>

<summary>Опис</summary>

**tg\_delete\_forum\_topic(platform\_id, message\_thread\_id)**&#x20;

Параметри:

<table><thead><tr><th width="300.9765625">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> message_thread_id</strong></td><td>ID додаткового чату теми</td></tr><tr><td>bot_name</td><td><p>необов’язковий параметр: ім’я бота.</p><p>Під час роботи з темами ви можете вказати, який бот має виконувати функцію. Це корисно, якщо ваш проєкт використовує кілька ботів Telegram. Ім’я бота можна знайти в розділі "Channels", у полі "Group ID".</p></td></tr></tbody></table>

</details>

<details>

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

`answer = tg_delete_forum_topic(-1001839380031, 254)`

</details>

### Як скасувати закріплення всіх повідомлень у темі

<details>

<summary>Опис</summary>

**tg\_unpin\_topic\_messages(platform\_id, message\_thread\_id)**&#x20;

Параметри:

<table><thead><tr><th width="300.9765625">Параметр</th><th>Опис</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID чату в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> message_thread_id</strong></td><td>ID додаткового чату теми</td></tr><tr><td>bot_name</td><td><p>необов’язковий параметр: ім’я бота.</p><p>Під час роботи з темами ви можете вказати, який бот має виконувати функцію. Це корисно, якщо ваш проєкт використовує кілька ботів Telegram. Ім’я бота можна знайти в розділі "Channels", у полі "Group ID".</p></td></tr></tbody></table>

</details>

<details>

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

`answer = tg_unpin_topic_messages(-1001839380031, 254)`

</details>

### Як отримати список емодзі для теми Telegram

<details>

<summary>Опис</summary>

<mark style="color:за замовчуванням;background-color:blue;">**Як отримати список емодзі**</mark>

`tg_get_forum_icon()` – ця функція повертає список емодзі, доступних для використання як іконки форумних тем. Результат потрібно присвоїти змінній, оскільки вона повертає словник, де кожен ключ — це емодзі, а відповідне значення — унікальний ідентифікатор емодзі (`id`).

Параметри: <mark style="color:green;">**немає.**</mark>&#x20;

</details>

<details>

<summary>Вміст списку емодзі</summary>

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

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

Функція поверне список емодзі у своїй відповіді. Це означає, що змінна `answer` міститиме словник як своє значення.

{'📰': '5434144690511290129', '💡': '5312536423851630001', '⚡️': '5312016608254762256', '🎙': '5377544228505134960', '🔝': '5418085807791545980', '🗣': '5368697802761185083', '🆒': '5420216386448270341', '❗️': '5379748062124056162', '📝': '5357193964787081133', '📆': '5433614043006903194', '📁': '5357315181649076022', '🔎': '5309965701241379366', '📣': '5309984423003823246', '🔥': '5312241539987020022', '❤️': '5312138559556164615', '❓': '5377316857231450742', '📈': '5350305691942788490', '📉': '5350713563512052787', '💎': '5309958691854754293', '💰': '5350452584119279096', '💸': '5309929258443874898', '\U0001fa99': '5377690785674175481', '💱': '5310107765874632305', '⁉️': '5377438129928020693', '🎮': '5309950797704865693', '💻': '5350554349074391003', '📱': '5409357944619802453', '🚗': '5312322066328853156', '🏠': '5312486108309757006', '💘': '5310029292527164639', '🎉': '5310228579009699834', '‼️': '5377498341074542641', '🏆': '5312315739842026755', '🏁': '5408906741125490282', '🎬': '5368653135101310687', '🎵': '5310045076531978942', '🔞': '5420331611830886484', '📚': '5350481781306958339', '👑': '5357107601584693888', '⚽️': '5375159220280762629', '🏀': '5384327463629233871', '📺': '5350513667144163474', '👀': '5357121491508928442', '\U0001fae6': '5357185426392096577', '🍓': '5310157398516703416', '💄': '5310262535021142850', '👠': '5368741306484925109', '✈️': '5348436127038579546', '\U0001f9f3': '5357120306097956843', '🏖': '5310303848311562896', '⛅️': '5350424168615649565', '🦄': '5413625003218313783', '🛍': '5350699789551935589', '👜': '5377478880577724584', '🛒': '5431492767249342908', '🚂': '5350497316203668441', '🛥': '5350422527938141909', '🏔': '5418196338774907917', '🏕': '5350648297189023928', '🤖': '5309832892262654231', '\U0001faa9': '5350751634102166060', '🎟': '5377624166436445368', '🏴\u200d☠️': '5386395194029515402', '🗳': '5350387571199319521', '🎓': '5357419403325481346', '🔭': '5368585403467048206', '🔬': '5377580546748588396', '🎶': '5377317729109811382', '🎤': '5382003830487523366', '🕺': '5357298525765902091', '💃': '5357370526597653193', '\U0001fa96': '5357188789351490453', '💼': '5348227245599105972', '\U0001f9ea': '5411138633765757782', '👨\u200d👩\u200d👧\u200d👦': '5386435923204382258', '👶': '5377675010259297233', '🤰': '5386609083400856174', '💅': '5368808634392257474', '🏛': '5350548830041415279', '\U0001f9ee': '5355127101970194557', '🖨': '5386379624773066504', '👮\u200d♂️': '5377494501373780436', '\U0001fa7a': '5350307998340226571', '💊': '5310094636159607472', '💉': '5310139157790596888', '\U0001f9fc': '5377468357907849200', '\U0001faaa': '5418115271267197333', '🛃': '5370947704199323325', '🍽': '5350344462612570293', '🐟': '5384574037701696503', '🎨': '5310039132297242441', '🎭': '5350658016700013471', '🎩': '5357504778685392027', '🔮': '5350367161514732241', '🍹': '5350520238444126134', '🎂': '5310132165583840589', '☕️': '5350392020785437399', '🍣': '5350406176997646350', '🍔': '5350403544182694064', '🍕': '5350444672789519765', '\U0001f9a0': '5312424913615723286', '💬': '5417915203100613993', '🎄': '5312054580060625569', '🎃': '5309744892677727325'}

</details>

<details>

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

```
answer = tg_get_forum_icon()
```

</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/mesendzheri/telegram/api/chat.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.
