АвтоматизацияТочные условия

Как выбрать нужные сообщения и участников

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

В этой статье

Время, темы чата и приглашения

Одинаковый вопрос может требовать разных ответов. Днём поддержка помогает сразу, ночью — объясняет, когда вернётся. Новичку с вебинара нужна одна памятка, участнику курса — другая. Эти различия задаются условиями времени, места и приглашения.

В какое время отвечать

«В любое время» удобно для постоянной справки. Например, ссылка на правила нужна и днём, и ночью.

«Расписание» позволяет выбрать дни недели и часы. Допустим, кураторы отвечают по будням с 10:00 до 18:00 по Москве. Выберите будни и укажите соответствующее окно. Можно задать несколько окон — например, до и после перерыва, — или быстро выбрать все дни, будни либо выходные.

В поля расписания вводится время UTC; местное время редактор показывает ниже как подсказку. Чтобы отвечать с 10:00 и переключаться на ночную памятку ровно в 18:00 по Москве, введите 07:00–14:59 UTC. Последняя указанная минута входит в окно расписания.

Дни недели тоже выбираются по UTC: поздний вечер у вас может приходиться на другой день в расписании. Если ваш часовой пояс использует летнее время, после перевода часов проверьте расписание ещё раз.

«Запускать вне этого времени» удобно для ответа «Мы вернёмся утром». Вы задаёте рабочие часы, включаете этот пункт — и подходящий вопрос получает ночную памятку за пределами рабочего времени.

«Диапазон дат» пригодится для временной задачи. Например, отвечать про регистрацию на осенний поток только в период приёма заявок. Укажите начало и окончание этого периода.

Если в чате уже есть часы закрытия

Выберите «Часы закрытия», чтобы использовать период из настроек самого чата. Если администратор изменит его, не придётся второй раз править то же время в Automation.

Например, в настройках стоит 22:00–06:00 UTC. В 22:00 условие уже подходит, ночью продолжает подходить, а в 06:00 перестаёт. Если включить «Запускать вне этого времени», правило будет проверять противоположный период.

Когда часы закрытия не заданы, заполнены неверно или начало совпадает с окончанием, условие не срабатывает — даже с включённым «вне этого времени». Запись 00:00–00:00 не означает «весь день».

Главное про время: бот ждёт события. Он может ответить на вопрос в десять утра, но не опубликует памятку только потому, что часы показали 10:00. Для сообщений по таймеру есть система анонсов Combot. Условие часов закрытия также не разрешает участникам писать, если чат закрыт для сообщений.

В какой теме чата искать событие

В чате курса могут быть «Учёба», «Поддержка» и «Болталка». В поле «Где» выберите:

  • «Исходный чат» — если правило нужно во всех темах. Например, общая памятка на определённую команду.
  • «Выбранный топик» — если нужен конкретный раздел. Например, отвечать про оплату только в «Поддержке». Можно выбрать несколько топиков из списка или указать их ID — числовые номера.
  • «Общий топик» — если правило относится к общей области чата, без отдельной темы.

Это место, где бот ищет подходящее событие. Куда он отправит ответ, настраивается отдельно. Например, участник задаёт вопрос в «Поддержке», а уведомление о нём уходит команде в канал логов.

По какому приглашению пришёл человек

Допустим, у школы две ссылки: одна для гостей открытого урока, другая для учеников курса. Можно показывать разные приветствия в зависимости от использованной ссылки.

Редактор предлагает такие варианты:

  • Любой источник. Одинаково встречать всех вступивших, независимо от приглашения.
  • Пригласительные ссылки Combot. Ссылка записана в каталоге приглашений этого чата. Можно выбрать конкретную ссылку открытого урока, указать её код или полный адрес. Выбранные ссылки также можно исключить из правила.
  • Внешняя пригласительная ссылка. Telegram передал ссылку, которой нет в каталоге Combot для этого чата. Например, о таком вступлении можно сообщить модераторам. Само по себе оно не говорит, что человек нарушитель.
  • Ссылки, созданные админами / Ссылки, созданные пользователями. Быстрый способ выбрать уже загруженные ссылки нужной группы создателей. Например, приглашения команды организаторов.
  • Без пригласительной ссылки. Подходит, когда данные о вступлении подтверждают, что ссылка не использовалась. Например, можно выделить такой способ входа отдельной памяткой.
  • Ссылка папки чатов. Для вступления через общую папку Telegram, если Telegram сообщил об этом. Например, дать новичку краткое объяснение назначения именно этого чата в подборке.

Два важных различия. Ссылка, которую вы не выбрали в списке, не обязательно внешняя: она может быть известна Combot. И отсутствие сведений о приглашении не доказывает, что человек вступил без ссылки. Если данных не хватает, бот не должен угадывать источник.

В списке за один раз загружается до 100 ссылок. Если выбираете приглашения кнопкой «Ссылки, созданные админами», сначала загрузите нужные страницы: кнопка выбирает только уже показанные ссылки. Новые приглашения сами в этот выбор не добавятся. При этом Combot отличает известные ссылки от внешних по всему каталогу, а не по видимой странице. Ввод адреса вручную не добавляет ссылку в каталог.

Для автоматического допуска на мероприятие начните с конкретной ссылки. Условие «все известные ссылки» охватит гораздо больше приглашений. И помните: ссылку можно переслать — она не подтверждает личность или оплату.

Для каких участников работает правило

В одном чате есть новички, постоянные участники и модераторы. Им не всегда нужен одинаковый ответ. Новичку стоит подсказать, где материалы, а команду предупреждения — оставить только команде модераторов.

Сначала разберёмся, о ком идёт речь

Если Анна добавила Илью в чат, приветствие нужно Илье, а не Анне. Если Анна ответила командой на сообщение Ильи, важно решить, к кому относится действие.

Поэтому названия полей меняются вместе с событием:

  • «Кто» — автор обычного сообщения.
  • «Заявитель» — человек, который просит вступить.
  • «Новый участник» и «Кто добавил» — Илья и пригласившая его Анна.
  • «Участник» и «Кто инициировал» — кто ушёл и кто его удалил, если удаление было.
  • «Кто вызвал» и «К кому применить» — автор команды и человек из ответа.
  • «Кому ответили» — автор сообщения, которое выбрали через «Ответить».

Перед настройкой роли или активности посмотрите, для какого человека вы её выбираете.

Все сообщения или только ответы

В учебном чате можно по-разному обрабатывать новый вопрос и ответ на чужой вопрос:

  • «Все сообщения» — наличие ответа не важно. Например, искать фразу «где запись» во всём разговоре.
  • «Только ответы / Любой ответ» — подходят сообщения, отправленные через «Ответить». Например, показывать памятку о формате обратной связи только в ответах на работы учеников.
  • «Не срабатывать на ответы / Не ответ» — подходят самостоятельные сообщения. Например, напоминать автору новой публикации в «Вакансиях» об оформлении объявления.

Поле «Кому ответили» помогает сузить правило: ответ участнику, администратору, боту, Combot, самому себе или посту связанного канала. Набор вариантов зависит от выбранного события. Например, можно отдельно обрабатывать ответы на сообщение куратора.

«Первое сообщение пользователя» использует условие «Сообщений в группе равно 1». Оно может пригодиться для памятки начинающему участнику. Но статистика и входящие сообщения обрабатываются не строго одновременно, поэтому обещать единственную награду за самое первое сообщение на этой основе нельзя.

Готовые группы пользователей

В редакторе они называются Автогруппы. Это удобный способ выбрать людей без перечисления каждого вручную.

Новые участники. Например, присылать подсказку по оформлению вопроса тем, кого Combot ещё считает новичками. Это определяется настройками чата: сроком после вступления, числом сообщений и предусмотренными освобождениями. Речь не о возрасте аккаунта Telegram.

Обычные участники. Люди, которые числятся в чате. Например, ограничить команду помощи участниками группы. «Обычный» не означает «давно с нами»: новичок тоже может входить в эту категорию.

Бывшие участники. Люди, для которых известно, что они ушли и сейчас в чате не состоят. Например, отличать заявку возвращающегося участника от заявки человека, о котором такой истории нет.

Пользователи из списка разрешённых. Список из настроек модерации, где люди указаны по ID или имени пользователя. Например, исключить доверенных помощников из автоматической памятки о публикации ссылок. Если нужно исключение, задайте его явно — наличие списка не отменяет любое ваше правило само по себе.

Админы Telegram. Например, разрешить им /team_warn.

Админы Combot. Люди с отдельно выданным доступом к панели Combot. Например, разрешить подготовленную команду помощникам сообщества, которые работают через панель. Этот доступ не делает их администраторами в Telegram.

Владелец. Человек, которого Telegram указывает владельцем чата. Например, оставить определённую собственную команду только ему.

Если выбраны админы Telegram и админы Combot, режим «Любое» допускает человека из любой из этих групп. «Все» требует, чтобы он относился к обеим. Это правило объединения работает и для автора события, и для другого выбранного пользователя.

Если видите отдельный «Режим админов», проверьте и его: можно учитывать всех, только администраторов Telegram или всех, кроме них. Например, бессмысленно одновременно выбрать «только админы» здесь и исключить их в другом условии.

Стаж, сообщения, опыт и репутация

Эти условия помогают описать аудиторию точнее. Например: «Участник вступил не больше двух часов назад и отправил не больше десяти сообщений».

  • XP: накопленный опыт. Например, отдельная памятка тем, у кого не меньше 500 XP.
  • Репутация: её текущее значение. Например, разрешить собственную информационную команду участникам с репутацией не меньше 10.
  • Сообщений в группе: известное Combot число сообщений в этом чате. Например, подсказка тем, у кого их не больше 10.
  • Предупреждения: число активных предупреждений. Например, по-разному напомнить о правилах человеку без предупреждений и тому, у кого уже есть одно.
  • Время с момента вступления: сколько прошло после известного вступления. Например, помощь тем, кто присоединился в последние два часа.
  • Ранг: уровень по шкале вашего чата. Например, выбрать участников, достигших определённого ранга, не высчитывая вручную его порог XP.

Для чисел есть «Равно», «Не меньше» и «Не больше». Это существенно: «ровно одно сообщение» не подходит участнику со ста сообщениями, а «не меньше одного» — подходит.

У времени можно выбрать секунды, минуты, часы, дни, недели и месяцы. Месяц здесь — 30 суток, неделя — 7 суток, день — 24 часа. Если Илья вступил в 23:50, к 00:10 он провёл в чате двадцать минут, а не день.

Стаж и активность можно объединять через «Все» или «Любое» и задавать исключения. Например, для памятки новичкам потребовать одновременно небольшой стаж и небольшое число сообщений. Исключённые пользователи не вернутся в тот же набор только из-за другого совпадения.

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

Если правило старое. Оно может считать только полные сутки: и 25, и 47 часов будут одним днём. Чтобы считать точнее, явно выберите единицу времени. Простое открытие и сохранение правила этого не меняет. Заодно проверьте знак сравнения: «Равно одному дню» и «Не меньше одного дня» выбирают разных людей.

Время после вступления — не время после первого сообщения. Например, Илья мог вступить в понедельник, а впервые написать в пятницу. Срок с первого сообщения или другой первой активности здесь не проверяется. Если такое условие осталось в старом выключенном правиле, перед включением его нужно убрать или заменить.

Сведения в профиле участника

Здесь проверяются не заслуги человека в чате, а доступные сведения об аккаунте:

  • Имя пользователя: есть ли username и какой он. Например, исключить из конкретной памятки заранее известный аккаунт команды. В поле значения username пишется без @.
  • Имя / Фамилия: например, подсказать участнику учебной группы с незаполненной фамилией, как представиться по правилам курса. Отображаемое имя не удостоверяет личность.
  • ID пользователя: числовой номер аккаунта. Например, разрешить команду двум конкретным кураторам даже после смены их username.
  • Telegram Premium: например, отдельная справочная команда для пользователей с Premium. Условие зависит от того, передал ли Telegram этот признак.
  • Аккаунт бота: например, в условиях для человека из ответа отличать ответ боту от ответа другому участнику. Для заявки на вступление этот вариант недоступен.
  • Язык: например, выбрать английскую памятку, если Telegram передал код en. Это не проверка языка сообщения, гражданства или страны; код может отсутствовать.
  • О себе: текст из заявки на вступление. Например, отметить для команды заявки, где в описании есть название учебного курса. Бот не читает таким способом описание профиля каждого автора обычного сообщения.

Для текста можно выбрать точное совпадение, часть текста или шаблон поиска. Например, «есть username» и «username содержит support» — разные условия. Если объединяете несколько вариантов, проверьте, что среди них не осталось пустого: иначе ограничение может оказаться шире, чем вы хотели.

Как искать нужные сообщения

В чате вакансий нужно замечать объявления. В поддержке — вопросы об оплате. В учебной группе — домашние работы. Combot ищет их по тем признакам, которые вы зададите: словам, ссылкам, длине и виду сообщения.

Сначала выберите, что прислал человек

Поле «Что» определяет вид сообщения, а «Параметры» — дополнительные требования к нему.

Можно выбрать текст, подпись к медиа, фото, видео, анимацию, аудио, документ, стикер, голосовое, видеокружок, контакт, геолокацию, опрос, игровой эмодзи, игру или платные медиа. Часть вариантов находится в «Дополнительно».

Например, ученик написал «Домашняя работа» отдельным сообщением — это текст. Написал те же слова под фотографией тетради — это подпись. Если искать только обычный текст, второй случай вы не охватите.

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

Можно задать отдельные требования каждому варианту: например, обычный текст с нужной фразой или фотография с той же фразой в подписи. После смены типа сообщения заново проверьте «Параметры»: у документа и опроса они разные.

Фразы: что именно написано

Возьмём поддержку сервиса. Есть несколько способов найти обращение:

  • Точный текст: текст целиком равен «правила». Подходит для короткого условленного запроса; «Где правила?» уже отличается.
  • Содержит фразу: «как оплатить» найдётся внутри «Подскажите, как оплатить подписку?».
  • Текст начинается с: «Отчёт» помогает выделить сообщения по рабочему шаблону «Отчёт за неделю…».
  • Текст заканчивается на: #готово позволяет заметить сообщения, которые участники договорились завершать этой отметкой.

Бот ищет заданный текст, а не понимает все возможные формулировки вопроса. Если вместо «как оплатить» написали «куда перевести деньги», добавьте эту фразу отдельно или создайте вариант ИЛИ.

Слова: точное слово или часть слова

В чате любителей животных Целое слово «кот» не должно означать поиск «котлеты». А поиск Содержит внутри слова подходит, когда вам важна сама последовательность букв.

Также можно искать Слово начинается с и Слово заканчивается на слова. Например, начало «вакан» поможет объединить несколько форм слова «вакансия», а окончание ing может пригодиться в упражнении по английскому. Проверяйте выбранный способ на нескольких обычных сообщениях: слишком короткая часть слова даёт лишние совпадения.

Целую фразу с пробелами вводите как фразу. В полях списков значения превращаются в отдельные элементы, поэтому «домашняя работа» не стоит случайно разбивать на два независимых слова.

Заглавные буквы, длина и письменность

«С учётом регистра» различает «Правила» и «правила». Для бытового вопроса обычно удобнее не зависеть от заглавной буквы. Для условленного точного обозначения различие может быть полезно.

Длина сообщения / Длина подписи задаётся в символах. Например, в топике вакансий на объявление длиннее 2500 символов можно отвечать просьбой вынести подробности по ссылке. Можно указать минимум, максимум или обе границы; пустую сторону диапазона ничто не ограничивает.

Наборы символов позволяют искать кириллицу, письмо справа налево — например, арабское или иврит, — а также китайские, японские и корейские символы. В редакторе могут встречаться сокращения RTL и CJK. Например, в языковом клубе по наличию кириллицы можно предложить памятку о формате упражнения.

Это не определение языка целого сообщения. Русская фраза внутри английского текста тоже содержит кириллицу. Не используйте такой признак как доказательство языка, на котором говорит человек.

Более сложный поиск: регулярное выражение

Это шаблон, который описывает несколько вариантов сразу. Например, вебинар|эфир ищет одно из этих слов. Для двух простых фраз можно обойтись обычными условиями — знать шаблоны для работы с Automation не обязательно.

Если они вам нужны, используется Python regex, а не JavaScript. Вставляйте сам шаблон, без окружающих слешей и флагов. Ссылка на проверку шаблона может помочь при настройке, но затем всё равно отправьте несколько пробных сообщений в тестовый чат.

Ссылки, упоминания и другие элементы

Иногда важны не слова, а то, что человек добавил к сообщению.

Команда. Например, найти /course_info внутри сообщения. Это условие содержимого; собственную команду с ответом бота создают через поле «Тип», как в разделе «Свои команды».

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

Текстовая ссылка. В сообщении написано «Моё портфолио», а адрес спрятан под этими словами. Это отдельный вид ссылки. Если правило должно замечать ссылки независимо от оформления, учтите и открытые адреса, и такие переходы.

Упоминание. Например, замечать обращения к аккаунту поддержки. Можно указать username или, для подходящего вида упоминания, числовой ID пользователя.

Хештег / Тикер с $. По #вакансия можно отвечать памяткой об оформлении объявления. По $TON — отделять упоминание этого обозначения в тематическом обсуждении. Это текстовый признак, не проверка финансовой информации.

Электронная почта. Например, напоминать авторам вакансий, что отклики нужно принимать по адресу в объявлении. Можно искать конкретный адрес или почтовый домен.

Телефон. В объявлении нашли номер — можно прислать автору напоминание о публичности контактов. Настраивается номер или префикс, например +7. Проверяется написанное в сообщении, а не скрытый телефон аккаунта.

Эмодзи. Например, реагировать на условленную отметку ✅ в тексте отчёта. Обычный эмодзи задаётся символом, пользовательский — его ID. Как получить ID, подсказывает редактор. Эмодзи в тексте и реакция под сообщением — разные вещи.

Форматирование текста. Например, в киноклубе напоминать о правилах обсуждения сообщений со спойлерами, а в учебной группе — выделять работы с блоком кода. Доступны жирный, курсив, подчёркивание, зачёркивание, встроенный код, блок кода, спойлер, обычная и раскрываемая цитата.

Для подходящих элементов можно выбрать любые значения, только перечисленные или исключения. «В сообщении есть ссылка» и «есть ссылка на сайт нашей школы» — два разных условия.

Не путайте отбор с проверкой безопасности. Разрешённый домен или расширение .pdf не гарантируют, что ссылка или файл безопасны. Эти фильтры помогают организовать чат, но не проверяют содержимое вместо вас.