Справка›Боты
Правила запуска — какой бот ответит
На одно сообщение отвечает ровно один бот. Как он выбирается, что такое точность запуска, 24 часа разговора и что нельзя сохранить.
У одного аккаунта может быть несколько ботов: один ловит слово «хочу» в комментариях, другой отвечает на любое сообщение в личке, третий раздаёт подарок за подписку. Чтобы они не мешали друг другу и пользователю не прилетало два ответа сразу, действует одно правило: на каждое сообщение отвечает ровно один бот. Эта статья объясняет, как он выбирается.
Четыре правила
- Из всех ботов аккаунта остаются те, чей запуск подходит событию: тот же канал (Инстаграм или Telegram), тот же тип события (личное сообщение, комментарий, ответ на историю), тот же пост, если пост выбран.
- Из них берётся самый точный: точное сообщение важнее «содержит слово», «содержит слово» важнее «любого сообщения»; бот на конкретном посте важнее бота «под всеми публикациями».
- Если одинаково точных несколько — отвечает тот, который включили позже.
- Если пользователь уже разговаривает с ботом — отвечает этот бот, без выбора.
Остальные боты молчат. Двух ботов с одинаковой точностью запуска на одно и то же событие сохранить нельзя — об этом ниже.
Что такое запуск бота
Запуск — это событие, по которому бот начинает разговор. В мастере он называется «Что запускает» или «Когда запускать».
В Telegram запусков пять:
- Команда /start — пользователь нажал «Старт».
- Переход по ссылке — пользователь пришёл по ссылке этого бота. У каждого бота своя ссылка, поэтому такой запуск ни с кем не пересекается.
- Определённое сообщение — текст совпадает со словом целиком. Большие и маленькие буквы не различаются: «Хочу» и «хочу» — одно и то же; пробелы по краям не считаются.
- Сообщение, которое содержит слово — слово стоит в тексте отдельным словом: «да» найдётся в «Да!», «да, хочу» и «ну да», но не внутри «никогда» или «дача». Кодовое слово из нескольких слов ищется целиком, знаки препинания между словами не мешают.
- Любое сообщение — любой текст, а также фото без подписи, голосовое, стикер.
В Инстаграме запуск — это тип события: сообщение в директ, комментарий под публикацией, комментарий в прямом эфире, ответ на историю, реакция на историю, отметка в истории. У сообщения в директ, у комментариев и у ответа на историю можно выбрать, на какое сообщение реагировать: любое, содержит слово, определённое; у реакции и отметки отбора по словам нет. У комментария дополнительно выбираются публикации: под всеми или только под выбранными.
Лестница точности
Когда сообщение подходит нескольким ботам, побеждает более точный запуск. Порядок от самого точного к самому общему:
- Команда /start (только Telegram).
- Определённое сообщение.
- Сообщение, которое содержит слово.
- Любое сообщение.
Как только на какой-то ступени нашёлся бот, ниже уже никто не проверяется.
Пример. Есть бот А на определённое сообщение «огонь», бот Б на сообщение, которое содержит «огонь», и бот В на любое сообщение.
- Пользователь пишет «огонь» — отвечает А.
- Пишет «хочу огонь» — А не подходит (текст не совпадает целиком), отвечает Б.
- Пишет «привет» — отвечает В.
- Присылает фото без подписи — отвечает В: у фото нет текста, значит это «любое сообщение».
Подпись к фото считается текстом и идёт по словам.
Посты в Инстаграме
У бота на комментарии можно выбрать конкретные публикации. Бот на конкретном посте точнее бота «под всеми публикациями» — это ещё одна ступень лестницы, и она проверяется первой.
Под постом сначала смотрят боты, у которых этот пост выбран, и среди них — лестница слов. Нашёлся бот — он отвечает, боты «под всеми публикациями» молчат. Не нашёлся — смотрят боты «под всеми публикациями», той же лестницей.
Пример. Бот А ловит слово «огонь» под всеми публикациями. Бот Б отвечает на любой комментарий под постом с розыгрышем.
- Под постом с розыгрышем пишут «огонь» — отвечает Б: у него выбран этот пост, он точнее.
- Под другим постом пишут «огонь» — отвечает А.
- Под другим постом пишут «класс» — никто: у А нет слова, а Б работает только на своём посте.
Кто отвечает при равной точности
Два бота на одной ступени с разными словами, и оба слова оказались в сообщении: например, бот на «содержит огонь» и бот на «содержит вода», а пользователь написал «огонь и вода». Отвечает тот бот, который включили позже. Включение — это переключатель на карточке бота: выключили и включили снова — бот стал «последним».
24 часа разговора
Пока пользователь разговаривает с ботом, все его сообщения идут этому боту: чужое кодовое слово, «любое сообщение», нажатия кнопок и даже команда /start. Другие боты его не перехватывают. Так бот не теряет ответы на свои вопросы, а пользователь не получает два разговора сразу.
Разговор заканчивается в двух случаях:
- бот дошёл до последнего шага;
- пользователь молчит дольше срока из настройки «Завершать разговор через (часов)». По умолчанию это 24 часа, срок меняется в «Дополнительных настройках» каждого бота.
После этого следующее сообщение пользователя снова проходит выбор по четырём правилам.
Цепочка рассылок со входом по сообщению разговор не перебивает, но и не теряет его: она берёт пользователя и ждёт конца разговора, а потом шлёт свои сообщения (см. Как цепочка стартует после бота).
Что нельзя сохранить
Два бота с одинаковой точностью запуска на одно событие сохранить нельзя: при создании, при правке и при включении вы увидите сообщение «Такой запуск уже занят» с именем бота, который его занимает. В мастере оно появляется сразу по «Далее» на шаге запуска. Кнопка «Выключить» с именем бота выключает тот бот и продолжает ваше действие; «Поменять запуск» возвращает к шагу, где выбирается запуск. Обойти запрет нельзя. Нельзя одновременно:
- два бота с одним и тем же определённым сообщением;
- два бота, у которых совпадает хотя бы одно слово в списке «содержит»;
- два бота на «любое сообщение» одного типа события;
- два бота на команду /start;
- в Инстаграме: одно слово под всеми публикациями у обоих, или одно слово и хотя бы один общий пост в списках.
Выключенный бот запуск не держит: выключите его — и слово свободно для другого бота. Включить его обратно, пока слово занято другим включённым ботом, не получится.
Что можно, но с предупреждением
Запуски разной точности на одно слово сохранить можно, лестница их разведёт. При включении вы увидите предупреждение с именем второго бота — просто чтобы вы знали, кто кого перекрывает.
- Определённое сообщение «огонь» и «содержит огонь» — можно.
- «Огонь» под всеми публикациями и «огонь» на конкретном посте — можно, под этим постом победит бот поста.
- Одно слово на разных постах, списки не пересекаются — можно, они никогда не встретятся.
- Переход по ссылке — всегда можно, у него своя ссылка.
Цепочки рассылок
Цепочка рассылок тоже может запускаться сообщением: у неё те же пять запусков, что у бота в Telegram, и они стоят на той же лестнице под теми же запретами. Цепочка «на любое сообщение» стоит на нижней ступени: она сработает, только если ни одно слово ни у одного бота не подошло.
Цепочка пользователя не удерживает: она присылает сообщения по дням, а не ведёт разговор. Поэтому пока идёт цепочка, боты запускаются как обычно, а пока пользователь разговаривает с ботом, цепочка по входу «Прошёл бота» или «Получил метку» стартует спокойно. Подробнее — в Правилах цепочки.
Инстаграм и Telegram: что разное
- В Инстаграме разные типы событий — разные миры. Слово «хочу» в директе и слово «хочу» в комментариях — два разных запуска, они не мешают друг другу и оба могут существовать.
- В Инстаграме после комментария бот может отправить в директ только одно сообщение, и только на первый комментарий пользователя под этим постом. Дальше разговор продолжается, только если пользователь ответил сам или нажал кнопку. Это правило Инстаграма, а не наше — см. Ограничения Инстаграма.
- В Telegram есть команда /start и ссылка на бота; в Инстаграме их нет.
- Команда /start — обычный запуск на верхней ступени лестницы. Внутри начатого разговора она разговор не прерывает.