Как на самом деле устроен бот?
@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.