Перейти к основному содержимому

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

Действие позволяет управлять группами и каналами Telegram прямо из сценария: отправлять и удалять сообщения, модерировать участников, выдавать роли, генерировать пригласительные ссылки и получать статистику.

Обязательное условие

Бот должен быть добавлен в канал или группу с правами администратора — без этого ни одна операция не сработает.

Проверка подписки


Доступные операции​

Сообщения​

ОперацияЧто делает
Отправка сообщения в канал/группуПубликация сообщения от имени бота-администратора.
Реакция на сообщениеБот ставит эмодзи на сообщение в группе или канале.
Темы форумаСоздание, закрытие, открытие и удаление темы в супергруппе-форуме.
ПодаркиСписок доступных подарков и отправка подарка подписчику за звёзды.
Ссылка на подписку за звёздыСсылка на закрытый канал с ежемесячным списанием звёзд. Платёжная система не нужна.
Оплата звездамиПлатный пост: фото/видео скрыты до оплаты Telegram Stars. Каждый подписчик оплачивает доступ отдельно.
Удаление сообщенияУдаление ранее опубликованного сообщения по его ID.
Изменение сообщенияПравка уже опубликованного поста: просмотры, реакции и ссылка сохраняются.
Закрепление / ОткреплениеЗакрепить пост в шапке канала или снять закрепление.
Пересылка / КопированиеПеренести пост из другого канала: с подписью «Переслано из…» или как своё сообщение.
ОпросОпрос в канале или группе: анонимный или открытый, с одним или несколькими ответами.
Данные канала/группыНазвание, описание, ссылка, число участников, закреплённый пост.
Отзыв пригласительной ссылкиСсылка перестаёт работать, уже вошедшие остаются.

Подписка и статистика​

ОперацияЧто делает
Проверка подпискиПроверяет, состоит ли подписчик в канале/группе. Полезно для геймификации и условий акций.
Получить список администраторовСписок администраторов канала или группы.
Получить число участниковКоличество подписчиков канала или участников группы.

Модерация​

ОперацияЧто делает
Бан на канале/в группеБлокировка участника.
Снятие банаРазблокировка участника.
Установка ограничений пользователюЗапрет отправки сообщений, медиа и других действий.
Установка прав пользователюНазначение прав администратора отдельным участникам.
Установка имени администратора в супергруппеИзменение публичного имени администратора (custom title).

Приглашения и вступления​

ОперацияЧто делает
Генерация пригласительной ссылкиСоздание ссылки-приглашения.
Генерация пригласительной ссылки с параметрамиСсылка с лимитом переходов, сроком жизни или модерацией заявок.
Одобрить вступлениеПодтверждение заявки на вступление в группу с модерацией.
Отклонить вступлениеОтказ в заявке на вступление.

Отправка сообщения в канал/группу​

Публикация от имени бота-администратора. Кроме текста и кнопок сообщение может нести вложения — те же, что и обычное сообщение бота.

ПолеЗначение
ID или username канала/группыКуда публиковать
СообщениеТекст с шаблонами замен и переменными
КнопкиКнопки под публикацией
МедиаКнопка «Загрузить медиафайл»: фото, документы, аудио, архивы — до 10 МБ каждый. Несколько файлов уходят одной публикацией
File IDИдентификатор файла этого бота: фото, документ, видео, аудио
ID темы форумаКуда именно в супергруппе-форуме. Пусто — в общий поток
Файлы — по File 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 подписчика — текущему
Не вписывайте 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 должен принадлежать этому же боту. Получить его можно заранее — например, отдельным шагом сценария, загрузив медиа боту и сохранив 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 группы, текст, ответы, вложения, топики, состав участников. Полный список — в справочнике Системные переменные.