Ваш Telegram-бот — это строка символов, и три правила определяют, что он может делать.
BotFather выдаёт токен примерно за минуту. Большинство первых ботов останавливает не код, который идёт дальше: это приватный режим в группах, одно сообщение в секунду в чате и примерно тридцать в секунду при массовой рассылке. Все три параметра опубликованы.
Michael ChenДва поисковых запроса всегда идут рядом, когда кто-то начинает разбираться в этой теме: токен и chat id. Эта пара — вся проблема новичка в миниатюре. Первое люди получают за минуту, а потом обнаруживают, что боту некуда говорить.
Так что это не сравнение фреймворков. Это про то, что такое токен, что останавливает бота, когда он у вас уже есть, и три опубликованных лимита, которые определяют форму всего, что вы строите.
Что на самом деле даёт BotFather
Откройте чат с собственным ботом Telegram для создания ботов, отправьте /newbot, ответьте на два вопроса. Документация Telegram описывает этот процесс точно: он запрашивает имя и username, а затем генерирует токен авторизации.
Этот токен и есть бот. Это строка с числовым префиксом и длинным секретом после двоеточия, и сам Telegram говорит, что токен авторизует бота и требуется для отправки запросов к API. Никакого отдельного пароля, аккаунта для входа или второго удостоверения нет. Любой, у кого есть эта строка, полностью контролирует бота — именно поэтому он должен храниться в переменной окружения, а не в репозитории, скриншоте или групповом чате.
В этот момент у вас есть работающий бот, который ничего не делает, потому что никто его не слушает. Это правильное состояние, и именно здесь начинается настоящая работа.
Правило первое: в группе ваш бот намеренно глух
Это самый частый отчёт «мой бот сломан», и это задокументированное поведение, а не баг. Telegram заявляет, что по умолчанию все боты, добавленные в группы, работают в режиме конфиденциальности и видят только релевантные сообщения и команды.
Так что бот в группе не получает обычные разговоры. Он получает сообщения, адресованные ему, и команды — и это задумано. Если вы строите модерационного бота, которому нужно читать всё, вы осознанно меняете эту настройку через BotFather. Если вы делаете помощника, который отвечает на вопросы, оставьте как есть: настройка по умолчанию сохраняет приватность и избавляет вас от огромного объёма ненужных обновлений.
Смежное правило, которое ловит тех, кто строит связки «бот-бот»: Telegram решил, что боты вообще не видят сообщения от других ботов, независимо от режима, — специально, чтобы они не зацикливались. Два ваших собственных бота не могут общаться напрямую.
Правило второе: одно сообщение в секунду на чат
Рекомендация Telegram прямая. В одном чате избегайте отправки более одного сообщения в секунду. Это сформулировано как совет, а не жёсткая стена, что на практике означает: лимит enforced тем, что бот ждёт, а не тем, что отказ приходит сразу.
Последствие для дизайна стоит усвоить рано: бот, который отвечает на вопрос шестью короткими сообщениями, в шесть раз медленнее для этого пользователя, чем тот, кто отвечает одним сообщением, — и это ощущается. Собирайте один ответ, а не ведите повествование.
Правило третье: тридцать в секунду при массовой рассылке и арифметика, которая из этого следует
Для массовых уведомлений Telegram заявляет, что боты не могут рассылать более примерно тридцати сообщений в секунду.
Сделайте арифметику до того, как проектировать функцию рассылки, потому что она безжалостна. Десять тысяч подписчиков при тридцати в секунду — это чуть больше пяти с половиной минут непрерывной отправки, если предположить, что ничего не падает и ничего не повторяется. Сто тысяч — это почти час. Любой бот, чья цель — анонсировать что-то большому списку, на самом деле очередь с ботом на конце, и если строить его как простой цикл, рассылка будет идти ещё долго после того, как новость устарела.
Практические ответы обычные: отправляйте в канал и дайте подписчикам тянуть, а не толкайте каждому пользователю индивидуально; или примите очередь и показывайте прогресс. Выбирайте осознанно, в самом начале.
Первая версия, которая намеренно маленькая
Telegram просит всех разработчиков поддерживать небольшой набор базовых команд и ставит /start на первое место в списке как команду, которая начинает взаимодействие с пользователем. Также он просит отвечать на все сообщения, отправленные вашему боту. Между этими двумя строками у вас есть спецификация для первой версии.
- Отвечайте на
/startкратким описанием того, что делает бот. Это первое, что видит каждый пользователь, и единственный экран, на который можно рассчитывать. - Сопоставьте несколько реальных повторяющихся вопросов, взятых из сообщений, на которые вы уже отвечаете вручную, а не из угаданного списка.
- Никогда не молчите. Неопознанный ввод должен получать ответ «человек свяжется с вами», потому что бот, который ничего не говорит, выглядит сломанным, а бот, который говорит «я не понял, кто-нибудь свяжется с вами», выглядит работающим.
Сделайте этот цикл надёжным, и всё после него — запланированные посты, модерация групп, поиск по базе данных — будет дополнением, а не перестройкой.
Две вещи, которые нельзя купить, и одна, которую можно
Заметка о том, что есть и чего нет на этом маркетплейсе, — это очевидный вопрос на таком сайте.
Бота купить нельзя. Поиск по всем 16 735 активным объявлениям по слову в заголовке даёт три результата, и все три — что-то другое: консольная игра с «Bot» в названии, объявление Telegram, где бот — это механизм доставки, и объявление Facebook, где продавец передаёт права администратора через бота. Никто здесь не продаёт ботов, потому что токен бесплатный и занимает минуту.
Что вам может понадобиться — это обычный аккаунт Telegram для тестирования, чтобы не привязывать личный номер к боту, которого вы ещё отлаживаете, и номер для регистрации. И то и другое есть: аккаунты Telegram и номера для SMS-верификации. Гарантия на аккаунты в среднем двенадцать часов, так что проверяйте вход сразу, как только получите, а не в выходные.
Одна асимметрия, которую стоит знать, если вы строите что-то публичное: верификация Telegram распространяется на каналы, ботов и публичные группы. Ваш бот в списке подходящих. Аккаунт, с которого вы им управляете, — нет.
Справочник, который стоит держать открытым во время разработки, — это собственная документация Bot API Telegram. Всё, что процитировано на этой странице, взято из неё, и это единственный источник, который остаётся актуальным.
