Наш канал в telegram

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

  1. Часть 1. Что такое Telegram боты и как они работают
  2. Часть 2. Регистрация аккаунтов Telegram ботов в картинках
  3. Часть 3. Пишем простого чат-бота для Telegram на чистом php (webhook)
  4. Часть 4. Прикручиваем MySQL к чат-боту для Telegram на php (webhook)
  5. Часть 5. Пишем Telegram бота для работы через long polling

Одна из самых крутых фишек мессенджера 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 (по-крайней мере мой хостер — поддерживает и выдаёт).

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

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

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

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

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

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

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

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

  1. Часть 1. Что такое Telegram боты и как они работают
  2. Часть 2. Регистрация аккаунтов Telegram ботов в картинках
  3. Часть 3. Пишем простого чат-бота для Telegram на чистом php (webhook)
  4. Часть 4. Прикручиваем MySQL к чат-боту для Telegram на php (webhook)
  5. Часть 5. Пишем Telegram бота для работы через long polling

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