Самый полный стартовый гайд по ботам Telegram (python)
QQ Хабр! В этом гайде мы пройдемся по каждому шагу создания ботов в Telegram — от регистрации бота до публикации репозитория на GitHub. Некоторым может показаться, что все разжевано и слишком много элементарной информации, но этот гайд создан для новичков, хотя будет интересен и для тех, кто уже занимался разработкой в Telegram. Сегодня мы будем делать бота, который отвечает на заданные вопросы.
I. Регистрация бота
Прежде всего нужно зарегать бота. Для этого пишем боту @BotFather команду /newbot , после этого даем боту имя и тэг. После этих действий бот отправит нам токен, который никому давать нельзя.

На этом процесс регистрации бота завершен, можно приступать к самому интересному — кодингу
II. Кодинг
Итак, бота мы будем писать на python. Для начала установим библиотеку pytelegrambotapi. Для этого в командной строке (или в терминале, если у вас MacOS) пишем:
pip3 install pytelegrambotapi
После этого можно приступать, импортируем библиотеки и вводим токен:
import telebot bot = telebot.TeleBot('BOT-TOKEN')
Вместо BOT-TOKEN пишем токен, который получили от BotFather
Сейчас можно уже и поговорить о кнопках
Кнопки
Для того, чтобы кнопки заработали нужно импортировать типы, для этого после импорта библиотек пишем:
from telebot import types
Бывает два вида кнопок, это:
- Inline-кнопки
- Keyboard-кнопки
Inline-кнопки
Для создания таких кнопок используется метод InlineKeyboardMarkup, например, сделаем кнопку, которая ведет на сайт Хабра
@bot.message_handler(commands = ['start']) def url(message): markup = types.InlineKeyboardMarkup() btn1 = types.InlineKeyboardButton(text='Наш сайт', url='https://habr.com/ru/all/') markup.add(btn1) bot.send_message(message.from_user.id, "По кнопке ниже можно перейти на сайт хабра", reply_markup = markup)
Выглядит это так

Более подробно про такие кнопки можно почитать в этой статье
Keyboard-кнопки
Такие кнопки можно увидеть в большом количестве ботов, таких как Дайвинчик и тому подобные. Пишутся они довольно просто, с помощью метода ReplyKeyboardMarkup. Для примера сделаем кнопку выбора языка
@bot.message_handler(commands=['start']) def start(message): markup = types.ReplyKeyboardMarkup(resize_keyboard=True) btn1 = types.KeyboardButton(" Русский") btn2 = types.KeyboardButton(' English') markup.add(btn1, btn2) bot.send_message(message.from_user.id, " Выберите язык / Choose your language", reply_markup=markup)
Вот как это выглядит

Обратно к коду
Теперь уже точно можно вернуться к кодингу, давайте добавим стартовую команду и кнопку
@bot.message_handler(commands=['start']) def start(message): markup = types.ReplyKeyboardMarkup(resize_keyboard=True) btn1 = types.KeyboardButton(" Поздороваться") markup.add(btn1) bot.send_message(message.from_user.id, " Привет! Я твой бот-помошник!", reply_markup=markup)
Далее делаем реакцию бота на кнопки (здесь то уже есть комментарии)
@bot.message_handler(content_types=['text']) def get_text_messages(message): if message.text == ' Поздороваться': markup = types.ReplyKeyboardMarkup(resize_keyboard=True) #создание новых кнопок btn1 = types.KeyboardButton('Как стать автором на Хабре?') btn2 = types.KeyboardButton('Правила сайта') btn3 = types.KeyboardButton('Советы по оформлению публикации') markup.add(btn1, btn2, btn3) bot.send_message(message.from_user.id, '❓ Задайте интересующий вопрос', reply_markup=markup) #ответ бота
Теперь по этому примеру продолжаем плодить бота
elif message.text == 'Как стать автором на Хабре?': bot.send_message(message.from_user.id, 'Вы пишете первый пост, его проверяют модераторы, и, если всё хорошо, отправляют в основную ленту Хабра, где он набирает просмотры, комментарии и рейтинг. В дальнейшем премодерация уже не понадобится. Если с постом что-то не так, вас попросят его доработать.\n \nПолный текст можно прочитать по ' + '[ссылке](https://habr.com/ru/sandbox/start/)', parse_mode='Markdown') elif message.text == 'Правила сайта': bot.send_message(message.from_user.id, 'Прочитать правила сайта вы можете по ' + '[ссылке](https://habr.com/ru/docs/help/rules/)', parse_mode='Markdown') elif message.text == 'Советы по оформлению публикации': bot.send_message(message.from_user.id, 'Подробно про советы по оформлению публикаций прочитать по ' + '[ссылке](https://habr.com/ru/docs/companies/design/)', parse_mode='Markdown')
Так, стоп, сейчас нужно обсудить, как делать гиперссылки. Это делается просто, вот пример:
bot.send_message(message.from_user.id, 'Подробно про советы по оформлению публикаций прочитать по ' + '[ссылке](https://habr.com/ru/docs/companies/design/)', parse_mode='Markdown')
Как мы видим, чтобы сделать гиперссылку мы берем в квадратные скобки слово, которое будет ссылкой, а саму ссылку берем в круглые. В конце строки добавляем parse_mode=’Markdown’
Когда мы дописали основной код нужно вставить важную строку
bot.polling(none_stop=True, interval=0) #обязательная для работы бота часть
Как сказано в комментарии, это строка обязательна для работы бота, чтобы он не отключался и работал постоянно.
Полностью наш код выглядит так:
import telebot from telebot import types bot = telebot.TeleBot('BOT-TOKEN') @bot.message_handler(commands=['start']) def start(message): markup = types.ReplyKeyboardMarkup(resize_keyboard=True) btn1 = types.KeyboardButton(" Поздороваться") markup.add(btn1) bot.send_message(message.from_user.id, " Привет! Я твой бот-помошник!", reply_markup=markup) @bot.message_handler(content_types=['text']) def get_text_messages(message): if message.text == ' Поздороваться': markup = types.ReplyKeyboardMarkup(resize_keyboard=True) #создание новых кнопок btn1 = types.KeyboardButton('Как стать автором на Хабре?') btn2 = types.KeyboardButton('Правила сайта') btn3 = types.KeyboardButton('Советы по оформлению публикации') markup.add(btn1, btn2, btn3) bot.send_message(message.from_user.id, '❓ Задайте интересующий вас вопрос', reply_markup=markup) #ответ бота elif message.text == 'Как стать автором на Хабре?': bot.send_message(message.from_user.id, 'Вы пишете первый пост, его проверяют модераторы, и, если всё хорошо, отправляют в основную ленту Хабра, где он набирает просмотры, комментарии и рейтинг. В дальнейшем премодерация уже не понадобится. Если с постом что-то не так, вас попросят его доработать.\n \nПолный текст можно прочитать по ' + '[ссылке](https://habr.com/ru/sandbox/start/)', parse_mode='Markdown') elif message.text == 'Правила сайта': bot.send_message(message.from_user.id, 'Прочитать правила сайта вы можете по ' + '[ссылке](https://habr.com/ru/docs/help/rules/)', parse_mode='Markdown') elif message.text == 'Советы по оформлению публикации': bot.send_message(message.from_user.id, 'Подробно про советы по оформлению публикаций прочитать по ' + '[ссылке](https://habr.com/ru/docs/companies/design/)', parse_mode='Markdown') bot.polling(none_stop=True, interval=0) #обязательная для работы бота часть
Этот код я написал за 10 минут, при желании код можно сделать намного больше. Полноценный бот выглядит так. Этого бота я делал для конкурса и написал его за 3,5 часа.
Важно: если вы делаете полноценного бота, которого будете куда-то публиковать, очень стоит добавить в него эмодзи: кнопки, сообщения — все должно включать в себя эмодзи, это важно для красоты
III. Публикация репозитория на GitHub
Для этого на потребуется приложение GitHub Desktop
Создаем новый репозиторий, после этого в папке по умолчанию появится папка с названием вашего проекта. В нее закидываем файлы проекта и в приложении нажимаем кнопку Commit to main. После этого нажимаем на кнопку Publish Repository. Готово! При желании, можно создать Readme.md
IV. Заключение
Здесь я расписал все, что я вспомнил о разработке ботов для telegram, если есть, что предложить — комментарии открыты для вас. Надеюсь, вам это было полезно.
Подключение бота к Telegram
Вы можете настроить взаимодействие бота с другими пользователями с помощью программы для обмена сообщениями Telegram. В этой статье описывается создание бота Telegram и его подключение к боту в портал Azure.
Сведения о том, какие функции поддерживаются в каждом канале, см. в справочной статье о каналах.
Необходимые компоненты
- Учетная запись Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начать работу.
- Существующий бот, опубликованный в Azure.
- Устройство с установленной телеграммой и учетной записью Telegram .
Создание бота Telegram с помощью BotFather
Создайте бот Telegram с Помощью BotFather перед подключением бота к Telegram.

- Запустите новую беседу с BotFather.
- Отправьте /newbot для создания нового бота Telegram.
- При появлении запроса введите имя бота.
- Присвойте боту Telegram уникальное имя пользователя. Обратите внимание, что имя бота должно заканчиваться словом «bot» (без учета регистра).
- Скопируйте и сохраните маркер доступа бота Telegram для последующих действий.
Настройка Telegram в портал Azure
Теперь, когда у вас есть маркер доступа, вы можете настроить бота в портал Azure для связи с Telegram.
- Войдите на портал Azure.
- Перейдите к боту. Затем выберите каналы из Параметры.
- Выберите Telegram из списка доступных каналов.
- Введите маркер, скопированный ранее в поле маркера доступа, и нажмите кнопку «Применить«.
Теперь бот успешно настроен для взаимодействия с пользователями в Telegram.
Дополнительные сведения
Сведения об использовании действий, относящихся к Telegram, в сообщениях см. в статье о реализации функциональных возможностей для конкретного канала.
Строим Telegram-бот в Яндекс.Облаке

Сегодня из подручных материалов мы соберём в Яндекс.Облаке Telegram-бот с использованием Yandex Cloud Functions (или Яндекс-функции — для краткости) и Yandex Object Storage (или Объектное хранилище — для ясности). Код будет на Node.js. Однако, имеется одно пикантное обстоятельство — некая организация под названием, скажем так, РоссКомЦензур (цензура запрещена статьёй 29 Конституции РФ), не позволяет интернет-провайдерам России передавать запросы в Telegram API по адресу: https://api.telegram.org/ (UPD: В РФ уже снята блокировка Telegram API). Ну мы и не будем — нет так нет. Ведь в нашем саквояже имеются т.н. вебхуки — с их помощью мы не делаем запросы на конкретный адрес, а всего лишь шлём свой запрос в качестве ответа на любой запрос к нам. То есть, как в Одессе — отвечаем вопросом на вопрос. Поэтому Telegram API в нашем коде фигурировать не будет.
Дисклеймер
Упомянутые в данной статье названия каких-либо государственных организаций являются вымышленными, а возможные совпадения с названиями реально существующих организаций — случайными.
Итак, мы сделаем бота, который будет нас снабжать умными мыслями. Точно такого, как на картинке:

Можете испытать его в деле — вот имя: @SmartThoughtsBot. Обратили внимание на кнопочку «Навык Алисы»? Это потому, что бот является своеобразным «компаньоном» для одноименного навыка Алисы, т.е. он выполняет те же функции, что и навык Алисы и, возможно, что они смогут мирно сосуществовать рекламируя друг-друга. О том как создать навык Умные Мысли рассказано в статье Алиса приобретает навык. Сейчас (после внесения некоторых изменений уже после публикации вышеупомянутой статьи) на смартфоне этот навык будет выглядеть примерно так:

Создание бота
Мне бы хотелось, чтобы этот туториал был полезен всем, в т.ч. и начинающим «ботостроителям». Поэтому в этом разделе я довольно подробно опишу как вообще создавать в Telegram‘е ботов. Для тех кому эта информация не требуются — переходите к следующим разделам.
Открываем приложение Telegaram, зовём отца всех ботов (у них всё как у людей) — @BotFather — и для начала дадим ему команду /help, чтобы освежить в памяти, что мы можем делать. Сейчас нас будет интересовать команда /newbot.

Поскольку описываемый здесь бот уже создан, для демонстрационных целей я создам на короткое время другого бота (потом его удалю). Назову его DemoHabrBot. Имена (username) всех телеграм-ботов должны заканчиваться на слово bot, например: MyCoolBot или my_cool_bot — это для ботов. Но сначала даём боту название (name) — а это для людей. Название может быть на любом языке, содержать пробелы, не обязано заканчиваться на слово bot, и даже не обязано быть уникальным. В данном примере я назвал этот бот Демо Хабр.

Теперь выбираем боту имя (username, то, которое для ботов). Назовём его DemoHabrBot. Всё что относилось к названию бота (name) совсем не относится к его имени — username (или относится, но с точностью до наоборот). После успешного создания уникального имени бота, нам надо скопировать и сохранить (в строжайшей тайне!) токен, показанный на скриншоте красной стрелкой. С его помощью мы чуть позже установим исходящий из Telegram‘а вебхук на нашу Яндекс-функцию.

А сейчас дадим команду отцу всех ботов: /mybots, и он покажет нами список всех созданных нами ботов. Давайте пока оставим в покое свежеиспечённый бот Демо Хабр (он был создан чтобы показать как создавать ботов, но мы ещё им сегодня воспользуемся для других демонстрационных целей), и рассмотрим бот Умные Мысли (@SmartThoughtsBot). Нажимаем в списке ботов кнопку с его именем.
Здесь мы можем настроить нашего бота. Нажав кнопку Edit. мы перейдём на редактирование той или иной опции. Например, нажав на кнопку Edit Name мы можем изменить название бота, скажем вместо Умные Мысли, написать Бредовые Идеи. Botpic — это аватар бота, должен быть не менее 150 x 150 px. Description — это краткое описание, который пользователь видит при первом запуске бота, в качестве ответа на вопрос: Что может делать этот бот? About — ещё более краткое описание, которое передаётся с ссылкой на бот ( https://t.me/SmartThoughtsBot ) или при просмотре информации о нём.

Нам осталось только настроить команды. Для этого нажимаем кнопку Edit Commands. Для стандартизации пользовательской практики Telegram рекомендует всегда использовать две команды: /start и /help, а если боту необходимы настройки — дополнительную команду /settings. Наш бот прост как шар, поэтому настройки ему пока не нужны. Прописываем две первых команды, которые потом мы обработаем в коде. Теперь, если в поле ввода пользователь введёт слеш (знак косой черты: /), появится список команд для их быстрого выбора. Всё как на картинке: слева — устанавливаем команды через бота-отца; справа эти команды уже доступны пользователям в нашем боте.

Яндекс-функция
Теперь, когда наш бот создан, переходим в Яндекс.Облако, чтобы создать функцию, которая будет выполнять код нашего бота. Если вы ещё не работали с Яндекс.Облаком почитайте материал Алиса в стране Битрикс, а затем — Яндекс-функции рассылают почту. Я почти уверен, что двух этих относительно небольших статей вам вполне будет достаточно для базового понимания предмета.
Итак, в консоли Яндекс.Облака в левом навигационном меню выбираем пункт Cloud Functions, и затем нажимаем кнопку Создать функцию. Присваиваем ей имя, а для себя — краткое описание.

После нажатия кнопки Создать и прошествии пары секунд, новая функция появится в списке всех функций. Нажимаем на её имя — это приведёт нас на страницу Обзор нашей функции. Здесь надо включить (On) переключатель Публичная функция, чтобы она стала доступна из внешнего (для Яндекс.Облака) мира, а значение полей Ссылка для вызова и Идентификатор — хранить в глубокой тайне от всех кроме себя самого и Telegram’a, чтобы вашу функцию не могли вызывать различные аферисты.

Теперь с помощью левого меню переходим в Редактор функции. Давайте пока отложим на короткое время в сторону наши Умные Мысли, и создадим минимальную функцию-шаблон для проверки работоспособности нашего бота… Впрочем, в данном контексте эта функция и есть наш бот… Короче говоря, сейчас и прямо вот здесь мы сделаем простейшего бота, который будет «зеркалить» (т.е. отправлять назад) запросы пользователей. Этот шаблон можно использовать всегда при создании новых телеграм-ботов, чтобы убедиться, что связь с Telegram’ом работает нормально. Нажимаем Создать файл, называем его index.js, и в он-лайн Редакторе кода вставляем в этот файл следующий код:
module.exports.bot = async (event) => < const body = JSON.parse(event.body); const msg = < 'method': 'sendMessage', 'chat_id': body.message.chat.id, 'text': body.message.text >; return < 'statusCode': 200, 'headers': < 'Content-Type': 'application/json' >, 'body': JSON.stringify(msg), 'isBase64Encoded': false >; >;
В консоли Яндекс.Облака это должно выглядеть примерно так:

Далее чуть ниже указываем Точку входа — index.bot, где index это имя файла (index.js), а bot — имя функции (module.exports.bot). Все остальные поля оставляем «как есть», и в правом верхнем углу нажимаем кнопку Создать версию. Через несколько секунд эта версия функции будет создана. В скором времени, после тестирования вебхука, мы создадим новую версию — Умные Мысли.

Объектное хранилище
Теперь, когда у нас создана Яндекс-функция, давайте, пока мы находимся в консоли Яндекс.Облака, создадим т.н. бакет (bucket, т.е. ведро по-русски, отнюдь не букет) для хранения файлов изображений, которые будут использоваться в нашем боте Умные Мысли. В левом навигационном меню выбираем пункт Object Storage, нажимаем кнопку Создать бакет, придумываем ему название, например, img-bucket, и, главное, Доступ на чтение объектов делаем публичным — иначе Telegram’у наших картинок не видать. Все остальные поля оставляем без изменений. Нажимаем кнопку Создать бакет.

После этого список всех бакетов может выглядеть примерно так (если это ваш единственный бакет):

Сейчас я предлагаю нажать на имя бакета, и внутри него создать папку, чтобы упорядочить хранение картинок для разных своих приложений. Например, для телеграм-бота Умные Мысли я создал папку под названием tg-bot-smart-thoughts (ничего, я пойму этот шифр). Создайте и вы какую-нибудь.

Теперь можно нажать на имя папки, зайти в неё и загружать файлы:

А нажав на имя файла — получить его URL для использования в нашем боте, и вообще — где либо (но, не публикуйте этот URL без надобности, поскольку трафик с Объектного хранилища тарифицируется).

Вот, собственно, и всё с Объектным хранилищем. Теперь вы будете знать, что делать, когда увидите призыв загрузить туда файлы.
Вебхук
Сейчас мы установим вебхук — т.е. когда бот получит обновление (например, сообщение от юзера), с сервера Telegram в нашу Яндекс-функцию будет отправлен запрос (request) с данными. Вот строка, которую можно просто вставить в адресное поле браузера, и затем обновить страницу (это надо сделать всего один раз): https://api.telegram.org/bot/setWebHook?url=
Только заменим на токен полученный нами от бота-отца при создании нашего бота, а — на URL нашей Яндекс-функции. Минутку! Но ведь РоссКомЦензур запрещает провайдерам в РФ обслуживать адрес https://api.telegram.org . Да, верно. Но вы придумайте что-нибудь. Ведь можно же, например, попросить об этом свою бабушку в Украине, Израиле или Канаде — там нет никаких «росскомцензур», и один бог ведает, как люди живут без этого (UPD: В РФ уже снята блокировка Telegram — поэтому просить бабушку теперь не обязательно). В итоге, запрос-ответ при установки вебхука должен выглядеть так:

Тестируем. Должно «зеркалить».

Так и есть. Наши поздравления — теперь Яндекс-функция стала Telegram-ботом!
Умные Мысли
А теперь делаем Умные Мысли. Код открыт и и лежит на GitHub. Он довольно хорошо прокомментирован, и в нём всего сотня строк. Читайте его как оперная дива либретто!

Склонируйте проект и установите зависимости:
git clone https://github.com/stmike/tg-bot-smart-thoughts.git cd tg-bot-smart-thoughts npm i
Внесите необходимые вам изменения в файл index.js (опционально; можно ничего не менять). Создайте zip-архив, с файлом index.js и папкой node_modules внутри, например, под названием smart.zip.

Теперь перейдите в консоле к нашей Яндекс-функции, выберите вкладку ZIP-архив, нажмите кнопку Выбрать файл, и загрузите наш архив smart.zip. Наконец, в правом верхнем углу нажмите кнопку Создать версию.

Через несколько секунд, когда функция обновится, протестируем снова нашего бота. Теперь он уже не «зеркалит», а поставляет умные мысли!

Ссылки
Заключение
На сегодня всё. Другие материалы следуют. Кому подобное читать интересно — подписывайтесь на уведомления о новых публикациях. Подписаться можно на этом сайте (кнопка Подписаться внизу), или на Telegram-канал IT Туториал Захар, или на одноимённое сообщество в VK, или Twitter @mikezaharov.
- Облачные вычисления
- Node.JS
- Яндекс API
- Облачные сервисы
- Голосовые интерфейсы
Как создать автоматизированную цепочку для Telegram чат-бота
Конструктор цепочек — главный инструмент настройки вашего бота, который будет приветствовать новых подписчиков, консультировать, продавать товары и уведомлять менеджера о вопросе подписчика в чат-боте. А также собирать данные и отправлять их к вам в систему для дальнейшей обработки.
Вам достаточно указать ключевые слова, определить структуру бота и переместить элементы, настраивая их друг за другом.
Ниже представлено подробное содержание для более удобной навигации по всем возможным стартам и элементам цепочки, которые можно добавить.
Содержание
Выбор старта цепочки
По умолчанию доступны «Приветственная серия», «Стандартный ответ» и «После отписки». Также вы можете создавать свои триггеры.
Выберите вашего бота. Перейдите на вкладку «Структура бота» и выберите тип запуска.

Приветственная серия
Отправляется сразу после подписки на ваш чат-бот, то есть сразу после нажатия кнопки «Запустить».
Подписаться можно, перейдя по ссылке на бот https://t.me/username, найдя бот в телеграме по @username , а также через виджет подписки.
Такая цепочка знакомит подписчика с вашим чат-ботом, в ней вы сможете рассказать о своем боте и его возможностях — чем чат-бот будет полезен подписчику, какую информацию может дать, как часто будет отправлять рассылки и какого содержания. Подключить приветственную серию можно к запуску других триггерных цепочек.

Стандартный ответ
Запускается в ответ на вопросы подписчиков вне рамок сценариев чат-бота, а также при отправке боту картинки. Тут вы можете добавить сообщение с текстом, что менеджер подключится в течение рабочего дня и ответ на ваш вопрос.
Можете выставить интервал запуска цепочки от 1 минуты до 24 часов — тогда бот не будет повторно запускаться.
После отписки
Цепочка с одним сообщением, которая запустится после команды отписаться — /stop или /unsubscribe .
Триггерная
Вы можете создавать свои слова — триггеры, на которые бот будет реагировать и запускать цепочку.
Нажмите «Создать новый триггер». Напишите команду из слова или нескольких слов. К примеру «Заказ», «Билеты», «Цена», «Тариф», «Доставка», «Условия доставки».
Тут также можно выставить запрет на повторный вызов.

После создания триггера нажмите «Создать цепочку» и начните ее редактирование.
Если пользователь введет часть вашей команды, бот предложит ему ответ в виде кнопки с названием вашего триггера — после нажатия на нее запустится цепочка.
Чтобы отключить эту функцию, перейдите в настройки чат-бота и выберите опцию «Отключать подсказки от бота при неточном соответствии в сообщении».

Конструирование цепочки
Важно продумать архитектуру и логику своего чат-бота, чтобы пользователь с легкостью нашел ответы на свои вопросы или успешно оформил свой заказ, предоставив нужную информацию.
Сформулируйте задачи бота, разбейте его функции на разделы, распишите взаимосвязи блоков и затем приступайте к созданию сценария чат-бота в конструкторе, добавляя элементы друг за другом.
Все элементы опциональны, вы можете остановится и на первом элементе «Сообщение», не добавляя остальные.
Рекомендуем ознакомиться со стратегиями и разновидностями чат-ботов составления бота на нашем блоге и в записях вебинара на нашем YouTube канале.
Старт
Вы можете выбрать первым элементом, с которого запускается цепочка, следующие блоки: «Сообщение», «Фильтр», «Случайный выбор», «Запрос API» или «Действие».
Например, через блок «Фильтр» и «Запроса API» можно проверить данные подписчика, и персонализировать общение, запустив цепочку только тем пользователям, у которых есть или нет запрашиваемых данных или разветвить цепочку и отправить разные сообщения. А с помощью блока «Случайный выбор» вы можете разнообразить автоответы бота или создать A/B тест.
Чтобы сделать блок стартовым элементом, соедините нужный элемент с блоком «Старт».

Чтобы посмотреть, какой триггер запускает цепочку, нажмите на блок «Старт».

Элемент «Сообщение»
C помощью элемента «Сообщение» вы можете создать сообщение любого типа и добавить к нему различные блоки: текст, видео, галерею, кнопки или запросить данные пользователя и подобное.

Элемент «Сообщение» можно вставлять и в разные места цепочки. К примеру, в последнем блоке цепочки вы можете поблагодарить читателя, подтвердить заказ и отправить информацию с собранными переменными, уточнив все ли верно.
Текст
В текстовом блоке наберите текст сообщения. Ограничение по длине одного текстового блока — 4000 символов. Вы также можете вставлять переменные для персонализации информации и эмодзи.
Для этого нажмите на <> в правом верхнем углу текстового поля и выберите нужную переменную из выпадающего списка. Каждому пользователю отправится сообщение со значением переменной из его контакта.

Вы можете добавить следующие переменные.
| Пользовательские переменные у контактов | Вы их можете передавать при подписке, задавать и менять вручную в « Аудитории » и автоматически в цепочке через элементы «Действие — установить переменную», «Ввод пользовательских данных» и «Запрос API». |
| Системные переменные бота | Можно вставить текст последнего сообщения подписчика с помощью last_message , добавить ID подписчика с помощью contact_id и ID подписчика в Telegram — telegram_id . |
| Глобальные переменные бота | Вы можете создать свои переменные в настройках бота и использовать сообщения с предварительно заданными значениями общими для всех подписчиков. По умолчанию доступны $bot_name , $bot_id и $current_date (текущая дата). |
Вы также можете форматировать текст, чтобы лучше визуализировать и выделить информацию.
Кнопка
Для того чтобы соединить элемент «Сообщение» с другими элементами, важно добавить обычную кнопку или элемент ввода данных. Это один из главных элементов коммуникации пользователя с ботом — благодаря кнопке подписчик вовлекается и задает направление дальнейшему сценарию бота.

Чтобы добавить кнопку, нажмите «+Добавить кнопку». Выберите тип кнопки: «Продолжить цепочку», «Ссылка» или «Оплата».

Задайте имя вашей кнопки, обратите внимание, что есть ограничение до 20 символов. Вы можете добавить эмодзи в текст кнопки.
Текст на кнопке должен быть понятным — важно, чтобы пользователь понимал, что произойдет после нажатия кнопки и что конкретно он выбирает. Следите, чтобы следующий блок соответствовал тексту кнопки, к которому он будет привязан, чтобы не нарушилась логика.
Для кнопки типа «Ссылка» вы также можете прикрепить ссылку на сторонний ресурс.
Чтобы пользователь мог продолжить цепочку по нажатию на кнопку со ссылкой, в настройках чат-бота во вкладке «Общие» вам нужно активировать опцию «Трекинг ссылок».
Также для кнопки типа «Ссылка» (URL) вы можете добавить ссылку на веб-приложение, например, на одностраничный интернет-магазин. Активируйте опцию «Открыть во всплывающем Web-App окне» (Open in web app pop-up), чтобы по ссылке открывался попап для перехода к приложению.
Вы можете создать интернет-магазин с товарами, корзиной, формой для сбора контактных данных и привязать ссылку к кнопке в Telegram. Пользователь может нажать кнопку, а затем оформить свою покупку в отдельном окне.
На самой странице можно добавить JS-код от Telegram, который работает с данными из мессенджера и передает информацию о подписчике.

Вы можете добавить до 13 кнопок и для типа «Продолжить цепочку» выбрать порядок их размещения — от 1 до 4 в ряд.

Для пользователя кнопки будут выглядеть следующим образом (использовали порядок размещения «1 в ряд» и «2 в ряд»):

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

Быстрые ответы (Клавиатурное меню)
Также вы можете добавить другой тип кнопок — «Быстрые ответы» (предустановленные ответы-подсказки для пользователей чат-бота). В отличие от функции «Ввод данных», «Быстрые ответы» не сохраняют информацию о пользователе, но вы можете их использовать, чтобы, к примеру, расширить допустимое количество кнопок и привязать каждую из них к следующему элементу и разделить ветви сценария.
Если вы активировали «Ждать ответ подписчика», кнопки быстрого ответа вне функции ввода пользовательских данных будут неактивны. То есть вам нужно использовать кнопки быстрого ответа только один раз — или в качестве быстрых ответов при вводе данных, или в качестве кнопок клавиатурного меню.
Кроме того, такие кнопки можно использовать как дополнительное меню, которое поможет улучшить навигацию чат-бота.
Чтобы добавить кнопки быстрого ответа, нажмите «Быстрые ответы» в панели редактирования блока «Сообщение» и введите название кнопки : emoji или текст до 20 символов. Для подстановки динамических значений вставьте имя переменной, сохраненной в аудитории, в виде > . Нажмите «Enter», чтобы сохранить кнопку.

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

Вы можете комбинировать «Быстрые ответы» и обычные кнопки, но пользователю отправится дополнительное сообщение с эмодзи.
После отправки следующего сообщения быстрые ответы пропадают. Для быстрого вызова сообщения с этими кнопками рекомендуем создать для него триггер и цепочку по нему. Затем поместить цепочку в меню, которое показывается пользователю всегда и раскрывается при нажатии значка «/»
Картинка
Разнообразьте информацию вашего сообщения визуальным контентом, который будет согласован с текстом.
Нажмите кнопку «Выберите файл», чтобы загрузить изображение с компьютера или устройства, или перетащите файл в поле загрузки. .

Ограничений по размеру изображения нет, но при добавлении картинки учитывайте, что разрешение картинки для Telegram будет 500px по ширине и 200px по высоте.
Чтобы загрузить картинку по ссылке, выберите «Загрузить изображение по URL» в выпадающем меню и укажите ссылку на картинку в поле.

Также вы можете указать динамический путь к изображению. К примеру, с помощью элемента «Запрос API» или из события a360, запуска цепочки по API вы можете передавать картинку товара и использовать эту переменную в следующем сообщении, отображая клиенту данные о заказе.
Для этого выберите переменную или укажите JSON path в поле и передавайте в значении переменной путь к картинке. Таким образом каждый клиент получит изображение по своему заказу.
Вы также можете добавить подпись к картинке и отправить информацию пользователю одним сообщением-карточкой. В подпись вы можете ввести до 1024 символов текста и разбить его на несколько строчек, а также добавить эмодзи, ссылки и переменные.

Карусель
Доступно на тарифе Pro и выше, а также на время бесплатного семидневного пробного периода
В пункте «Сообщения» нажмите «Добавить»и выберите «Карусель». Для каждой карты можно выбрать изображение, добавить до 3 кнопок, название до 32 символов и краткое описание до 80 символов.

Чтобы добавить новую карту в карусель, нажмите значок «+». Вы можете добавить до 10 карточек в одном сообщении.

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

Файл
Вы можете добавлять файлы в любом формате, кроме исполняемых файлов, размером до 20 МБ. Прикрепите билеты, карту, чек-листы, инструкции или другие дополнительные материалы.
Нажмите кнопку «Выберите файл» (Choose file), чтобы загрузить файл с компьютера или устройства или перетащите файл в поле загрузки.

Чтобы загрузить файл по ссылке, выберите «Загрузить файл по URL» в выпадающем меню и укажите ссылку на файл в поле.
Также можно указать динамический путь к файлу. Например, с помощью элемента «Запрос API» или из события a360, запуска цепочки по API вы можете передавать файл из и использовать эту переменную в следующем сообщении, отображая клиенту данные заказа.
Для этого выберите переменную или укажите JSON path в поле и передавайте в значении переменной путь к файлу. Таким образом, каждый клиент получит файл к своему заказу.
Медиафайлы: «Аудио» и «Видео»
Доступно на тарифе Pro и выше, а также на время бесплатного семидневного пробного периода
Вы также можете добавлять аудио- и видеосообщения в цепочки, которые будут проигрываться прямо в мессенджере. Максимальный размер загружаемого файла — 20 МБ.
Таким образом, к примеру, вы можете прикреплять видео лекции и голосовые консультации прямо в боте без отправки пользователя на сторонние ресурсы.

Задержка
Разбивайте большой текст на небольшие абзацы до 4 строк и разделяйте элементом «Задержка». Пауза имитирует индикатор печатания текста и дает передышку пользователю.
Нажмите «Добавить» и выберите элемент «Задержка». Укажите значение в секундах — от 1 до 5.

Ввод пользовательских данных
Вы можете собирать ответы от подписчиков и записывать их в переменную для дальнейшего использования. Подписчик может ввести производное значение, а вы настраиваете валидацию для этого значения — «Строка» (для текстовых значений), «Число», «Дата», «Телефон», «Емейл», «Ссылка», «Регулярное выражение», «Геолокация» и «Картинка или Документ».
Активируйте «Ожидает ответа подписчика». Выберите тип валидации, сообщение при неправильном вводе данных и переменную, в которую сохранять данные.
К примеру, у вас в блоке сообщения текст «Уточните количество билетов». Тип валидации будет «Число». Если пользователь введет не числовое значение, ему покажет ошибку.
Еще пример: «Оставьте ссылку на Ваш Facebook». Тип валидации нужно выбрать «Ссылка».
Чтобы отправить геолокацию, в чате чат-бота подписчик должен нажать на значок скрепки, выбрать «Геопозиция» и нажать «Отправить геопозицию». Чат-бот сохранит ссылку в указанную переменную.
Геолокация работает только в мобильных приложениях.

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

Под сообщением также можно создавать кнопки быстрого ответа — чтобы пользователь не вводил свои значения, а выбрал из существующих.
Для этого нажмите на «Быстрые ответы» в окне элемента «Ввод данных» и введите значение: emoji или текст до 20 символов. Для подстановки динамических значений вставьте имя переменной, сохраненной в аудитории, в виде > . Нажмите «Enter», чтобы сохранить кнопку. Ограничение по количеству кнопок — 10.

Вы можете добавить быстрые ответы для данных с типом валидации «Строка», «Число» и «Регулярные выражения». К примеру, для ввода пользователем конкретного слова, ввода количества товара, или выбора категории товара.
Для данных с типом валидации «Телефон» и «Email» мессенджер предлагает пользователю использовать контактные данные его учетной записи.
Вы можете разветвить сценарий и отправить следующее сообщение, в зависимости от того, пользователь ввел запрашиваемые данные (ветка по зеленой точке) или нет (ветка по красной точке).
В отличие от обычной кнопки: кнопки быстрого ответа — элемент бота, который записывает значение выбранной кнопки в переменную.
В то время как по нажатию на определенные обычные кнопки пользователь переходит на другой элемент вашей цепочки по сценарию либо переходит на внешний ресурс, который вы указали.
Перемещение элементов
По умолчанию каждый добавляемый элемент в блоке становится в конец. Наведите на элемент, который нужно переместить, и вы сможете сместить его вниз или вверх.

Продолжение цепочки
Соединить следующий элемент после блока «Сообщение» вы можете с помощью кнопок всех типов или функции «Ввод данных». Также вы можете продолжить цепочку, не дожидаясь ответа пользователя. Рекомендуем использовать вместе с блоком «Пауза», чтобы проверять, взаимодействовал ли подписчик с цепочкой, и отправлять сообщение через определенное время.
При планировании сценария цепочки обратите внимание, что вы не можете одновременно продолжить цепочку с помощью коннектора «Продолжить» и использовать функцию быстрых ответов.
Соединение элементов
Кликните на синий кружок в блоке и протяните линию от одного элемента к другому элементу, чтобы связать их.
Кликните на линию два раза, чтобы появились кнопки с удалением связи.
Непривязанный блок цепочки будет светится желтым, напоминая пользователю, что его необходимо подвязать.
Блок с незаполненными полями будет подсвечиваться красным. К примеру, вы выбрали кнопку, но не назвали ее, выбрали ссылку но не указали ее. Пока вы не заполните поля, вы не сможете выйти из элемента или конструктора с сохранением.
Элемент «Действие»
Элемент «Действие» виден только вам. Выберите на панели слева элемент и перетащите его после отслеживаемого блока.
После выберите, какое именно действие следует создать:
| Открыть чат | Открывает чат с подписчиком в разделе «Диалоги» |
| Отписать от бота | Отключает подписчика от получения массовых и автоматических рассылок бота |
| Добавить или удалить тег | Присваивает тег подписчику, удаляет присвоенный пользователю тег |
| Установить переменную | Устанавливает значение переменной, которая присвоится или обновится для подписчика. Также можно создать новую переменную |
| Отправить вебхук | Отправляет POST запрос с данными подписчика на ваш URL |
| Создать сделку | Создает сделку в CRM при выполнении определенного действия, например, нажатии кнопки «Купить» |
| Заблокировать или разблокировать в группе или канале | Блокирует или разблокирует подписчика в выбранной группе или канале |
| Оповестить меня | Отправляет сообщение в системный бот или группу Telegram, где чат-бот добавлен администратором. |

Элемент «Запуск цепочки»
Вы можете облегчить структуру вашего бота, перекинув читателя на другую цепочку.
После выбора действия «Цепочка» выберите из выпадающего списка созданную ранее цепочку.

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

После добавления условий добавьте к каждому из вариантов выполнения условия (зеленая точка) или невыполнения условия (красная точка) на следующие элементы цепочки.

Элемент «Пауза»
Это период, в течение которого подписчику не отправляются автоматические сообщения. Пауза может быть установлена в минутах, часах или днях.
Вы можете выбрать паузу в промежутке, используя опцию «Временной период», или до определенного времени, используя опцию «До времени» и «До даты».
Выберите «Временной период» и установите паузу между отправкой элементов цепочки от 1 минуты до 24 часов. Используйте ее в цепочке, к примеру, для прогрева клиента. Через указанное время отправится следующее сообщение.

При выборе паузы между блоками в 1 день и более можно установить время — в котором часу отправлять сообщение. Следующим днем считается проход часовой стрелки через 00:00 по часовому поясу, выставленному в настройках личного кабинета.
Также вы можете выбрать «До времени» или «До даты» и установить задержку до определенного времени. К примеру, вы можете использовать эту опцию для обозначения рабочего времени или времени действия акции.

Также с помощью элемента «Пауза» вы можете задавать условие выполнения следующего элемента цепочки: отправлять всегда или при неактивности подписчика.

Элемент «Запрос API»
Доступно на тарифе Pro и выше, а также на время бесплатного семидневного пробного периода
Выполняйте запрос на сторонний сервер, чтобы создать объекты или получить информацию. Получайте данные и используйте их далее в боте.
Полученные данные вы можете записать в переменную или добавлять в следующее сообщение в виде JSONPath.
Выберите на панели слева элемент «Запрос API» и перетяните его после блока, с которого начнется ваше разветвление сценариев. Выберите тип запроса и введите URL, на который отправится запрос.

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

Элемент «Случайный выбор»
Настраивайте рандомную отправку элементов чат-бота, разветвляя его сценарий, чтобы устраивать квизы, турниры и A/B тестирования.
Перетащите элемент «Случайный выбор» на рабочую область, соедините его с элементом, от которого у вас начинается разветвление сценария.
Сохранение и запуск цепочки
После добавления всех блоков и проверки связей между ними сохраните цепочку перед выходом. Для этого справа сверху нажмите на кнопку «Сохранить и отправить себе», чтобы протестировать цепочку и проверить, все ли работает корректно.
Также вы можете сохранить обновленную версию цепочки, оставив при этом текущую версию без изменений. Для этого нажмите «Сохранить цепочку как новую». Новая цепочка сохранится в раздел «Цепочки».
Обратите внимание, что в цепочке должен быть как хотя бы один блок «Сообщения» или «Действия».
И затем можете выбирать «Сохранить и выйти».
Управление цепочками
Вы можете включать и выключать цепочки. Для этого выберите интересующую вас и переключите на нужный режим.
Выключенные цепочки будут светится серым.

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

Вы также можете отслеживать статистику нажатий на кнопки в сообщениях цепочки. Кликните цифру на кнопке, чтобы посмотреть, кто нажимал на кнопку.

Также можно отслеживать статистику по пользователям, для которых сработали элементы «Действие» и «Пауза». Кликните цифру на кнопке, чтобы посмотреть, кто прошел через этот блок.