Наш магазин на eBay Наш магазин на AliExpress Наш канал в telegram

Инструкция по созданию Telegram ботов. Часть 1. Что такое Telegram боты и как они работают

Одна из самых крутых фишек мессенджера Telegram — это боты. О них сегодня и пойдёт речь.

В мессенджере Telegram, есть особые аккаунты, операторами которых могут являться не люди, а специальным образом написанные программы, расположенные на сторонних ресурсах (не на серверах Telegram). Эти программы-операторы называются ботами. Боты могут получать адресованные им сообщения, а также генерировать и отправлять ответные сообщения. Всё это они делают через свой аккаунт, используя специальный API.

API для создания ботов является открытым (вот ссылка), соответственно, любой желающий может создать для бота аккаунт в Telegram и прикрутить к нему свою программу-оператора.

Взаимодействие Telegram и внешней программы-оператора (то есть бота) осуществляется через http-запросы с помощью набора предоставляемых API методов.

Когда бот отправляет запросы — он авторизуется в Telegram с помощью специального уникального ключа, называемого токеном. Такая авторизация позволяет Телеграму быть уверенным, что данный конкретный запрос поступил именно от нашего бота.

Токен мы получаем при регистрации в Telegram нового бота и его нужно беречь от посторонних глаз. Любой, кто завладеет токеном сможет посылать запросы от имени нашего бота и получать предназначенные боту данные. Если токен был скомпроментирован — его можно перевыпустить (сгенерировать заново), при этом старый токен будет считаться утратившим силу и перестанет открывать доступ к аккаунту бота. Подробнее о получении токена и его перевыпуске можно прочитать во второй части этой статьи.

Получение данных от Telegram возможно двумя способами:

  • webhook
  • long polling

При работе через вебхуки обо всех изменениях в чатах, каналах и группах, в которых участвует наш бот, ему сразу же сообщает Telegram, отправляя в http-запросах структуры данных, называемые апдейтами (Updates). Полная структура апдейтов (объекты, поля, типы данных и всё остальное) есть на страничке с описанием API для создания ботов (ссылка выше). Добавлю только, что все данные прилетают из Telegram в виде json-объектов, так что их очень удобно распарпарсивать, например, средствами того же php.

Webhook — удобная и быстрая штука, но его использование требует от нас некоторых дополнительных телодвижений:

  • Во-первых, мы должны рассказать Телеграму где расположена программа-оператор. Чтобы Телеграм мог найти нашего бота, используя систему DNS, нам нужно иметь место на хостинге и зарегистрированный интернет-домен. Проще говоря, чтобы сказать где нас искать — нужно получить в сети какую-то постоянную прописку. Далее мы просто заливаем к себе на сайт программу-оператор и сообщаем мессенджеру о том, где она расположена. Это называется «установить webhook».
  • Во-вторых, Telegram согласен отправлять нам запросы исключительно по защищённому протоколу https. То есть нам нужна поддержка хостингом этого протокола и SSL-сертификат. Благо, сейчас почти все хостинги бесплатно выдают сертификат SSL начального уровня (это как раз без разницы) и поддерживают https (по-крайней мере мой хостер — поддерживает и выдаёт).

Подробно о том, как устанавливать и использовать вебхуки, написано в третьей части этой статьи.

В случае с методом longpolling бот должен сам периодически запрашивать апдейты у Telegram, используя метод getUpdates. Опрос должен происходить не реже 1 раза в сутки, поскольку дольше Telegram не согласен хранить апдейты. Кроме того, воспользоваться методом getUpdates можно только в том случае, если для бота не установлен webhook.

В случае с longpolling мы должны выбрать компромисс между оперативностью получения данных и ресурсами, затрачиваемыми на опрос серверов Telegram.

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

Слишком частый опрос может вызвать слишком большую нагрузку на ваш сервер (как в плане трафика, так и в плане ресурсов), поскольку в этом случае приходится гонять по сети и обрабатывать очень много бесполезной информации (формировать и посылать на сервера Telegram запросы, ответами на которые будут сообщения, что нам ничего не прислали).

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

Метод longpolling подробно разобран в пятой части этой статьи.

Всё, с обзорной вводной частью на этом закончим, а далее будем по порядку и более детально разбираться с регистрацией аккаунта бота и обоими методами взаимодействия бота с мессенджером Telegram.

  1. Часть 1. Что такое Telegram боты и как они работают
  2. Часть 2. Регистрация аккаунтов Telegram ботов в картинках
  3. Часть 3. Пишем простого чат-бота для Telegram на чистом php (webhook)
  4. Часть 4. Прикручиваем MySQL к чат-боту для Telegram на php (webhook)
  5. Часть 5. Пишем Telegram бота на php для работы через longpolling
  6. Часть 6. Делаем пользовательскую клавиатуру для бота
  7. Дополнение. Как отправлять правильные https-запросы через curl и при чём здесь SSL-cертификаты

Добавить комментарий