Как на самом деле устроен бот?

Как на самом деле устроен бот?

@BotObzor

Бот - это специальный аккаунт в Телеграме, управляемый с помощью программы.

Бот, как и любое приложение или сайт, состоит из двух базовых вещей: фронтенда и бэкенда.

Фронтенд.

Фронтендом называют все то, что видит пользователь бота, взаимодействуя с ним. Это команды, сообщения, кнопки, и все, что видно пользователю в боте. Это интерфейс бота.

Фронтенд - важная часть бота, от него зависит насколько удобно пользоваться ботом.

Общая схема работы бота

Бэкенд.

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

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

Для того чтобы компьютер понял алгоритм, его переводят на язык программирования. Я использую язык Python, потому что считаю его стильным, удобным и очень перспективным в области обработки данных.

Скрипт.

Скрипт "общается" с серверами Телеграм с помощью объектов и методов Telegram Bot API.

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

Скрипт может обращаться к любому внешнему ресурсу в интернете за информацией. Например, за курсом биткоина на биржу или открыть Инстаграм публикацию и сохранить все комментарии, как в моем боте @instagram_activity_bot.

Так же к скрипту можно подключить различные готовые программные библиотеки для обработки информации. Например, можно не писать код с нуля для обучения нейросетей, а подключить библиотеку TensorFlow. Или подключить библиотеку для теханализа курса криптовалюты TALib. Для различных задач существует куча разных библиотек.

Telegram Bot API.

Bot API - это интерфейс взаимодействия между скриптом и сервером Телеграм. Здесь можно выделить две сущности - это объекты и методы.

Информация о действии пользователя в боте отправляется на сервер со скриптом в виде специального JSON-объекта.

Скрипт управляет ботом с помощью методов Bot API. Есть методы для отправки сообщений, методы для создания клавиатуры и т.д.

Объекты Telegram Bot API.

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

JSON-объект - это по сути текст, подробно описывающий действие, которое совершил пользователь в боте, в виде множества пар Ключ: Значение.

Вот кусочек подобного объекта, формирующегося при первой команде /start:

"message": 
 {
  "message_id":1, 
  "from":   
  {
   "id":44296578, 
   "is_bot":false, 
   "first_name":"ALMAZ", 
   "username":
     "FeelMyFuckingMojo", 
   "language_code":"ru-RU"
  },
   "date":1537460410, 
   "text":"/start", 
 }

Этот объект может нам сообщить, что пришло сообщение с командой /start от пользователя с именем ALMAZ и всю подробную информацию о сообщении. Мы можем заметить здесь поля:

id - уникальный id пользователя, с помощью него осуществляется взаимодействие с пользователем;

message_id - id сообщения, можно понять, что это первое сообщение пользователя в боте;

text - текст сообщения от пользователя;

date - дата и время получения сообщения в формате Unix time;

first_name, username - имя и юзернейм пользователя бота.

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

Далее эта информация отправляется на сервер бота, где находится скрипт.

Методы Telegram Bot API.

Методы нужны для того, что бы с помощью скрипта манипулировать действиями бота в Телеграме. Самый часто используемый метод - это sendMessage, с помощью него отправляются все текстовые сообщения, причем не только пользователям, еще в группы и каналы. Еще примеры методов: sendAudio, sendVideo, sendLocation, kickChatMember, pinChatMessage, editMessageText и т.д.

Все методы осуществляются путем отправки http-запроса на URL адрес. Пример запроса к Telegram Bot API метода sendMessage:

https://api.telegram.org/bot<ваш_токен_бота>/sendmessage?id=<ваш_айди>&text=<ваш_текст>

Если вы вставите токен вашего бота вместо квадратных скобочек, ваш айди и текст, затем откроете эту ссылку в браузере, то бот отправит вам ваш текст.

На самом деле все не так сложно.

Методы и объекты Telegram Bot API кажутся сложными для понимания и работы с ними, но на самом деле это не так. Есть специальные библиотеки для удобной работы с ними. С помощью них разработчики больше не изобретают велосипеды, уменьшают количество технической работы и больше сосредотачиваются на творчестве.

Статья подготовлена каналом @BotObzor.

Report Page