# Настройки чата и мессенджера Telegram

**Работа с platform IDs в 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:красный;"><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:красный;"><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:красный;"><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:красный;"><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:красный;"><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:красный;"><strong>!</strong></mark><strong>  photo</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:красный;"><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:красный;"><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:красный;"><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:красный;"><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:красный;"><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:красный;"><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/7d1ddd7fd619d8d4fc5ed8f1bcf4a0878aec0ee6" 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:красный;"><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:красный;"><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:красный;"><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:красный;"><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:красный;"><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:красный;"><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/c48162ec98ab733b6ff4713c345e58f02aaa9bd9" 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:красный;"><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:красный;"><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/4c745cad85791e07922c91cfd024feee15875f90" 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:красный;"><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:красный;"><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:красный;"><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:красный;"><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:красный;"><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:красный;"><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:красный;"><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:красный;"><strong>!</strong></mark><strong> list_id</strong></td><td>номер списка</td></tr><tr><td><mark style="color:красный;"><strong>!</strong></mark><strong> recepient</strong></td><td> ID пользователя в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a>. Для chat-клиентов это значение находится в переменной 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:красный;"><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:красный;"><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:оранжевый;">Список доступных действий <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:красный;"><strong>!</strong></mark><strong> callback_query_id</strong> <strong>(обязательно)</strong></td><td>Этот ID позволяет определить человека, нажавшего кнопку, и показать ему Alert-уведомление.</td></tr><tr><td><mark style="color:красный;"><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/c78611de52b4e09a34fa811cde0cd98684765660" alt="" width="563"><figcaption></figcaption></figure>

После нажатия на кнопку приходит callback с текстом, содержащимся в соответствующем поле. При нажатии на кнопку «111» вы получите callback с текстом «first».

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

Создадим блок Start и укажем нужный текст в триггере. В нашем случае: **"first**

<figure><img src="/files/588573c152ebb51fa4febf4847c9dbbdfbd1d4f1" alt=""><figcaption></figcaption></figure>

Если в поле **Matches** вы выберете **Игнорировать ошибки и неточности**, этот блок в дальнейшем можно будет использовать повторно для всех похожих вариантов, отличающихся на 1–2 символа. Например, чтобы поблагодарить пользователя за предоставление оценки с такой кнопкой.

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

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

Пример кода для копирования:

`tg_answer_callback_query('#{callback_query_id}', "You pressed the button 111")`&#x20;

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

Если всё настроено правильно, нажатие кнопки вызовет Alert-уведомление с указанным текстом. В мобильной версии в заголовке над текстом будет отображаться имя бота.

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

Если вы хотите показать простое **всплывающее сообщение** вместо этого, передайте **False** в качестве третьего параметра, как показано в примере ниже:\
tg\_answer\_callback\_query('#{callback\_query\_id}', "You passed the button 222", False)

<figure><img src="/files/e08424ba95eb220590987ce0648c917e4ba80d7c" 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:красный;"><strong>!</strong></mark><strong> callback_query_id</strong></td><td>Этот ID позволяет определить человека, нажавшего кнопку, и показать ему Alert-уведомление.</td></tr><tr><td><mark style="color:красный;"><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/b638276a62abe5b758b48d2bb79208bace2df132" alt=""><figcaption></figcaption></figure></div>

После нажатия на кнопку приходит callback с текстом, содержащимся в соответствующем поле. При нажатии на кнопку «111» вы получите callback с текстом «first».

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

Создайте блок с проверкой основного условия и укажите нужный текст в условии. В нашем случае: «first»:

<div data-with-frame="true"><figure><img src="/files/51e58205fb406c4996f45ad1da916b57a0f568ea" 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/b80a15b83619d3feebfebfd1fde13bb48167da20" 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:красный;"><strong>!</strong></mark><strong> platform_id</strong></td><td>идентификатор супергруппы или, если используется в канале, username канала в формате @channelusername в Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><mark style="color:красный;"><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:красный;"><strong>!</strong></mark><strong> promote_options_list</strong></td><td>список разрешений, которые нужно включить. </td></tr></tbody></table>

</details>

<details>

<summary><mark style="color:красный;">Обязательный параметр: <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:красный;">(только каналы)</mark>
4. **can\_edit\_messages** — администратор может редактировать сообщения других пользователей и закреплять сообщения <mark style="color:красный;">(только каналы)</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:красный;">(только супергруппы).</mark>

</details>

<details>

<summary>Пример</summary>

Пример: назначение пользователя администратором в супергруппе:

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

В этом примере, помимо указанных разрешений, разрешение can\_manage\_chat будет выдано по умолчанию.

<div data-with-frame="true"><figure><img src="/files/1a878c6617b15af71647d4fd0e088ae23ada4d5e" alt="" width="563"><figcaption><p>Назначение прав пользователю</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/192311f0fd1ad86dda152bbf3cfc4eaab4599d1b" 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:красный;"><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:красный;"><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:красный;"><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:красный;"><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:красный;"><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:красный;"><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:красный;"><strong>permission</strong></mark></summary>

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

</details>

<details>

<summary><strong>Список значений для обязательного параметра </strong><mark style="color:красный;"><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 для обычных пользователей чата или для конкретных пользователей Telegram

<details>

<summary>Описание</summary>

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

Параметры:

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

</details>

<details>

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

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

</details>

<details>

<summary>Список значений для обязательного параметра <mark style="color:красный;"><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/4ba583de65c521fb959e345f1ffce9da3b54c036" alt="" width="563"><figcaption></figcaption></figure>

Когда пользователь входит в чат, он увидит уведомление о том, что не может отправлять сообщения в чате.\
Если задан лимит времени, он также увидит длительность этого ограничения.

<figure><img src="/files/f3035c7020fe0a4915287711a20d4f23cb2ea7e1" 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:красный;"><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:красный;"><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:красный;"><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:красный;">**НЕ устанавливаются системой 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:красный;"><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:красный;"><strong>!</strong></mark><strong> question</strong> </td><td>question</td></tr><tr><td><mark style="color:красный;"><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>keyboard или '' - без клавиатуры </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/43b0169e321d52e40cd53217c4fa47cca3ae649b" alt="" width="375"><figcaption></figcaption></figure></div>

Пример колбека при добавлении опроса в канал

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

Пример колбека при добавлении опроса в чат

<div data-with-frame="true"><figure><img src="/files/f2822c6e905211ce7a1cec0f8131619c29101cc1" 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, 'What is your favorite color?', options, 1, '', '', 1, '')
```

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

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

**Созданный нами опрос в Telegram**

<div data-with-frame="true"><figure><img src="/files/b32a72bce681f45134500057ed24ea8f5eb6b339" 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:красный;"><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:красный;"><strong>!</strong></mark><strong> question</strong> </td><td>question</td></tr><tr><td><mark style="color:красный;"><strong>!</strong></mark><strong> options</strong></td><td>массив вариантов ответов</td></tr><tr><td><mark style="color:красный;"><strong>!</strong></mark><strong> explanation</strong></td><td>текст, отображаемый, когда пользователь выбирает неправильный ответ или нажимает на значок лампочки в викторине, 0–200 символов и не более двух разрывов строк после разбора сущностей.</td></tr><tr><td><mark style="color:красный;"><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>keyboard или '' - без клавиатуры </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:оранжевый;">Важно знать!</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, "What color is a crocodile?", options, "That is the explanation", 4, '', '', '', '', 1)
```

Пример: создание викторины.

<div data-with-frame="true"><figure><img src="/files/edaead5399bdeeac0249499bb5f0294c4beecaf7" 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:красный;"><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:красный;"><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:красный;"><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:красный;"><strong>!</strong></mark><strong> topic_name</strong></td><td>новое имя темы</td></tr><tr><td>bot_name</td><td><p>необязательный параметр: имя бота.</p><p>При работе с темами вы можете указать, какой бот должен выполнять функцию. Это полезно, если ваш проект использует несколько Telegram-ботов. Имя бота можно найти в разделе «Каналы», в поле «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/b8907286c464ab5934004103e222e3cfdcad20ca" 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:красный;"><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-ботов. Имя бота можно найти в разделе «Каналы», в поле «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:красный;"><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-ботов. Имя бота можно найти в разделе «Каналы», в поле «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:красный;"><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-ботов. Имя бота можно найти в разделе «Каналы», в поле «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:красный;"><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-ботов. Имя бота можно найти в разделе «Каналы», в поле «Group ID».</p></td></tr></tbody></table>

{% hint style="warning" %} <mark style="color:красный;">**Важно!**</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:красный;"><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:красный;"><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-ботов. Имя бота можно найти в разделе «Каналы», в поле «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:красный;"><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:красный;"><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-ботов. Имя бота можно найти в разделе «Каналы», в поле «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:красный;"><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:красный;"><strong>!</strong></mark><strong> message_thread_id</strong></td><td>ID дополнительного чат-темы</td></tr><tr><td>bot_name</td><td><p>необязательный параметр: имя бота.</p><p>При работе с темами вы можете указать, какой бот должен выполнять функцию. Это полезно, если ваш проект использует несколько Telegram-ботов. Имя бота можно найти в разделе «Каналы», в поле «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:красный;"><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:красный;"><strong>!</strong></mark><strong> message_thread_id</strong></td><td>ID дополнительного чат-темы</td></tr><tr><td>bot_name</td><td><p>необязательный параметр: имя бота.</p><p>При работе с темами вы можете указать, какой бот должен выполнять функцию. Это полезно, если ваш проект использует несколько Telegram-ботов. Имя бота можно найти в разделе «Каналы», в поле «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:красный;"><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:красный;"><strong>!</strong></mark><strong> message_thread_id</strong></td><td>ID дополнительного чат-темы</td></tr><tr><td>bot_name</td><td><p>необязательный параметр: имя бота.</p><p>При работе с темами вы можете указать, какой бот должен выполнять функцию. Это полезно, если ваш проект использует несколько Telegram-ботов. Имя бота можно найти в разделе «Каналы», в поле «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:красный;"><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:красный;"><strong>!</strong></mark><strong> message_thread_id</strong></td><td>ID дополнительного чат-темы</td></tr><tr><td>bot_name</td><td><p>необязательный параметр: имя бота.</p><p>При работе с темами вы можете указать, какой бот должен выполнять функцию. Это полезно, если ваш проект использует несколько Telegram-ботов. Имя бота можно найти в разделе «Каналы», в поле «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:зелёный;">**нет.**</mark>&#x20;

</details>

<details>

<summary>Содержимое списка эмодзи</summary>

Чтобы получить список эмодзи для чата темы, отправьте команду в соответствующий чат.

<div data-with-frame="true"><figure><img src="/files/8e765510f2f165a5e161bedfe7ba9980b76bbda5" 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/ru/chatbot/messendzhery/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.
