# Как сделать бота для Telegram

{% hint style="warning" %}

#### **Требования и ограничения Telegram**

**1. Ограничения на сообщение**

* **Сообщение только с текстом:** Максимум **4 096 символов**.
* **Сообщение с изображением:** Максимум **1 024 символа** (для изображения 1080×1080 px).

**2. Требования к изображениям**

* **Формат:** Предпочтительны квадратные изображения.
* **Оптимальный размер:** 900×900 пикселей, максимум **5 МБ**.

**3. Требования к файлам**

API Telegram имеет особые требования к загружаемым файлам:

* Боты могут отправлять файлы размером до **2 ГБ**.
* Вы можете использовать **file\_id** для работы с ранее загруженными файлами. В этом случае ограничения на файлы соответствуют документации Telegram.
* Файлы можно отправлять с помощью **URL** (бот скачивает и отправляет его):
  * **Фотографии:** ≤ 5 МБ
  * **Другие файлы:** ≤ 20 МБ
* Для публикации действуют другие ограничения:
  * **Фотографии:** 10 МБ
  * **Другие файлы:** 2 ГБ

[Подробнее читайте в первоисточнике](https://core.telegram.org/bots/api#sending-files)
{% endhint %}

## Создание бота Telegram

Бот Telegram создаётся через **BotFather**, официальную систему управления ботами Telegram. Этот проверенный инструмент (обозначается синей галочкой) позволяет создать бота без каких-либо знаний программирования и защищает вас от мошеннических подражателей.

**Шаги создания:**

1. **Начните чат** на [BotFather](https://t.me/botfather).
2. Отправьте команду: `/newbot`
3. **Выберите имя** для вашего бота (это отображаемое имя для пользователей).
4. **Выберите имя пользователя** для вашего бота. Оно **должно** заканчиваться на `bot` или `_bot` (например, `my_test_bot`).

Если имя пользователя доступно, BotFather отправит вам подтверждающее сообщение, содержащее **«token»**— уникальный ключ для доступа к API.

> **Важно:** Этот токен — пароль для вашего бота. Храните его в надёжном месте и **никогда не передавайте его** никому.

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

Перейдите в **Мессенджеры** выберите **Telegram**, и вставьте токен вашего бота в предоставленное поле.

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

Нажмите кнопку **Готово** кнопку, чтобы завершить настройку бота и активировать подключение к вашему проекту.

### Работа с группами/каналами Telegram

**Полезная информация**

Группа Telegram — это канал общения между участниками: все участники могут писать в неё.

Канал Telegram — это одностороннее средство коммуникации. Только владелец или администраторы могут отправлять сообщения, а остальные участники могут только просматривать их и оставлять комментарии.

#### Как добавить бота в группу/канал Telegram

Эта функция для бота включается в BotFather:

Шаг 1. Перейдите в настройки бота:

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

Шаг 2. Нажмите на **«Allow Groups?»**

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

Шаг 3. Должен быть включён статус.

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

### Добавление бота в качестве администратора в группу/канал

Чтобы автоматизировать работу в чатах и каналах, нужно добавить своего бота в качестве администратора.

Как это сделать?

Шаг 1. Перейдите в управление группой/каналом и выберите **Администраторы** вкладку

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

Шаг 2. Нажмите **«Add Admin»** .

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

Шаг 3. Введите имя пользователя вашего бота в поле поиска.

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

Шаг 4. Для полной функциональности убедитесь, что у бота есть права на чтение и удаление сообщений.

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

### Переменные для работы в чатах

{% hint style="warning" %}
Обратите внимание!

Сохранение переменных в групповых чатах для событий, таких как вход в чат, выход из чата, новая реакция и т. д., недоступно.

Переменные будут доступны только внутри блока, который сработал. Вы можете выводить эти переменные в блоке для отслеживания работы.

Это НИКАК не повлияет на работу чат-ботов, будет невозможно отследить, кто вошёл/вышел, в разделе клиентов.
{% endhint %}

* Переменные с информацией об авторе сообщения

message\_from — ID автора сообщения&#x20;

message\_from\_name — имя автора сообщения

message\_from\_username — никнейм автора сообщения в Telegram

<div data-with-frame="true"><figure><img src="/files/2b9050fbd53b8051482f8a377789d50ea1a7494f" alt="" width="310"><figcaption></figcaption></figure></div>

* Переменные с информацией о пересланном сообщении

reply\_message\_id — номер пересылаемого сообщения&#x20;

reply\_from — кто является автором пересланного сообщения

reply\_from\_name — имя человека, чьё сообщение пересылается

reply\_from\_username — никнейм человека, чьё сообщение пересылается

reply\_from\_chat\_id — номер диалога, из которого было переслано сообщение

* Добавление и удаление из группы

В этом случае срабатывают колбэки new\_chat\_member и left\_chat\_member (переменные не сохраняются в карточке клиента):

chat\_member\_name — имя пользователя&#x20;

chat\_member\_username — никнейм пользователя

chat\_member\_id — номер пользователя

### Колбэки в Telegram

client\_unsubscribed — клиент отписался, заблокировал бота

client\_returned — клиент снял блокировку с бота

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

#### Колбэки в группах/каналах

new\_chat\_member — добавлен новый пользователь

left\_chat\_member — пользователь покинул канал&#x20;

kicked\_chat\_member — пользователь был удалён администратором

chat\_join\_request — получен запрос на добавление в канал

edited\_channel\_post — пост в канале был отредактирован (edited\_channel\_post + дата и время редактирования)

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

<div data-with-frame="true"><figure><img src="/files/502437547e868c320f682873eed7525624630dca" alt="" width="333"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/5b292576a8210b54235ad730cb19263331342917" alt="" width="322"><figcaption></figcaption></figure></div>

Колбэки отображаются в **Клиенты** разделе

bot\_added\_to\_group — бот был добавлен в чат (неважно, в какой именно, он будет отвечать любому, даже если подключённый бот был добавлен в саму группу);

bot\_left\_group — аналогичный колбэк возникает при удалении бота из канала;

new\_like — поставил лайк посту

like\_deleted — удалил лайк с поста

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

<div data-with-frame="true"><figure><img src="/files/46127fc07fd9083495b7c837a3f136ccc84c0824" alt="" width="326"><figcaption></figcaption></figure></div>

Номер в колбэке (new\_like; like\_deleted) — это ID сообщения, на которое был поставлен ответ или с которого был снят лайк.

{% hint style="warning" %}
Обратите внимание!

* Колбэки на реакции не отображаются в каналах Telegram! Колбэки на реакции приходят только в группах.
* Если один человек поставил несколько лайков, а затем удалил 1 из них, не показывается, какой именно был удалён.
  {% endhint %}

Когда в группах появляются колбэки с реакциями, в блоке доступны переменные:

reaction\_on\_message\_id — содержит ID сообщения, на которое была реакция

reaction\_from — id того, от кого была реакция

message\_from\_username — username того, от кого была реакция (если есть)

reaction\_from\_name — имя того, от кого была реакция

<div data-with-frame="true"><figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfQptKK4YrlEATINQANRDaNEnpT95W_lgIGjMfOitIn387SG1GKI_n02rgWMZUrCP6hEGEnYAPiY99aZud2Ze4iOCYSlDCpzNsyHAMFdHd_mCxP5VfBpSx2iG7HzP1lgzDDly1Ziw?key=lL8rEUrFbZeHFjWugKFnxg" alt="" width="375"><figcaption></figcaption></figure></div>

Также, если Telegram отвечает на сообщение, переменная reply\_text в карточке будет содержать полный текст сообщения, на которое ответили.

<div data-with-frame="true"><figure><img src="/files/49493adf05269b769b48b32324e9eecb167d0876" alt="" width="337"><figcaption></figcaption></figure></div>

Если сообщение было отправлено как ответ (с цитированием предыдущего сообщения), система также сгенерирует `tg_quote` переменную, которая содержит цитируемый текст.

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

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

#### Колбэки с бустом

* chat\_boost from user #{id\_user} — дал буст чату (или каналу):

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

Когда срабатывает этот колбэк, генерируются переменные:

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

* remove\_boost\_from user #{id\_user} — буст был снят с чата (или канала):

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

Когда срабатывает этот колбэк,, генерируются переменные:

<div data-with-frame="true"><figure><img src="/files/55c909e51b507a6ac3f9f2ff087958679fc2bd18" alt="" width="344"><figcaption></figcaption></figure></div>

* chat\_boost from giveaway — выдан при розыгрыше звёзд в канале
* remove\_chat\_boost from giveaway — период буста для розыгрыша звёзд в канале завершён

#### Как автоматизировать удаление системных уведомлений в группах

Чтобы автоматически удалять все системные сообщения, достаточно присвоить любое значение переменной del\_tg\_system\_messages (переменная может быть как константой проекта, так и переменной транзакции) и дать боту разрешение на удаление сообщений.

Переменная del\_tg\_system\_messages может использоваться только в группах. В каналах присвоение любого значения этой переменной не приведёт ни к какому результату.

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

<div data-with-frame="true"><figure><img src="/files/3925aa776c7387f2c89edb93813c6be8380e4e05" alt="" width="349"><figcaption></figcaption></figure></div>

**Права администратора в настройках группы Telegram**

Удаляются следующие типы системных уведомлений:

\- Изменено название группы

\- Изменена фотография группы

\- Фотография группы удалена

\- Сообщение закреплено

\- Пользователь присоединился к группе

\- Пользователь покинул группу

Если вы хотите удалять только выбранные типы системных уведомлений, тогда вместо переменной del\_tg\_system\_messages создайте переменную del\_tg\_chosen\_messages и поместите в неё массив с типами уведомлений для удаления, разделёнными запятыми.

{% hint style="warning" %}
Обратите внимание!

Эти переменные будут работать только для групп Telegram, но не для каналов.
{% endhint %}

Варианты системных уведомлений:

* 'new\_chat\_member' — пользователь присоединился к группе,
* 'left\_chat\_member' — пользователь покинул группу,
* 'pinned\_message' — сообщение закреплено,
* 'delete\_chat\_photo' — фотография группы удалена,
* 'new\_chat\_photo' — фотография группы была изменена,
* 'new\_chat\_title' — название группы было изменено

Например, вам нужно удалить все виды системных сообщений, кроме присоединения к группе; тогда нужно добавить все виды колбэков в переменную проекта (константу), кроме "new\_chat\_member".

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

{% hint style="info" %}
Обратите внимание!

Удаление системных уведомлений не повлияет на колбэки. Будет удалено только системное сообщение из диалога Telegram.
{% endhint %}

### Форум в Telegram

Форум — это группа, в которой можно создавать отдельные темы для обсуждения. В форуме можно использовать стандартные функции: прикреплять медиафайлы, проводить опросы и настраивать уведомления. Также можно закреплять сообщения и добавлять отдельных ботов в каждый чат.

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

Основная цель форума — **структурировать общение** внутри большого сообщества.

В стандартном групповом чате с большим количеством участников отслеживать разговоры и находить нужные сообщения становится сложно. Форумы решают эту проблему, организуя обсуждения в **отдельные тематические ветки**. Это автоматически сегментирует сообщество по темам и интересам, делая общение более сфокусированным и удобным для управления.

Создавать тему может только владелец группы, если в группе более 100 участников. Если группа связана с каналом, то создать тему не получится. Темы включаются в **настройках группы**:

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

Будучи администратором, вы можете создать тему в настройках форумной группы:

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

После подключения **тем**, аватар изменится с круглого на квадратный, что позволит отличить форум от других чатов Telegram:

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

### Как настроить связку Telegram-клиент с сайтом?

Подробнее о том, как связать telegram-клиент и клиента с сайта после [успешной оплаты, читайте здесь](#how-to-configure-a-telegram-client-bundle-with-a-website).


---

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