Работа с группами и каналами в Telegram
Действие позволяет управлять группами и каналами Telegram прямо из сценария: отправлять и удалять сообщения, модерировать участников, выдавать роли, генерировать пригласительные ссылки и получать статистику.
Бот должен быть добавлен в канал или группу с правами администратора — без этого ни одна операция не сработает.
Доступные операции
Сообщения
| Операция | Что делает |
|---|---|
| Отправка сообщения в канал/группу | Публикация сообщения от имени бота-администратора. |
| Реакция на сообщение | Бот ставит эмодзи на сообщение в группе или канале. |
| Темы форума | Создание, закрытие, открытие и удаление темы в супергруппе-форуме. |
| Подарки | Список доступных подарков и отправка подарка подписчику за звёзды. |
| Ссылка на подписку за звёзды | Ссылка на закрытый канал с ежемесячным списанием звёзд. Платёжная система не нужна. |
| Оплата звездами | Платный пост: фото/видео скрыты до оплаты Telegram Stars. Каждый подписчик оплачивает доступ отдельно. |
| Удаление сообщения | Удаление ранее опубликованного сообщения по его ID. |
| Изменение сообщения | Правка уже опубликованного поста: просмотры, реакции и ссылка сохраняются. |
| Закрепление / Открепление | Закрепить пост в шапке канала или снять закрепление. |
| Пересылка / Копирование | Перенести пост из другого канала: с подписью «Переслано из…» или как своё сообщение. |
| Опрос | Опрос в канале или группе: анонимный или открытый, с одним или несколькими ответами. |
| Данные канала/группы | Название, описание, ссылка, число участников, закреплённый пост. |
| Отзыв пригласительной ссылки | Ссылка перестаёт работать, уже вошедшие остаются. |
Подписка и статистика
| Операция | Что делает |
|---|---|
| Проверка подписки | Проверяет, состоит ли подписчик в канале/группе. Полезно для геймификации и условий акций. |
| Получить список администраторов | Список администраторов канала или группы. |
| Получить число участников | Количество подписчиков канала или участников группы. |
Модерация
| Операция | Что делает |
|---|---|
| Бан на канале/в группе | Блокировка участника. |
| Снятие бана | Разблокировка участника. |
| Установка ограничений пользователю | Запрет отправки сообщений, медиа и других действий. |
| Установка прав пользователю | Назначение прав администратора отдельным участникам. |
| Установка имени администратора в супергруппе | Изменение публичного имени администратора (custom title). |
Приглашения и вступления
| Операция | Что делает |
|---|---|
| Генерация пригласительной ссылки | Создание ссылки-приглашения. |
| Генерация пригласительной ссылки с параметрами | Ссылка с лимитом переходов, сроком жизни или модерацией заявок. |
| Одобрить вступление | Подтверждение заявки на вступление в группу с модерацией. |
| Отклонить вступление | Отказ в заявке на вступление. |
Отправка сообщения в канал/группу
Публикация от имени бота-администратора. Кроме текста и кнопок сообщение может нести вложения — те же, что и обычное сообщение бота.
| Поле | Значение |
|---|---|
| ID или username канала/группы | Куда публиковать |
| Сообщение | Текст с шаблонами замен и переменными |
| Кнопки | Кнопки под публикацией |
| Медиа | Кнопка «Загрузить медиафайл»: фото, документы, аудио, архивы — до 10 МБ каждый. Несколько файлов уходят одной публикацией |
| File ID | Идентификатор файла этого бота: фото, документ, видео, аудио |
| ID темы форума | Куда именно в супергруппе-форуме. Пусто — в общий поток |
Загрузите файл боту один раз, сохраните #{_fileId} и укажите его в поле File ID: Telegram не будет перезаливать файл при каждой публикации.
Поле «ID темы форума» превращает группу в пульт поддержки. Заведите клиенту тему операцией «Создание темы форума», сохраните её номер в список рядом с его ClientID — и отправляйте сюда всю переписку с ним. Менеджер отвечает прямо в теме, а бот по номеру темы находит, кому вернуть ответ; клиент при этом может сидеть хоть во ВКонтакте, хоть в чате на сайте. Без этого поля сообщения падают в общий поток и разговоры перемешиваются.
Публикация может состоять из одного медиа — сообщение уйдёт и с пустым текстом.
Работа с опубликованным постом
Отправка кладёт номер поста в переменную _group_message_id. По этому номеру
пост потом правят, закрепляют и удаляют — сохраните номер в свою переменную,
если собираетесь вернуться к посту позже: следующая отправка перезапишет
системную.
| Операция | Поля | Что делает |
|---|---|---|
| Изменение сообщения | канал, ID сообщения, новый текст | Правит опубликованный пост. У поста с фото или видео правится подпись |
| Закрепление | канал, ID сообщения, «Уведомить участников» | Закрепляет пост в шапке |
| Открепление | канал, ID сообщения (пусто — последнее закреплённое) | Снимает закрепление |
| Пересылка | откуда, ID сообщения, куда | Переносит пост с подписью «Переслано из…» |
| Копирование | откуда, ID сообщения, куда | Переносит пост как своё сообщение, без отметки |
Правка вместо перепубликации — не мелочь: удалённый и опубликованный заново пост теряет просмотры, реакции и все ссылки, которые на него уже дали.
Опрос в канале
| Поле | Значение |
|---|---|
| ID или username | Куда публиковать |
| Вопрос | Текст опроса |
| Варианты ответа | По одному в строке, от 2 до 12 |
| Анонимный опрос | Видно ли, кто как ответил |
| Можно выбрать несколько | Один ответ или несколько |
| ID темы форума | Для супергрупп с темами, необязательно |
Варианты удобно собирать в сценарии: прочитайте список в переменную и склейте строки через перенос — например операцией «Склеить».
Данные канала/группы
Одна операция вместо двух: название, описание, ссылка, число участников и номер закреплённого поста ложатся в системные переменные.
| Переменная | Что содержит |
|---|---|
_chat_title | Название |
_chat_username | @имя канала |
_chat_description | Описание |
_chat_link | Ссылка на канал |
_chat_membercount | Число участников |
_chat_pinned | Номер закреплённого поста |
В поле «Имя переменной» можно дополнительно получить весь ответ мессенджера целиком — пригодится, если нужно что-то, чего нет в списке выше.
Реакция бота на сообщение
Бот ставит эмодзи прямо на сообщение — дешёвый способ показать, что обращение принято: жалобу увидели, заявку взяли в работу, ответ засчитан. Отдельного сообщения при этом не появляется, и обсуждение не засоряется.
| Поле | Значение |
|---|---|
| ID или username канала/группы | Где стоит сообщение |
| ID сообщения | Обычно #{_tggroup_message_id} из входящего события |
| Эмодзи | Например 👍. Несколько — через запятую. Пусто — реакция снимается |
| Крупная анимация | Реакция проигрывается заметнее |
Telegram разрешает боту ставить только реакции из набора, включённого в этом
чате. На чужое эмодзи придёт отказ, причина — в _error.
Темы форума
В супергруппе-форуме каждое обсуждение живёт в своей теме. Бот заводит тему под заявку, заказ или клиента и дальше пишет только в неё — переписка не растворяется в общем потоке, а закрытая тема остаётся историей.
| Операция | Поля | Что делает |
|---|---|---|
| Создание темы форума | ID группы, название темы, имя переменной | Заводит тему; её номер ложится в _topic_id |
| Закрытие темы форума | ID группы, ID темы | Тема закрывается для новых сообщений |
| Открытие темы форума | ID группы, ID темы | Закрытую тему открывают заново |
| Удаление темы форума | ID группы, ID темы | Тема удаляется вместе с сообщениями |
Номер темы подставляется в поле ID темы у отправки, пересылки, копирования и опроса — так пост уходит в нужное обсуждение, а не в общий поток.
Темы включаются в настройках группы. Боту нужно право управлять темами.
Подарки за звёзды
Подарок остаётся в профиле получателя — это заметнее любого сообщения «спасибо». Платит бот со своего звёздного баланса, поэтому механика лояльности собирается целиком внутри конструктора: за отзыв, за приведённого друга, ко дню рождения, победителю розыгрыша.
| Операция | Поля | Что делает |
|---|---|---|
| Список подарков | Имя переменной | _gifts_count — сколько подарков доступно, _gift_id и _gift_price — самый дешёвый из них; весь список — в переменную |
| Подарок подписчику | ID подарка, ID подписчика, подпись | Дарит подарок. Пустой ID подписчика — текущему |
Состав и цены подарков Telegram меняет. Берите ID операцией «Список подарков» — тогда сценарий не сломается, когда подарок исчезнет из набора.
Ссылка на подписку за звёзды
Операция «Ссылка на подписку за звёзды» выдаёт ссылку на закрытый канал с ежемесячной оплатой: подписчик переходит по ней, оплачивает звёздами, и дальше Telegram списывает их сам, пока подписку не отменят. Платёжная система для этого не нужна — деньги идут на баланс бота.
| Поле | Значение |
|---|---|
| ID или username канала | Закрытый канал, где бот — администратор |
| Цена в звёздах за месяц | Целое число от 1 |
| Имя переменной | Куда положить ссылку на подписку |
Другой срок списания Telegram не поддерживает. Каждое продление приходит
в сценарий как оплата с _starpay_subscription = 1.
Разовая продажа доступа делается иначе — счётом в звёздах в действии «Платежи».
Оплата звездами (платный пост)
Операция «Оплата звездами» публикует в канал/группу платный пост: прикреплённые фото и видео остаются скрытыми, пока подписчик не оплатит доступ звёздами Telegram (Stars). Раскрытие персональное — каждый подписчик оплачивает свой доступ отдельно.
| Поле | Значение |
|---|---|
| ID или username канала/группы | Куда публикуется пост |
| Цена в звёздах | Целое число 1–10000 ⭐ — одна цена за весь пост |
| Подпись | Необязательный текст к посту (виден всем до оплаты) |
| Медиа | От 1 до 10 элементов. Для каждого — File ID и тип (фото или видео) |
| Кнопки | Только URL-кнопки |
За звёзды можно открывать только фото и видео. Документы, аудио, голосовые и GIF/анимации Telegram за звёзды не отправляет.
File ID должен принадлежать этому же боту. Получить его можно заранее — например, отдельным шагом сценария, загрузив медиа боту и сохранив file_id в переменную.
Доход в звёздах зачисляется на баланс самого бота (пост отправляется методом Bot API от имени бота). Вывод настраивается в @BotFather → Bot Settings → Payments, действует период удержания ~21 день. Отдельно «включать» платные посты на канале не нужно — достаточно прав бота на публикацию.
Комментарии под постом канала
У канала комментариев нет — они живут в связанной группе обсуждения. Telegram сам пересылает туда каждый пост, и ветка ответов под этой пересылкой и есть комментарии. Боту оба события приходят как сообщения из группы, поэтому разбирает их та же цепочка со стартовым блоком.
Что нужно: связать канал с группой (настройки канала → «Обсуждение») и добавить бота администратором в ОБА — и в канал, и в группу.
| Что случилось | Как узнать | Что делать |
|---|---|---|
| Пост уехал в обсуждение | _tggroup_is_automatic_forward = 1 | запомнить пару: _tggroup_forward_from_message_id — пост канала, _tggroup_message_id — корень ветки |
| Человек написал комментарий | _tggroup_message_from = channel | ветка в _tggroup_message_thread_id, текст в _tggroup_text, автор в _tggroup_user_id, текст самого поста — в _tggroup_reply_to_message_text |
| Ответить в ту же ветку | — | «Отправка сообщения в канал/группу»: канал — ID группы обсуждения, «Тема форума» — номер ветки |
Пост и ветка связываются только в момент автопересылки. Если бот был выключен, когда пост уехал в обсуждение, привязать комментарии к записи будет нечем — пост придётся опубликовать заново.
Свой же комментарий вернётся боту как обычное сообщение из группы. Пишите в ветку текстом БЕЗ служебного префикса, по которому бот узнаёт команды, — иначе он исполнит собственную реплику второй раз.
События канала и группы
Кроме сообщений Telegram присылает боту и другие события. Каждое запускает сценарий так же, как обычное сообщение из группы: цепочка со стартовым блоком, а внутри — проверка переменной-признака.
| Событие | Признак | Что приезжает |
|---|---|---|
| Ответ на опрос | _pollanswer | _pollanswer_poll_id, выбранные варианты в _pollanswer_options, _pollanswer_retracted — ответ отозвали |
| Заявка на вступление | _joinrequest | _joinrequest_chat_id, _joinrequest_chat_title, _joinrequest_invite_link, _joinrequest_bio |
| Вход или выход участника | _chatmember | _chatmember_joined, _chatmember_left, _chatmember_status, _chatmember_oldstatus, _chatmember_chat_id |
| Реакция на пост | _reaction | _reaction_message_id, _reaction_emoji, _reaction_removed — какие реакции сняли |
| Реакции под постом канала (счётчик) | _reactioncount | _reactioncount_message_id, _reactioncount_total, _reactioncount_emoji («👍:7,🔥:2»), _reactioncount_chat_id. В канале реакции обезличены — приходит только счётчик, подписчиком выступает сам канал |
| Новая публикация канала | _channelpost | _channelpost_id, _channelpost_chat_id, _channelpost_chat_title, _channelpost_text |
| Буст канала | _boost | _boost_chat_id, _boost_count, _boost_expires |
Полные имена переменных — в справочнике Системные переменные.
У нового подписчика событие запускает стартовый блок. У того, кто уже
есть в боте, — блок, на котором он стоит, и только если этот блок событие
ждёт: переменная-признак (_joinrequest, _pollanswer…) упомянута
в условиях его переходов или в его сценарии. Поэтому событийный бот
собирают одним блоком, ведущим на себя, с разбором события в сценарии —
тогда человек всегда стоит там, где событие ждут.
Что на этом собирают: автоматический приём заявок в закрытый канал по условию, благодарность за буст, ответ на реакцию под постом, перепост новой публикации канала в другие мессенджеры, разбор ответов на опрос.
Отправка опроса кладёт его номер в _poll_id. Сохраните его рядом
с вопросом, иначе ответ будет не с чем сопоставить.
Telegram присылает реакции, членство и бусты только по явной подписке. Она ставится при сохранении настроек бота — если бот давно не менялся, откройте его настройки и сохраните ещё раз.
У публикации канала отправитель — сам канал, поэтому подписчиком в сценарии становится канал. Это нормально: писать такому «подписчику» не нужно, событие используют как сигнал.
Настройка и результат
Выберите нужную операцию и заполните поля — используйте подсказки, которые появятся в форме под каждым полем.
Результат операции помещается в заданную переменную:
1— успех,0— неудача.
Текст ошибки (если есть) попадает в системную переменную _error.
У проверки подписки переменная означает другое: 1 — подписан,
0 — не подписан. Подписанным считается любой, кто состоит в канале:
участник, владелец, администратор и участник с ограничениями.
Для входящих сообщений из групп/каналов Telegram автоматически заполняется большая группа системных переменных _tggroup_* — ID группы, текст, ответы, вложения, топики, состав участников. Полный список — в справочнике Системные переменные.
