В большинстве случаев для разработки полноценных телеграм-ботов используются специализированные фреймворки и библиотеки. Они позволяют заметно упростить работу над проектом, поскольку весь основной функционал уже реализован. Однако не всегда необходимая функция может присутствовать в выбранной платформе, возможно разработчики еще не внесли необходимые обновления.
В этом случае можно использовать альтернативу – Bot API. Это исходный функционал от разработчиков мессенджера, который является основой для внешних библиотек. Далее подробнее будут рассмотрены возможности Telegram Bot API.
Возможности Telegram Bot API
Предварительно необходимо подробнее рассмотреть само понятие API.
API (аббревиатура от application programming interface, дословно переводится как программный интерфейс приложения). Упрощенно говоря, это набор методов, который позволяет взаимодействовать разным сервисам и программам. К примеру, сайт погоды предоставляет возможность запрашивать данные при помощи таких запросов и подробно описывает все доступные методы. Это позволяет легко интегрировать необходимый функционал в собственный проект, например, мобильное приложение, сайт, чат-бот и далее. Внешний интерфейс может быть любым – разработчику достаточно реализовать отправку нужных запросов на указанный адрес и разбирать полученный ответ для вывода в удобной для пользователей форме.
Telegram Bot API как раз и предоставляет разработчикам необходимый набор методов для управления телеграм-ботами. Доступны все основные инструменты – обработка сообщений, настройка прав доступа, работа с графикой и многое другое.
Какие API доступны разработчикам
Telegram предоставляет возможность использовать разные API, которые отличаются функционалом:
Telegram API. Основной низкоуровневый интерфейс, который обеспечивает основной функционал Telegram, включая подсистему защиту. Именно на нем основаны все официальные клиенты компании.
TDLib. Функционал библиотеки позволяет создавать сторонние клиенты для популярного мессенджера.
Bot API. Интерфейс ориентирован на разработку ботов, игр и приложений. Также заметно упрощает взаимодействие с отдельными пользователями и группами. Достаточно отправить подготовленный запрос, получить набор данных JSON и извлечь из него необходимые данные.
Bot Payments API. Реализует обработку платежей через интерфейс телеграм-ботов. Разработчики получают возможность продавать товары и принимать платежи от пользователей.
Gateway API – отдельный набор методов для передачи кодов авторизации. Большинство платформ продолжают использовать SMS-канал, однако за сообщения оператора обычно берет определенную плату. Для крупных сервисов это позволяет заметно сэкономить.
Создание бота
Первый этап – регистрация специального аккаунта и получение токена для работы с API. Для облегчения работы компания создала отдельного бота для разработчиков. Бот BotFather позволяет при помощи готовых команд создать и настроить нового бота. Процесс проходит в удобном пошаговом режиме и занимает буквально несколько минут. Для этого необходимо выполнить следующие шаги:
— открыть мессенджер и найти через встроенный поиск аккаунт BotFather. Важно использовать именно верифицированный аккаунт, рядом должна отображаться галочка;
— после нажатия кнопки «Start» сервис отобразит список доступных команд;
— для создания нового бота необходимо отправить команду /newbot;
— бот запросит основную информацию о боте: уникальный username (используется для поиска и идентификации) и понятное имя для пользователей. Требование для username: должно быть уникально, заканчиваться на «bot», может содержать латинские буквы, цифры и некоторые разделители.
Если все требования соблюдены, сервис создаст нового бота и пришлет токен, который обеспечивает связь с сервером. Токен представляет собой длинный набор символов, его необходимо хранить в надежном месте. Важно помнить, что если злоумышленники получат к нему доступ, они получат полный контроль над ботом. При возникновении подозрения на компрометацию данных необходимо повторно обратиться к BotFather, для этого используется команда /revoke.
Другие полезные команды бота:
/setname – изменить текущее имя выбранного бота;
/mybots – вывод всех зарегистрированных ранее ботов пользователя;
/setuserpic – добавление аватарки;
/setdescription – добавить описание бота (отображается в профиле);
/setcommands – настройка списка доступных команд;
/setabouttext – заполнение блока «О боте»;
/setjoingroups – активировать возможность работы в группах;
/setinline – активация inline-режима, который позволяет использовать бота в обычных чатах;
/deletebot – полное удаление бота.
Ограничения ботов
Для снижения нагрузки на сервер и защиты пользователей разработчики предусмотрели ряд ограничений. Это вынужденная мера, поскольку спамеры постоянно ищут новые способы для рассылки сообщений.
Список основных ограничений:
— они не могут инициировать новую переписку, пользователь должен отправить команду /start;
— управление группой возможно, только если бот добавлен одним из администраторов;
— загружать файлы более 50 Мб;
— максимальное количество сообщений в один чат – 20 в минуту, во все чаты можно отправлять не более 30 простых сообщений в секунду;
— если превысить данные лимиты, то бот получит временную блокировку. При фиксации сервисом повторных нарушений будут применены более серьезные меры, вплоть до полного отключения.
Метод для взаимодействия с ботом
Для использования Telegram Bot API можно использовать обычные HTTP-запросы на сервер. Будет приходить набор данных в формате JSON, что позволяет быстро пройти по структуре и извлечь нужную информацию. Для отправки запросов можно использовать разные способы.
Отправка при помощи обозревателя. Самый простой способ, который можно использовать для проверки работоспособности сформированного URL. Инструкция:
— открыть любой обозреватель и перейти на подготовленный адрес в формате: https://api.telegram.org/bot{токен}/{ HTTP-метод};
— отобразится страница, которая будет содержать полученный ответ.
К примеру, при использовании метода getMe можно получить всю основную информацию о боте, включая список разрешений, название, уникальный идентификатор.
Для реализации функционала бота часто используют язык программирования Python, который обладает рядом преимуществ. В частности есть большое количество библиотек, которые упрощают работу. Для отправки HTTP-запроса можно использовать библиотеку Requests, ответ будет выводиться в терминал используемой среды разработки.
Метод getUpdates для чтения сообщений от пользователей. После активации бота пользователи получают возможность вести с ним диалог. Для этого программист должен реализовать возможность отслеживать обновления чата при помощи метода getUpdates. В ответ будет получен JSON, который содержит много информации, включая информацию о последних сообщениях.
Для отправки сообщений используется метод sendMessage. В этом случае запрос будет уже сложнее, поскольку запрос должен содержать набор параметров, включая идентификатор чата и текст сообщения.
Для изучения всех доступных методов необходимо изучать документацию, их достаточно много для подробного описания в рамках одной статьи. Документация имеет понятную структуру, есть все необходимые примеры для работы.
Перечень часто используемых методов:
forwardMessage – пересылка определенного сообщения в другой чат;
copyMessage – копирование сообщения;
sendVoice – отправка аудио;
sendPhoto – отправка сообщения;
sendPoll – создание нового опроса;
banChatMember – блокировка пользователя в текущем чате;
setChatPhoto – смена аватарки в чате;
getUserProfilePhotos – получение аватарки указанного пользователя;
createChatInviteLink – создание новой ссылки-приглашения;
setChatTitle – изменение названия чата;
setMyCommands – редактирование списка команд;
getChatAdministrators – извлечение списка администратора;
setMyName – изменение имени бота.
Используя нужный набор методов, программист получает возможность создавать ботов с очень сложной логикой работы и возможностью подключения к внешним сервисам. Преимущество использование оригинального API – запросы можно формировать и передавать при помощи любого языка программирования, что бывает полезно для узкоспециализированных проектов.
Однако есть и минусы. Для реализации даже простого запроса может потребоваться значительное количество строк кода. Также разработчик должен обеспечить корректную обработку ошибок, разбор полученного ответа, проверку на дублирование сообщений и многое другое. При использовании библиотек второстепенные элементы уже реализованы.
Использование библиотек
Для разработки ботов предусмотрены отдельные библиотеки, которые обеспечивают удобный доступ к Bot API. При их использовании код становится заметно компактнее, поскольку вспомогательные инструменты реализованы внутри отдельных функций. Фактически работа происходит с готовыми блоками, которые необходимо соединить в нужной последовательности.
Ниже будут более подробно рассмотрены популярные библиотеки.
Библиотеки для Python
Сегодня Python является самым популярным языком программирования для ботов разного назначения. Это обусловлено многими факторами, включая наличие большого количества готовых инструментов. Популярны следующие библиотеки:
TeleBot. Сегодня уже не пользуется популярностью, поскольку не соответствует современным требованиям. Созданные боты попросту не рассчитаны на высокую нагрузку, многие актуальные функции не реализованы, поскольку библиотека редко обновляется. Несмотря на недостатки, проект еще пользуется популярностью в качестве платформы для освоения данной сферы.
Aiogram. Библиотека для разработки высоконагруженных приложений, основной упор сделан на работу в асинхронном режиме. Проект пользуется популярностью, активно обновляется и пользуется поддержкой у сообщества.
Python-telegram-bot. Еще одна популярная библиотека, поддерживает работу в синхронном и асинхронном режимах, встроены все необходимые инструменты. По возможностям несколько уступает Aiogram, но вполне справляется даже с достаточно крупными проектами.
Библиотеки для Node.js и JavaScript
JavaScript – второй по популярности язык программирования для создания Telegram-ботов. В сети можно найти немало успешных проектов на данной платформе. Сообщество уже успело накопить обширную базу готовых примеров и решений различных проблем, что заметно облегчает процесс разработки. Далее будет список популярных библиотек.
GrammY – библиотека для создания сложных ботов, поддерживается TypeScript и JavaScript. Готовые проекты можно запускать на платформах Node.js и Deno. Есть вся необходимая документация для работы.
Telegraf.js. Мощный фреймворк, который берет на себя весь основной функционал мессенджера, код выполняется асинхронно, что позволяет оптимизировать нагрузку. Полноценно поддерживается JavaScript и TypeScript. Отвечает всем современным требованиям в контексте обеспечения безопасности и стабильности работы.
Node.js Telegram Bot API. Проект сегодня практически не поддерживается сообществом, обновления выходят очень редко. Функционал достаточно ограничен, но пользуется популярности среди начинающих пользователей, поскольку позволяет изучить основы разработки ботов и перейти к профессиональным библиотекам.