АНАЛИЗ СОВРЕМЕННЫХ СРЕДСТВ РАЗРАБОТКИ ТЕЛЕГРАМ БОТОВ - Студенческий научный форум

XVII Международная студенческая научная конференция Студенческий научный форум - 2025

АНАЛИЗ СОВРЕМЕННЫХ СРЕДСТВ РАЗРАБОТКИ ТЕЛЕГРАМ БОТОВ

Лопата А.А. 1, Букреев Д.А. 1
1Мелитополь Государственный Университет
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение. Статистические данные свидетельствуют о том, что более 86 миллионов граждан России активно используют мессенджер Telegram, что составляет больше половины населения страны. В связи с этим, многие коммерческие организации рассматривают Telegram как перспективную платформу для предоставления и продвижения своих услуг, а открытый API (Application Programming Interface) мессенджера позволяет каждому разрабатывать собственных чат-ботов – программ, работающих внутри платформы, которые предоставляют пользователям различные сервисы, от простых информационных сообщений до сложных взаимодействий, таких как системы онлайн-заказов, чат-боты для обслуживания клиентов или инструменты для организации мероприятий. Такие перспективы не могут не привлекать разработчиков любых уровней. Но так как современном программировании существует множество подходов к достижению одной и той же цели. Для разработки Telegram-ботов возможно использование широкого спектра языков программирования и библиотек. Каждое из этих средств обладает уникальным набором функциональных возможностей и преимуществ. Например, некоторые языки и библиотеки могут обеспечивать более быструю разработку и тестирование, в то время как другие могут предлагать более высокую производительность и масштабируемость. Одним проектам может потребоваться простая интеграция с API Telegram для отправки сообщений, в то время как другие требуют сложной логики обработки данных, интеграции с внешними сервисами, управления базами данных и обеспечения высокой безопасности.Таким образом, перед разработчиками возникает задача оптимального выбора инструментария, соответствующего требованиям конкретного проекта

Цель исследования – выполнить анализ современных средств разработки Telegram ботов, рассмотреть их основные возможности и особенности, а также выявить преимущества и недостатки каждого из них для проектов разных уровней.

Материал и методы исследования

В ходе исследования анализирована официальная документация Telegram Bot API, документация по выбранным языкам и библиотекам, открытые репозитории с примерами кода ботов и исходным кодом фреймворков, научные публикации и обзоры по разработке ботов, а также обсуждения на форумах разработчиков и статьи в блогах.

Результаты исследования и их обсуждение

На данный момент самым популярным языком программирования считается Python – это удобный и понятный язык программирования, известный своей простотой. Он популярен благодаря своей многогранности и широким возможностям. Python легко изучить, поэтому он подходит для начинающих. Самым главным его преимуществом является огромное количество готовых библиотек, предоставляющих самые разнообразные функции. Нельзя не отметить его активное сообщество разработчиков, которое постоянно создаёт новые инструменты, библиотеки и делится знаниями, обеспечивая постоянный рост и развитие языка, а также поддержку для всех, кто его использует. Кроме того, Python легко интегрируется с другими языками программирования. С помощью Python решают задачи в сферах анализа данных, машинного обучения, автоматизации, научных исследований, разрабатывают игры и, конечно, создают Telegram-ботов. Для анализа были отобраны две самые известные библиотеки для взаимодействия с Telegram Bot API на данном языке: telebot и aiogram. Telebot – это синхронная библиотека, основанная на модели polling – периодических забросов на сервер, она проста в освоении, что делает ее привлекательной для начинающих, однако, синхронный подход может создавать проблемы при масштабировании, так как для обработки каждого запроса создается отдельный поток, что может быть неэффективно при большом количестве одновременных запросов, документация telebot достаточно понятная, и существует большое количество примеров.

Aiogram

Aiogram – это асинхронная библиотека, использующая модель event-driven – ожидании пока сервер сам пришлёт информацию, асинхронность позволяет более эффективно обрабатывать большое количество одновременных запросов и обеспечивает лучшую масштабируемость, aiogram более сложен в освоении, особенно для начинающих, документация aiogram более подробная, но может быть сложнее для восприятия. Обе библиотеки предоставляют удобные средства для обработки различных типов сообщений, команд и callback-запросов, однако, aiogram позволяет более точно настраивать обработку сообщений. Обе библиотеки поддерживают inline и reply клавиатуры, но aiogram предлагает более развитые инструменты для их создания и управления, а также для более сложной навигации. Обе библиотеки предоставляют средства для отправки и получения медиа-файлов. Aiogram имеет встроенную поддержку FSM (Finite State Machine) – отслеживания текущего шага взаимодействия с пользователем, что позволяет удобно управлять состоянием бота и создавать более сложные сценарии диалогов, в telebot FSM нужно реализовывать самостоятельно, что может быть затруднительно для более сложных ботов.

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

Для более сложных и масштабных задач правильным выбором будет Aiogram. Широкая распространенность Python при разработке Telegram-ботов гарантирует, что сообщество предоставит ответы на любые возникающие вопросы. Из минусов использования Python можно выделаить медленную компиляцию, так как код выполняется построчно, а не сразу в машинном коде. Это, вместе с ограничением многопоточности, снижает его скорость. Динамическая типизация, когда типы переменных определяются во время выполнения, и «тяжелые» объекты приводят к большему потреблению памяти.

Node.js

JavaScript – это язык программирования, который изначально был разработан для веб-браузеров, но сейчас используется и в других областях. Node.js, в свою очередь, – это среда выполнения JavaScript, позволяющая использовать JavaScript вне браузера для создания серверных приложений. В отличие от традиционных языков, где каждый запрос обрабатывается в отдельном потоке, Node.js использует асинхронную и неблокирующую модель ввода-вывода, основанную на событиях. Это позволяет Node эффективно обрабатывать большое количество одновременных соединений, не создавая отдельные потоки для каждого из них. Код на Node.js полностью пишется на JavaScript, поэтому веб-разработчики, уже знакомые с этим языком, могут легко начать разработку серверных приложений. Node.js чаще всего применяется для создания веб-приложений, поэтому он будет идеальным решением для разработки бота с использованием Telegram mini app – веб-приложения, интегрированного в интерфейс Telegram, имеющего доступ к тем же данным пользователя что и бот. Также Node имеет немалое количество готовых пакетов и модулей, доступных через npm (Node Package Manager). Среди которых для взаимодействия с Telegram Bot API чаще всего используют Telenode и Telegraf. Обе библиотеки работают на основе асинхронного программирования.

Telenode – это библиотека, которая стремится предоставить простой и понятный интерфейс для работы с Telegram Bot API, код более чистый и читаемым, документация Telenode должна быть достаточно ясной, но, как правило, библиотека не так популярна, как Telegraf, что может повлиять на доступность примеров и сторонней поддержки.

Telegraf – это более «высокоуровневая» библиотека, она имеет более современный и лаконичный синтаксис, документация Telegraf очень хорошая и содержит много примеров, а также имеет более активное сообщество.

Обе библиотеки предоставляют удобные средства для обработки различных типов сообщений, команд и callback-запросов, однако, Telegraf имеет более гибкую систему middleware – это функции, которые перехватывают и обрабатывают входящие обновления перед тем, как они достигнут конечного обработчика, позволяя выполнять различные действия на каждом этапе, в то время как Telenode может полагаться на более простые подходы. Обе библиотеки поддерживают inline и reply клавиатуры, но Telegraf предлагает более удобные методы для создания и управления клавиатурами. Обе библиотеки обеспечивают отправку и получение медиа-файлов. Telegraf предлагает более удобные решения для реализации FSM, благодаря использованию middleware, Telenode может не иметь встроенной поддержки FSM или предоставлять менее удобные методы для его реализации, что потребует больше усилий со стороны разработчика. Для проекта, делающего упор на Telegram mini app, Telenode будет хорошим решением благодаря своей лёгкости. Однако если требуется больший функционал бота следует применить Telegraf. При выборе JavaScript и Node.js следует учитывать низкую производительность и большой вес из-за динамической типизации и построчной интерпретации. Node.js, из-за однопоточности, плохо подходит для CPU-интенсивных задач. Не грамотная работа с асинхронностью может приводить сложностям отладки и утечкам памяти. Безопасность страдает от уязвимости зависимостей.

Java

Отдельного упоминания заслуживает язык программирования Java, который по сей день занимает лидирующие позиции в рейтингах популярности. Это объектно-ориентированный язык программирования, архитектура которого нацелена на независимость от конкретного аппаратного обеспечения благодаря Виртуальной Машине Java (JVM), которая выступает как слой совместимости между байт-кодом и операционной системой. Это позволяет Java-приложениям работать на разных платформах. Java реализует строгую систему типов, которая помогает обнаруживать ошибки на этапе компиляции. Автоматическая сборка мусора и механизмы обработки исключений также способствуют повышению надежности программ на Java. Для защиты от вредоносного кода используется «песочница» – изолированная среда выполнения, которая ограничивает доступ к системным ресурсам. Java имеет встроенную поддержку многопоточности, позволяя эффективно использовать ресурсы при выполнении параллельных задач. Java имеет не малое количество библиотек для реализации разнообразных задач. Активное сообщество и постоянное развитие языка обеспечивают его актуальность и адаптацию к новым задачам. Java остается важной технологией для корпоративных приложений, мобильной разработки под Android и в других областях, где важна надежность и переносимость.

В разработке telegram-ботов Java также используется благодаря библиотекам TelegramBots или java-telegram-bot-api. TelegramBots более удалён от чистого Telegram Bot API, что упрощает разработку для начинающих, используя объектно-ориентированный подход и модель polling по умолчанию, хотя поддерживает и вебхуки (способ, с помощью которого Telegram может отправлять уведомления о новых событиях напрямую на ваш сервер), является более простой для старта, имеет хорошую документацию и большое сообщество, установка простая с помощью Maven или Gradle. java-telegram-bot-api предоставляет более прямой и доступ к Telegram Bot API, что дает большую гибкость, но требует более глубокого понимания API, ориентирована на event-driven подход и использование вебхуков, может быть сложной для начинающих, имеет более подробную документацию, но немного меньшее сообщество, установка также простая с Maven или Gradle. Обе библиотеки обеспечивают обработку сообщений, команд и других типов данных, но TelegramBots использует аннотации для команд, упрощая код, а java-telegram-bot-api предлагает более гибкие возможности настройки. Обе библиотеки поддерживают inline и reply клавиатуры, но TelegramBots предоставляет готовые классы, а java-telegram-bot-api предоставляет низкоуровневые инструменты для большей гибкости. Обе библиотеки поддерживают работу с медиа, обработку callback-запросов, не имеют встроенной поддержки FSM. java-telegram-bot-api является более легковесной. Обе библиотеки могут быть использованы для создания сложных продвинутых и главное безопасных проектов. Однако java-telegram-bot-api будет лучшим выбором, когда необходим более прямой доступ к Telegram Bot API, а TelegramBots следует использовать, когда скорость разработки является важным фактором. При этом стоит учитывать, что Java характеризуется многословностью, требующей значительного объема шаблонного кода, что замедляет разработку. Сложные концепции, такие как многопоточность и управление памятью, могут быть непростыми для освоения. Работа через JVM делает Java относительно ресурсоемкой и может влиять на производительность, особенно при запуске. Java не всегда оптимальна для высокопроизводительных систем, где критична скорость и низкоуровневый доступ.

C++

Занимающий на данный момент второе место по популярности C++ – это язык программирования общего назначения, сочетающий в себе элементы процедурного, объектно-ориентированного и обобщенного подходов. Его ключевой чертой является прямой доступ к ресурсам компьютера. Эта низкоуровневая гибкость делает C++ отличным инструментом для создания высокопроизводительных систем, но также усложняет разработку, поскольку программист несёт ответственность за управление ресурсами. C++ предоставляет большое количество моделей программирования, что даёт разработчикам возможность выбрать наиболее подходящий подход к решению задачи. Этот широкий набор возможностей компенсируется значительной сложностью синтаксиса и требуемым знанием языка. C++ известен своей производительностью, что обусловлено отсутствием посредников (как виртуальные машины в Java). Этот фактор делает C++ востребованным при разработке приложений, где время выполнения критично, например, игровых движков, систем реального времени и операционных систем. Но, вместе с тем, высокая производительность может быть достигнута только при тщательном и грамотном кодировании. В C++ выбор библиотек для взаимодействия с Telegram Bot API не велик, в основном все оставляют свой выбор на tgbot-cpp, также существуют библиотеки QTelegramBotAPI и tgbot, первый используется крайне редко, поэтому для сравнения выбраны tgbot и tgbot-cpp. Единственное существенное отличие данных библиотек состоит в том, что архитектура tgbot-cpp основана на асинхронности, что позволяет эффективно обрабатывать большое количество одновременных запросов, в то время как tgbot использует более традиционный подход, который может оказаться менее масштабируемым в условиях высокой нагрузки, но при этом может стать полезным для новичков, не совладавших с асинхронным программированием. Во всех остальных аспектах tgbot-cpp превосходит tgbot. Обе библиотеки поддерживают основные функции работы с Telegram API, включая обработку текстовых сообщений, команд, inline и reply клавиатуры, отправку и обработку медиа, а также обработку callback-запросов, однако tgbot-cpp предлагает более продвинутые функции для работы с API и более гибкий подход к обработке сообщений. Сообщество у tgbot-cpp более активное. Обе библиотеки активно развиваются, но tgbot-cpp более активно поддерживает новые возможности Telegram Bot API. Также стоит отметить что обе библиотеки не имеют встроенной FSM. Подытожив можно сказать что при использовании C++ лучшим вариантом будет tgbot-cpp, данная связка позволит создавать максимально технологичные и производительные проекты. Однако стоит учитывать, C++ известен своей сложностью, как в изучении, так и в использовании. Ручное управление памятью требует высокой внимательности и часто приводит к ошибкам. C++ требует высокой дисциплины от разработчика.

C#

Язык C# отличается балансом между простотой использования и широкими возможностями. Он предлагает четкий и последовательный синтаксис, делая код относительно легким для чтения и написания, в то время как также предоставляет широкий спектр возможностей для создания сложных программ. Архитектура C# опирается на объектно-ориентированные принципы. Управление памятью в C# осуществляется автоматически с помощью сборщика мусора, что освобождает разработчиков от необходимости ручного выделения и освобождения памяти. Хотя это снижает прямой контроль над процессом, оно также значительно снижает риск возникновения ошибок, связанных с управлением памятью. Благодаря своей популярности данный язык имеет достаточно активное сообщество. С# будет хорошим выбором для разработки продвинутого telegram-бота, а помогут c этим библиотеки Telegram.BotAPIforNET и Telegram.bot. Опять же для анализа выбраны наиболее известная и наиболее технологичная библиотеки. Telegram.Bot предоставляет более удобный интерфейс, упрощая создание ботов, предоставляя готовые инструменты для работы с сообщениями, клавиатурами и медиа. Это делает её более привлекательной для начинающих и проектов средней сложности. Telegram.BotAPI позиционирует себя как «Одна из наиболее полных библиотек, доступных для взаимодействия с Telegram Bot API». Являясь более продвинутой библиотекой, позволяет разработчикам осуществлять более тонкую настройку взаимодействия с Telegram, но требует большей работы, большего объема кода и более глубокого понимания Telegram API. Для простых ботов и быстрого прототипирования Telegram.Bot часто является предпочтительнее. Более сложные боты, требующие тонкого контроля над API, потенциально могут быть реализованы эффективнее с использованием Telegram.BotAPI. Обе библиотеки поддерживают асинхронность, что важно для масштабируемости проектов. В обоих случаях, разработчик должен самостоятельно реализовывать функциональность FSM, если она необходима в проекте. Активность сообщества и частота обновлений для Telegram.Bot чаще выше, что обеспечивает более стабильную и надежную поддержку. В итоге можно сделать вывод что обе библиотеки будут отличным решением для реализации telegram-ботов любого уровня, но для более продвинутых проектов где необходимо тонкое взаимодействие с Telegram предпочтительней будет использование Telegram.BotAPI. Главным минусом C# является зависимость от платформы .NET в последствии чего могут быть проблемы с кроссплатформенностью.

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

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

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

Для проектов, рассчитанных на большую нагрузку проектов не требующих крайне быстрой реализации подойдет С#, который предоставляет идеальный баланс между простотой в разработке и производительностью. В данном контексте Telegram.Bot будет хорошим вариантов для новичков которым требуется создать надежный проект, а Telegram.BotAPI подойдет для разработки более сложных систем.

Для web-разработчиков которые хотят внедрить свой web-проект в telegram находкой будет Node.js и библиотеки Telenode с Telegraf. Первая является более простым инструментов, а Telegraf предоставляет более широкие возможности. Если же разрабатывается сложный комплексный проект, требующий стабильную и быструю работу при очень больших нагрузках стоит обратить внимание на C++ и библиотеку tgbot-cpp, однако стоит учитывать, что разработка на данном языке требует высокой компетенции и внимательности от разработчика, поэтому язык будет тяжелым для новичков, а скорость разработки низкой. Java будет хорошим выбором для комплексных проектов требующих повышенной безопасности. библиотека TelegramBot для Java предоставляет больший функционал и скорость разработки. Java-telegram-bot-api в свою очередь обеспечивает более глубокий доступ к Telegram Bot API. Таким образом можно определить оптимальный вариант для разработки определенного проекта.

Список литературы

  1. Байкова К.Д., Медведева T.A. Анализ и разработка функционального telegram-бота // Молодой исследователь Дона. – 2021. – №6(33).

  2. Бийбосунов Б. И., Бийбосунова С. К., Жолочубеков Н. Ж. писание концепции Telegram ботов и их разработка // Colloquium-journal. – 2020. – №7(59).

  3. Гурьянова М.В., Аброскин А.С. Ведущие языки программирования // Мировая наука. – 2020. – № 1(34)

  4. Матвеева Н. Ю., Золотарюк А. В. Технологии создания и применения чат-ботов //Научные записки молодых исследователей. – 2018. – №. 1. – С. 28-30.

  5. Шабалина А.С., Тихоненко Д.В. Анализ языков программирования // Актуальные проблемы авиации и космонавтики. – 2022. – Том 2.

Просмотров работы: 31