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

Действие «Группы и каналы Telegram»

«Работа с группами и каналами в Telegram» — действие в сценарии действий, которое управляет каналом или группой Telegram от имени бота: публикации, модерация участников, проверка подписки, генерация инвайт-ссылок, выдача прав.

Для работы бот должен быть админом канала/группы с нужными правами.

Когда использовать​

  • Автопубликации в канал — анонсы новых товаров, акций, событий из бота.
  • Геймификация: участие в боте требует подписки на канал — проверка.
  • Модерация группы — банить за слова, выдавать варн, ограничивать.
  • Закрытые сообщества: инвайт-ссылки выдаются только после оплаты.
  • Распределение ролей: бот выдаёт права админа конкретным пользователям.

Часть 1. Подключение​

Шаг 1. Добавьте бота в канал/группу​

  1. В Telegram откройте канал/группу.
  2. Управление → Администраторы → Добавить администратора.
  3. Найдите вашего бота (@your_bot).
  4. Выдайте права: Публикация сообщений, Удаление сообщений, Бан пользователей, Добавление пользователей, Управление инвайт-ссылками (по необходимости).

Шаг 2. Узнайте ID​

  • Публичный канал/группа: используйте @username.
  • Приватный: ID начинается с -100.... Можно узнать, переслав сообщение из канала боту-инспектору (например, @username_to_id_bot).

Часть 1а. Бот, который работает внутри группы​

Реагировать на сообщения в группе — не то же самое, что вести диалог в личке. Отличий три, и все три сбивают с толку, если о них не знать.

1. Из группы бот отвечает только стартовым блоком​

Движок обрывает сценарий на любом следующем блоке. Иначе бот начал бы вести пошаговый диалог в общем чате и завалил бы его сообщениями.

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

2. Текст блока уходит в личку, а не в группу​

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

В группу пишет отдельная операция «Отправка сообщения» этого действия, с адресом группы в поле канала: #{_tggroup_id} (в МАКС — #{_maxgroup_id}).

3. Что произошло в группе, известно только из системных переменных​

Ни ответа подписчика, ни нажатой кнопки здесь нет. Есть набор переменных _tggroup_* (и _maxgroup_* в МАКС): кто написал, что написал, в какой группе, id сообщения, кто вошёл и кто вышел. Полный список — в разделе Системные переменные.

Основные:

ПеременнаяЧто содержит
_tggroup1, если событие пришло из группы
_tggroup_idID группы — им же адресуется ответ
_tggroup_textТекст сообщения
_tggroup_user_idКто написал
_tggroup_first_nameИмя написавшего
_tggroup_message_idID сообщения — для ответа реплаем или удаления
_tggroup_new_chat_member / _tggroup_left_chat_memberКто вошёл и кто вышел
Не собирайте это руками

Рецепт «Группа или канал Telegram/МАКС» (24-й в списке рецептов) собирает всю заготовку целиком: самозацикленный стартовый блок, разбор события и ответ в группу с правильными именами переменных.

Какая цепочка разбирает сообщение группы

Сообщение из группы, комментарий под постом, пост канала разбирает цепочка, стартовый блок которой слушает событие: переменная _tggroup (для МАКС — _maxgroup, для поста канала — _channelpost) упомянута в его сценарии или условиях переходов. Поэтому на одном боте могут жить и другие цепочки: комментарий человека, который раньше писал другой цепочке, всё равно попадёт в бот группы. Нажатие кнопки под сообщением группы или канала разбирает цепочка, где есть блок, на который ведёт кнопка. Личная переписка человека при этом остаётся в прежней цепочке.


Часть 2. Доступные операции​

В сценарии действий → «Добавить действие» → «Работа с группами и каналами в Telegram».

14 операций:

ОперацияНазначение
Отправка сообщенияПубликация в канал/группу
Оплата звездамиПлатный пост: фото/видео скрыты до оплаты звёздами Telegram
Ссылка на подписку за звёздыЗакрытый канал с ежемесячным списанием звёзд
Реакция на сообщениеБот ставит эмодзи на сообщение
Темы форумаСоздание, закрытие, открытие и удаление темы
ID темы форумаЕсть у отправки, пересылки, копирования и опроса: сообщение уйдёт в тему, а не в общий поток
Список подарков / Подарок подписчикуПодарок за звёзды с баланса бота
Проверка подписки1 — подписан, 0 — нет. Статус участника — в переменной <имя переменной результата>_status и в _member_status: creator, administrator, member, restricted, left, kicked. С «ID пользователя» [BotID] это статус самого бота — так сценарий узнаёт, администратор ли бот в группе или канале
Удаление сообщенияПо ID сообщения
БанЗаблокировать пользователя
Снятие банаРазблокировать
Установка ограниченийЗапретить писать/добавлять стикеры/полл
Установка правСделать админом, выдать конкретные права
Установка имени администратораКастомный «титул» в супергруппе
Генерация пригласительной ссылкиПростая инвайт-ссылка
Генерация ссылки с параметрамиС лимитом, сроком, по запросу
Одобрить вступлениеДля каналов «по заявкам»
Отклонить вступлениеТо же, отказать
Получить список администраторовМассив админов
Получить число участниковСколько в канале
Изменение сообщенияПравка опубликованного поста
Закрепление / ОткреплениеПост в шапке канала
Пересылка / КопированиеПеренести пост из другого канала
ОпросОпрос в канале или группе
Данные канала/группыНазвание, ссылка, число участников, закреплённый пост
Отзыв пригласительной ссылкиЗакрыть выданную ссылку

Операции Telegram

Скриншот 1. Список операций.

Клиенты из МАКСа, ВКонтакте и с сайта​

Группа Телеграма может обслуживать клиентов любого мессенджера бота. Если подписчик пишет из МАКСа, ВКонтакте или с виджета сайта, операции, которые работают с самой группой или каналом, выполняет Телеграм-бот той же цепочки. Это отправка и правка сообщения, темы форума, закреп, пересылка, опрос, реакция, пригласительные ссылки и данные канала. Так собирается приёмная «все каналы в одну группу»: клиент пишет откуда угодно, а тема для него заводится в группе Телеграма.

Операции, которые касаются самого подписчика, по-прежнему работают только для подписчика из Телеграма: проверка подписки, бан, ограничения, права, заявки на вступление, звёзды и подарки. У клиента из МАКСа нет id в Телеграме.

Если в цепочке нет бота Телеграма, операция не выполнится, а в #{_error} будет объяснение.

Кнопки под сообщением из кода​

Кнопки, собранные в сценарии, передавайте набором. Это одна кнопка, у которой название — #{имена}, а значение (или переход, или ссылка) — #{значения}. В переменных лежат JSON-массивы строк одинаковой длины. Движок развернёт набор в столько кнопок, сколько названий.

Если в поле кнопок положить переменную с JSON-массивом готовых кнопок (#{кнопки}), движок тоже её разберёт. Но редактор сценария такое поле не покажет, поэтому набор надёжнее.


Часть 3. Отправка сообщения (message)​

ПолеЗначение
ID или username канала@channelname или -1001234567890
СообщениеТекст с шаблонами замен и переменными
КнопкиInline-кнопки (URL, callback, WebApp)
МедиаФото, документы, аудио — загружаются здесь же, как в обычном сообщении бота
File IDИдентификатор файла этого бота: фото, документ, видео, аудио
ID темы форумаДля супергрупп с темами: сообщение уйдёт в тему
Ответить на сообщение (ID)Номер сообщения группы, на которое бот отвечает, например #{_tggroup_message_id}

Бот опубликует от имени канала.

Ответ под комментарием к посту

Комментарии канала живут в группе обсуждения, и каждая ветка — это цепочка ответов. Укажите в поле «Ответить на сообщение (ID)» номер комментария (#{_tggroup_message_id}), а в поле канала — группу обсуждения (#{_tggroup_id}): ответ бота встанет в ту же ветку, прямо под вопросом, и человек получит уведомление. ID темы форума здесь не нужен — он только для групп с темами.

Сотрудник ответил в ветке сам — это обычное сообщение группы, в котором #{_tggroup_reply_to_message_from_id} — автор вопроса. Ответ от имени канала или анонимного администратора приходит с #{_tggroup_user_id} 136817688 и 1087968824 соответственно. #{_tggroup_sender_chat_id} у комментария — канал поста, на который отвечают, а не автор.

Готовый бот на этом — «Комментарии канала → заявки».

Медиа те же, что и в сообщении бота

Кнопка «Загрузить медиафайл» принимает файлы до 10 МБ: jpg, png, gif, pdf, doc, xls, zip, mp4, mp3 и остальные привычные форматы. Несколько файлов уйдут одной публикацией.

Большие файлы надёжнее отправлять по File ID: загрузите файл боту один раз, сохраните #{_fileId} и укажите его в поле File ID — тогда Telegram не будет перезаливать файл при каждой публикации.

Сообщение может состоять из одного медиа: текст в этом случае не обязателен.

Применения​

  • Анонс новой акции: 🔥 Скидка 30% до конца недели!
  • Новости магазина: новые товары с WebApp Магазин.
  • Уведомления подписчикам канала о боте.

Часть 3.1. Оплата звездами — платный пост (starpayment)​

Публикует в канал/группу платный пост: прикреплённые фото/видео скрыты, пока подписчик не оплатит доступ звёздами Telegram (Stars). Каждый подписчик оплачивает свой доступ отдельно.

ПолеЗначение
ID или username каналаКуда публиковать пост
Цена в звёздахЦелое 1–10000 ⭐ — одна цена за весь пост
ПодписьНеобязательный текст (виден всем до оплаты)
Медиа1–10 элементов; для каждого — File ID и тип (фото/видео)
КнопкиТолько URL-кнопки
Только фото и видео

За звёзды открываются только фото и видео. Документы, аудио, голосовые и GIF/анимации не поддерживаются.

File ID и баланс
  • File ID должен принадлежать этому боту — получите его заранее (например, загрузив медиа боту отдельным шагом и сохранив file_id в переменную).
  • Звёзды зачисляются на баланс бота; вывод — в @BotFather → Bot Settings → Payments (период удержания ~21 день).

Применение​

  • Закрытый платный контент в канале без отдельной платёжной системы.
  • Продажа фото/видео-материалов «за звёзды» прямо из публикации.

Часть 3.2. Работа с опубликованным постом​

Отправка кладёт номер поста в _group_message_id. По нему пост потом правят, закрепляют и удаляют — сохраните номер в свою переменную, если вернётесь к посту позже: следующая отправка перезапишет системную.

ОперацияПоля
Изменение сообщения (mesedit)канал, ID сообщения, новый текст
Закрепление (pin)канал, ID сообщения, уведомлять ли участников
Открепление (unpin)канал, ID сообщения (пусто — последнее закреплённое)
Пересылка (forward)откуда, ID сообщения, куда, тема форума
Копирование (copy)то же, но без подписи «Переслано из…»
Правьте, а не публикуйте заново

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


Часть 3.3. Опрос (poll)​

ПолеЗначение
ВопросТекст опроса
Варианты ответаПо одному в строке, от 2 до 12
Анонимный опросВидно ли, кто как ответил
Можно выбрать несколькоОдин ответ или несколько
ID темы форумаДля супергрупп с темами, необязательно

Часть 3.4. Данные канала (chatinfo)​

Кладёт в системные переменные: _chat_title, _chat_username, _chat_description, _chat_link, _chat_membercount, _chat_pinned. Весь ответ мессенджера можно дополнительно получить в свою переменную.


Часть 4. Проверка подписки (subscription)​

ПолеЗначение
ID или usernameКанал/группа для проверки
ID пользователяЧью подписку проверять. Пусто — текущего подписчика
Имя переменнойКуда сохранить результат: 1 или 0

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

Только Telegram

Если подписчик пришёл из MAX/VK/Viber — проверка вернёт 0.

Применение​

«Подпишись на канал → получи бонус»:

Блок «Проверка подписки»
Сценарий действий «До»:
- TG канал → subscription для @your_channel → переменная sub
Условие #{sub} = 1 → блок «Бонус»
Условие #{sub} = 0 → блок «Подпишись и нажми кнопку Проверить»

Часть 5. Модерация: ban / unban / restrict / promote​

Бан (ban)​

ПолеЗначение
ID каналаГде банить
ID пользователяКого банить. [ClientID] — текущий клиент

Снятие бана (unban)​

Те же поля. Разбанит пользователя.

Ограничения (restrict)​

Запрет писать/добавлять стикеры/полл/инвайтить на определённое время.

Права (promote)​

Выдать права админа: публикация, удаление, бан, инвайт, видеочаты и т.д.

Кастомное имя (customtitle)​

В супергруппах после promote можно дать «титул» — Главный модератор, Лучший продавец.


Часть 6. Инвайт-ссылки​

Сгенерирует постоянную инвайт-ссылку. Подписаться может кто угодно — действует бессрочно.

ПараметрЗначение
Срок жизниЧерез сколько секунд истечёт. Пусто или 0 — ссылка бессрочная
Лимит участниковСколько может подписаться (1–99999). Пусто — без лимита
С заявкойТребует одобрения админа (approvejoin / declinejoin)
НазваниеМетка ссылки в админке Telegram

Применение: «Подписка PRO» — клиент оплатил, бот генерирует ссылку с лимитом 1 и отправляет ему.

Откуда пришёл подписчик

Сделайте на каждую рекламу свою ссылку с заявкой и понятным названием. Заявка приносит ссылку, по которой пришёл человек, — #{_joinrequest_invite_link}: найдите по ней источник, одобрите заявку и запишите. После одобрения придёт ещё и событие входа участника (#{_chatmember_joined} = 1) — второй раз его не считайте; выход — #{_chatmember_left} = 1. Готовый бот на этом — «Источники подписчиков канала» в модерации сообществ.

Одобрение/Отклонение (approvejoin / declinejoin)​

Для каналов «по заявкам». Бот может автоматически принимать только тех, кто, например, оплатил доступ.

О новой заявке бот узнаёт сам: сценарий запускается с #{_joinrequest} = 1, группа — в #{_joinrequest_chat_id}, описание профиля — в #{_joinrequest_bio}. В первые 5 минут после заявки бот может написать человеку в личку — так задают вопросы анкеты до входа (готовый бот «Вход в группу по анкете»).

В поле ID пользователя — id того, кто подал заявку. Одобрять может и модератор из МАКСа или с сайта: если в поле не его собственный id, операция выполнится от Телеграм-бота той же цепочки.


Часть 7. Чтение информации​

Список администраторов (getadministrators)​

Возвращает массив админов канала. Используется для уведомлений всем админам.

Число участников (getmembercount)​

Возвращает целое число — текущее количество подписчиков. Удобно для:

  • Отображения статистики «Нас уже X участников»;
  • Триггеров «Когда нас будет 1000, дадим скидку».

Часть 8. Удаление сообщения (mesdelete)​

Удалить конкретное сообщение по ID. Применяется для:

  • Самоудаления старых акций;
  • Удаления тестовых публикаций по таймеру;
  • Реакции на жалобу — удалить нарушающее сообщение.

Часть 9. Типовые сценарии​

Сценарий 1. Анонс новой акции в канал​

Блок «Запуск анонса» (по команде /announce от админа)
Сценарий действий «До»:
- TG канал → message:
канал: @promo_channel
текст: 🔥 #{promo_title}
До #{promo_date}, скидка #{promo_percent}%
кнопки: [«Открыть в боте»] → ссылка t.me/your_bot?start=promo
Сообщение админу: «✅ Анонс опубликован»

Сценарий 2. Геймификация — подпиской​

Блок «Бонус за подписку»
Сценарий действий «До»:
- TG канал → subscription для @your_channel → переменная #{is_sub}
Условие #{is_sub} = 1 → блок «Бонус выдан»
- Глобальная переменная #{client_bonus} += 100
- Сообщение: «🎁 Вы получили 100 баллов!»
Условие #{is_sub} = 0 → блок «Подпишитесь»
- Сообщение: «Подпишитесь на @your_channel и нажмите Проверить»
- Кнопка «🔄 Проверить» → возврат на блок «Бонус за подписку»

Сценарий 3. PRO-канал по оплате​

Цепочка «Успешная оплата PRO»
Сценарий действий «До»:
- TG канал → createinvitelink:
канал: -1001234567890 (приватный PRO-канал)
лимит: 1 (только этот клиент)
срок: 24 часа
→ сохранить ссылку в переменную #{invite_link}
Сообщение клиенту: «Доступ к PRO-каналу: #{invite_link}
Активна 24 часа.»

Сценарий 4. Автомодерация​

Цепочка «Сообщение в группе» (триггер: новое сообщение в группе)
Сценарий действий «До»:
- JS код: проверить [Answer] на запрещённые слова
- Если запрещено:
- TG канал → mesdelete (удалить сообщение)
- TG канал → restrict (запретить писать на 1 час)
- Уведомление админам

Сценарий 5. Уведомление всем админам​

Блок «SOS от клиента»
Сценарий действий «До»:
- TG канал → getadministrators → массив #{admins}
- Перебор массива → каждому отправить сообщение через [Группы Telegram → message]

Сценарий 6. Подписки «по заявкам»​

Цепочка «Новая заявка» (триггер из Telegram)
Сценарий действий «До»:
- Проверка: оплачена ли подписка клиента
- Если да: TG канал → approvejoin
- Если нет: TG канал → declinejoin + сообщение «Сначала оплатите»

Часть 10. Архитектура​

Принцип 1. ID каналов — в глобальные переменные​

g_main_channel, g_pro_channel, g_support_group — храните там.

Принцип 2. Не пишите в каналы из сценариев клиента​

Сообщения в публичных каналах должны быть редкими и осознанными. Не публикуйте «при каждом действии клиента» — только важные анонсы.

Принцип 3. Проверка подписки — частая операция​

Запускайте каждый раз, когда нужен бонус. Telegram кеширует ~30 секунд — частые повторные проверки могут вернуть устаревшие данные.

Принцип 4. Резервируйте права бота​

Если ушло одобрение прав из канала (админ убрал, ошибочное действие) — операции начнут возвращать ошибки. Добавьте проверку через getadministrators периодически.

Принцип 5. Инвайт-ссылки с лимитом​

Для платных каналов всегда указывайте лимит = 1 и срок жизни (24 часа). Так одна оплата ≠ доступ для всего интернета.

Принцип 6. Логируйте модерацию​

Бан, ограничение, удаление — в список «Модерация» с причиной и временем. Это покажет паттерны и защитит от ошибок.


Частые ошибки​

  • 403 chat not found — бот не админ или нет прав в канале. Проверьте.
  • subscription всегда возвращает 0 — клиент пришёл не из Telegram. Это вне Telegram-канала.
  • Не открывается приватный канал — username неверный для приватного. Используйте ID -100....
  • Кнопки в публикации не отображаются — для каналов работают только inline-кнопки (не reply-клавиатура).
  • createinvitelink не работает — у бота нет права «Управление инвайт-ссылками». Включите в админке.
  • Превышение лимитов Telegram API — 429 Too Many Requests. Делайте паузу между массовыми операциями.

Что дальше​