Главная · Блог · Как создать Telegram-бота

Как создать Telegram-бота

· обновлено · Команда ЧБТ · Telegram, Старт

Telegram-бот состоит из двух половин. Первая — учётная запись бота в самом Telegram: её выдаёт @BotFather, и она одинакова для всех — что для банка, что для салона красоты. Вторая — логика ответов: кто-то должен принимать сообщения и решать, что отвечать. Раньше вторую половину писали на Python и держали на сервере; в конструкторе она собирается из блоков. Ниже — весь путь без пропусков: от команды /newbot до проверки на живом телефоне, включая то, что обычно остаётся за кадром — оформление бота, команды в меню и что делать, если токен утёк.

Две половины бота: что делает Telegram, а что — конструктор

Когда человек пишет вашему боту, Telegram не отвечает сам. Он доставляет сообщение туда, куда указал владелец бота: либо ваш код регулярно спрашивает «есть новые сообщения?» (long polling), либо Telegram сам присылает каждое сообщение на заданный адрес — это называется webhook. ЧБТ работает по второй схеме: при подключении канала он сообщает Telegram адрес вида https://app.chbt.io/webhook/telegram/ID_канала с секретным токеном, и дальше все сообщения приходят в ваш проект. Свой сервер, домен и сертификат не нужны.

Из этого следует практическое разделение обязанностей. Всё, что касается «личности» бота — имя, ссылка, аватар, описание, список команд в меню, — настраивается у @BotFather и живёт в Telegram. Всё, что касается поведения — что бот говорит после /start, какие кнопки показывает, куда сохраняет телефон, когда зовёт человека, — настраивается в разделе «Сценарии» ЧБТ. Перепутать сложно: если хотите поменять аватар — идёте к BotFather, если текст приветствия — в сценарий.

Одна учётная запись бота может быть подключена только к одному «мозгу» одновременно: у Telegram один webhook на бота. Поэтому если бота раньше запускали своим кодом или в другом сервисе, при подключении к ЧБТ старая связь перезапишется — об этом ниже, в ошибках.

Шаг 1. BotFather: /newbot, имя и username

Найдите в поиске Telegram @BotFather — у настоящего синяя галочка верификации, поддельных «ботфазеров» с похожими именами несколько, и они существуют ради кражи токенов. Отправьте /newbot. BotFather спросит две вещи по очереди.

Имя (name) — то, что люди видят в шапке чата и в списке диалогов: «Салон Мята», «Поддержка Nordwood». До 64 символов, любые буквы и эмодзи, можно менять потом командой /setname. Не пишите в имени слово «бот» — оно и так будет видно по ссылке.

Username — уникальный адрес вида @myata_salon_bot. Правила жёсткие: 5–32 символа, только латиница, цифры и подчёркивание, обязательно заканчивается на bot (регистр не важен: Bot, _bot). Username нельзя поменять после создания — только удалить бота и завести нового. Короткие варианты почти все заняты: если BotFather отвечает «Sorry, this username is already taken», добавьте город или сферу: myata_kazan_bot. Проверить занятость заранее можно, просто открыв t.me/имя в браузере.

После этого BotFather пришлёт сообщение с поздравлением и токеном — строкой вида 7123456789:AAHx…. Это пароль бота: тот, у кого он есть, может читать все сообщения и писать от имени бота. Не пересылайте его в рабочие чаты, не вставляйте в скриншоты и не храните в заметках телефона. Единственное место, куда он должен попасть, — поле «Токен» в разделе «Каналы» ЧБТ. Если сообщение с токеном потеряли, его можно получить снова: /mybots → выбрать бота → «API Token». Подробнее о токене — в справке.

Шаг 2. Оформить бота: аватар, описание, команды

Этот шаг чаще всего пропускают, а зря: человек видит оформление до первого сообщения и по нему решает, нажимать ли «Start». Все команды отправляются BotFather, он попросит выбрать бота из списка и прислать значение.

  • /setuserpic — аватар. Квадратная картинка, логотип на однотонном фоне читается лучше фотографии интерьера. Без аватара бот выглядит заброшенным.
  • /setdescription — текст «Что может делать этот бот?», который показывается на пустом экране до нажатия «Start». До 512 символов. Пишите конкретно: «Запишу на маникюр или стрижку, отвечу по ценам и адресу. Работаем ежедневно с 10 до 21». Это ваш первый рекламный текст, и он бесплатный.
  • /setabouttext — короткая строка в профиле бота, до 120 символов. Её видно, когда человек открывает карточку бота или когда ссылку на него пересылают.
  • /setcommands — список команд для кнопки «Меню» слева от поля ввода. Формат: одна команда на строку, команда - описание, например start - Начать, price - Цены, address - Как добраться. Латиница, без слэша.

Команды из меню — это обычные текстовые сообщения вида /price. В ЧБТ /start обрабатывается отдельным триггером «Команда /start», а остальные команды ловятся триггером «Ключевое слово» в режиме «точно»: заведите ключевое слово /price и направьте его на ветку с прайсом. Так меню в Telegram и сценарий в ЧБТ работают согласованно.

Ещё две настройки в /mybots → Bot Settings стоит проверить сразу. Allow Groups? — если бот нужен только в личных сообщениях, выключите: его не смогут добавить в группы, где он бесполезен. Group Privacy — если бот всё же будет в группе, помните: в режиме privacy он видит только команды и сообщения с обращением к нему. Сценарии ЧБТ рассчитаны на личный диалог с клиентом, групповые чаты — не их задача.

Шаг 3. Подключить бота в ЧБТ

Зарегистрируйтесь на app.chbt.io — нужны e-mail и пароль. Создайте бота (в ЧБТ «Бот» — это проект, к которому подключаются каналы). Откройте раздел «Каналы»: там четыре карточки — Telegram, MAX, ВКонтакте и «Виджет на сайт». Нажмите «Подключить Telegram», заполните два поля: «Название канала» (для себя, например «Основной бот») и «Токен» — та самая строка от BotFather. Вставляйте её целиком, без пробелов по краям. Нажмите «Подключить».

В этот момент ЧБТ делает две вещи за вас: проверяет токен запросом к Telegram и устанавливает webhook на свой адрес с секретным ключом, чтобы никто не мог подсунуть боту фальшивые сообщения. Через секунду в таблице «Подключённые каналы» появится строка со статусом. «Работает» — всё в порядке; если поле «Название канала» оставили пустым, вместо него подставится username бота. «Ошибка» — ниже мелким текстом будет причина: чаще всего «Unauthorized» (токен неверный или неполный). Исправить — удалить канал кнопкой «Удалить» и подключить заново с правильным токеном; редактировать токен в существующем канале нельзя. Кнопка «Переустановить webhook» нужна, когда бот работал, а потом перестал — например, кто-то запустил старый код, который сбросил webhook.

Дальше ЧБТ следит за здоровьем канала сам: если Telegram однажды ответит, что токен отозван (ошибка 401), статус переключится на «Ошибка», а владельцу проекта уйдёт письмо. Ждать жалоб от клиентов не придётся.

На Бесплатном тарифе — один бот и 30 диалогов в месяц, но все каналы включены: тот же проект можно одновременно подключить к MAX и ВКонтакте, сценарий один.

Шаг 4. Первый сценарий из шаблона

Пустой бот отвечает тишиной: нужен сценарий. Быстрее всего начать с шаблона. Откройте раздел «Сценарии», создайте сценарий и в редакторе нажмите «Из шаблона» — или выберите готовый на странице шаблонов и нажмите «Использовать шаблон». Для первого бота подходят три: «Сбор заявок» (имя → телефон → спасибо), «Автоответчик FAQ» (ключевые слова про цены и график, иначе — оператор) и «Запись клиентов» (услуга, время текстом, телефон).

Посмотрите, из чего состоит шаблон. В начале — триггер «Команда /start»: он срабатывает при первом открытии бота. Дальше блок «Сообщение» с приветствием и кнопками, за ним «Сбор данных» с проверкой формата телефона и блок «Действие» с уведомлением вам. Ваша работа на этом этапе — заменить тексты: название компании, реальные услуги в кнопках, рабочее время. Не переписывайте структуру в первый вечер, сначала запустите как есть.

На Бесплатном тарифе редактор открывается в режиме «Шаги» — линейный список блоков сверху вниз, без стрелок. На Базовом появляется «Холст» — визуальная схема с ветками. Для сценариев из шаблона «Шагов» достаточно. Изменения сохраняются автоматически; кнопка «История» открывает историю версий и позволяет откатиться, если что-то сломали.

Две вещи, без которых бот всё равно будет молчать. Первая — сценарий нужно включить: на странице «Обзор» в списке сценариев напротив каждого стоит кнопка «Вкл»/«Выкл». Новый сценарий, а также копия, созданная кнопкой «Дубликат», выключены по умолчанию. Вторая — добавьте триггер «Любое сообщение» в конец: он поймает тех, кто вместо «Start» напишет «привет» или «сколько стоит», и вернёт их в меню. Без него такое сообщение уйдёт в пустоту. Что писать в первом сообщении, чтобы человек не закрыл бота, — отдельная тема, разобрана в статье о приветственном сообщении бота.

Шаг 5. Проверить: тест-чат и живой Telegram

Проверка идёт в два этапа, и второй нельзя пропускать.

В редакторе. Кнопка «Проверить сценарий» открывает тест-чат прямо рядом со схемой: вы пишете как клиент, бот отвечает по сценарию, кнопки нажимаются. Здесь удобно ловить логику — не ту ветку, опечатку в тексте при ошибке ввода, забытый блок после сбора телефона. Тест-чат не требует подключённого канала: он ведётся от имени служебного контакта «Тест» и в месячный лимит диалогов не входит.

В Telegram. Откройте t.me/ваш_username_bot на телефоне и нажмите «Start». Должно прийти приветствие с кнопками в течение секунды-двух. Пройдите сценарий до конца: нажмите кнопку, введите телефон с ошибкой — убедитесь, что бот переспросил вашим текстом, — затем правильный. После этого откройте кабинет: в «Диалогах» появилась переписка, в «Контактах» — карточка с вашим именем из профиля и телефоном, на почту пришло письмо о новой заявке (если включено в «Аккаунт → Уведомления»).

Проверьте ещё три мелочи, которые не видны в тест-чате. Кнопка «Меню» показывает команды из /setcommands, и каждая из них ведёт в нужную ветку. Ссылка с параметром t.me/ваш_bot?start=test открывает бота — так работают диплинки для рекламы и QR, их можно направить на отдельный триггер «Диплинк». И наконец, попросите кого-то из коллег пройти сценарий со своего аккаунта: вы как владелец уже знаете, куда нажимать, а посторонний человек найдёт неочевидное. Каждый новый собеседник — один диалог из тридцати в месяц на Бесплатном тарифе, так что тестируйте вдумчиво.

Если токен утёк: /revoke и пересоздание канала

Признаки утечки: бот отвечает не по вашему сценарию, в «Каналах» статус внезапно «Ошибка» с текстом про webhook, или вы просто обнаружили токен в общем чате, публичном репозитории или на скриншоте, который отправили подрядчику. Во всех случаях порядок один.

  1. У BotFather: /mybots → выбрать бота → «API Token» → «Revoke current token». Или командой /revoke. Старый токен перестаёт работать мгновенно, новый показывается на экране. Бот при этом не удаляется: имя, username, аватар и подписчики остаются.
  2. Канал в ЧБТ со старым токеном перейдёт в статус «Ошибка» — при первой же попытке отправить сообщение Telegram ответит 401, и владелец получит письмо. Зайдите в «Каналы», удалите этот канал и подключите Telegram заново с новым токеном.
  3. Контакты сохранятся: в ЧБТ они привязаны к проекту и Telegram ID человека, а не к каналу. Бот продолжит узнавать тех же клиентов, а их карточки и теги останутся на месте.
  4. Подумайте, откуда утёк токен, и закройте дыру: удалите сообщение из чата, перепишите историю репозитория, смените пароль от аккаунта Telegram, если подозреваете доступ к нему.

Профилактика короткая. Токен вставляют только в поле «Токен» в «Каналах» — ЧБТ хранит его в зашифрованном виде и после сохранения не показывает в интерфейсе. Доступ к боту сотрудникам дают через раздел «Доступ» с ролью «Оператор» или «Админ», а не пересылкой токена. Если подрядчик настраивал бота и ушёл — отзовите токен в тот же день.

Типовые ошибки первого дня

Что видитеПричинаЧто сделать
BotFather: «username is already taken»Адрес занят другим ботомДобавить город или нишу в username; проверить свободные варианты через t.me/имя
В «Каналах» статус «Ошибка: Unauthorized»Токен скопирован не целиком, с пробелом, или уже отозванУдалить канал, получить актуальный токен в /mybots → API Token, подключить заново
Бот открывается, на «Start» тишинаСценарий не включён или в нём нет триггера /start«Обзор» → список сценариев → «Вкл»; проверить, что первый триггер — «Команда /start»
Бот отвечал, потом перестал; в «Каналах» всё «Работает»Старый код или другой сервис перехватил webhookОстановить старый код; нажать «Переустановить webhook»

Здесь только то, что связано с BotFather и токеном — то есть с шагами этой статьи. Остальные причины молчания — нет триггера «Любое сообщение», исчерпан лимит Бесплатного тарифа, Group Privacy в группах, пустые кнопки — собраны в чеклисте «Бот Telegram не работает», а подробно, в формате «симптом → проверка → решение», — в разборе почему Telegram-бот не отвечает.

Что дальше: другие каналы, оператор, заявки

Бот в Telegram — это первый канал, а не потолок. Тот же сценарий без переделки подключается к MAX и ВКонтакте: в «Каналах» добавляете токен MAX или ключ сообщества VK, и бот отвечает там теми же блоками. Заявки со всех каналов собираются в одних «Контактах», переписка — в одних «Диалогах». Как получить токен в MAX и чем он отличается от Telegram, разобрано в статье как создать бота в MAX.

Второй шаг после запуска — научить бота вовремя замолкать. Блок «Оператор» передаёт диалог человеку: сообщение попадает в «Диалоги», приходит уведомление, вы отвечаете из кабинета, и клиент видит ответ в Telegram. Поставьте этот блок на кнопку «Задать вопрос» и заведите отдельный сценарий с триггером «Ключевое слово» оператор → «Оператор»: ключевое слово срабатывает даже посреди вопроса про телефон, поэтому человек, которому не даётся формат номера, не застрянет — подсказку «или напишите «оператор»» впишите в «Текст при ошибке» блока «Сбор данных».

Третий — данные. Каждый телефон и e-mail из блока «Сбор данных» уже лежит в «Контактах» с возможностью выгрузить CSV. Если нужна ваша CRM — действие «HTTP-запрос» отправит заявку туда. Когда конструктора мало — свой биллинг, нестандартные API, нагрузка уровня банка, — пишут код. Для сообщений, кнопок, веток, заявок и передачи оператору конструктора хватает, а внешние системы подключаются через webhook.

На всё описанное выше уходит один вечер: полчаса у BotFather, десять минут в «Каналах», час на тексты в шаблоне и полчаса на проверку с телефона. Создать Telegram-бота бесплатно →

Ещё в блоге