EN РУС
ДонНТУ Портал магистров

Дворник Артём Николаевич

Факультет Интеллектуальных Систем и Программирования

Кафедра «Компьютерная Инженерия»

Направление «09.04.01 "Информатика и вычислительная техника"»

Магистерская программа «Программное обеспечение средств вычислительной техники»

Разработка инструментария для создания телеграмм чат-ботов

Научный руководитель: к.т.н., доцент Николаенко Денис Владимирович

Резюме Биография Реферат Библиотека Ссылки Отчет о поиске Индивидуальный раздел

Реферат по теме выпускной работы

Содержание

Введение

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

1 АНАЛИЗ ПРОГРАММНЫХ ИНСТРУМЕНТОВ ДЛЯ СОЗДАНИЯ TELEGRAM ЧАТ БОТОВ

Чат-бот – это программа для имитации человеческого общения или, другими словами, программа-собеседник. Первые чат-боты создавались начиная с 60-х годов прошлого века в качестве экспериментов. Так первым чат-ботом может называться программа Eliza[1] созданная в 1966 году. Программа была запрограммирована изображать из себя психотерапевта, в основном благодаря использованию техники активного слушания, задавая дополнительные вопросы основываясь на предыдущем сообщении пользователя. Естественно, ей было далеко до настоящего человека, тем не менее некоторым людям могло потребоваться немало времени чтобы понять, что они общаются с компьютером.

Чат-боты тех времен можно охарактеризовать как применимые исключительно в экспериментальных целях. Изменения произошли на рубеже двадцатого века, когда исходный код программы Alice[2] стал общедоступным и сторонние разработчики смогли детально исследовать принцип работы. Так появился бот SmarterChild[3], который использовался в чатах MSN от Microsoft и AOL. Чат-боты нашли применение в качестве виртуальных ассистентов, таких как Siri от Apple или Alexa от Amazon.

Рис. 1 — Интерфейс чат-бота Eliza.

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

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

2 АНАЛИЗ ВОЗМОЖНОСТЕЙ ТЕЛЕГРАММ ЧАТ БОТОВ

Telegram – быстро развивающийся бесплатный мессенджер. Создан Павлом Дуровым, основателем ВКонтакте. В рекламных материалах часто делался акцент на уникальную в своем роде безопасность, сравнимую с p2p решениями, хотя в сети часто ставят это под вопрос. Тем не менее функционал мессенджера привлек немало людей и спровоцировал быстрый рост популярности, в частности на август 2023 г. аудитория мессенджера в России по некоторым данным составляла более 75 млн. пользователей. Согласно заявлениям Павла Дурова в личном телеграмм канале общая аудитория насчитывает 800 млн. пользователей.

Мессенджер предоставляет широкий функционал: общение в чате, звонки с использованием интернет-соединения, обмен файлами и медиа-материалами, возможность создавать группы и каналы, а самое главное возможность создать специальный бот-аккаунт, которым можно управлять посредством API.

Важно упомянуть что телеграмм также предоставляет API для управления стандартным аккаунтом пользователя, это необходимо для создания сторонних приложений-клиентов и заодно позволяет создавать чат-ботов[9]. Но использование данного способа сложнее и менее удобное относительно специализированного API для бот- аккаунтов (далее Bot API). Также в таком случае не будут доступны некоторые функции ботов. Подробнее об этом далее в пункте со сравнительным анализом API и Bot API.

2.1 Описание функций, возможностей, ограничений и сценариев использования чат ботов Telegram

Подробнее рассмотрим возможности, предоставляемые мессенджером бот-аккаунтам. Основной функцией можно назвать получение и отправку сообщений в диалоге с пользователями. Бот имеет возможность использовать разметку Markdown и HTML для форматирования отправляемых сообщений. Этот функционал вместе с возможностью использовать большое количество эмодзи позволяет очень гибко форматировать текст, избегая скучных однообразных сообщений. Дополнительно к сообщению можно прикрепить клавиатуру, которая упрощает взаимодействие с ботом. Возможность отправлять и получать файлы или медиа-документы также полноценно функционирует в диалогах с ботом.

Одним из конкурентных преимуществ ботов в Telegram является встроенные платежные система, которые можно использовать прямо в диалоге с ботом и безопасно оплатить услуги предоставляя свои платежные данные только системе, а не владельцу бота[10].

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

Еще одной интересной способностью бот-аккаунта является Inline mode – режим, в котором использование бота не ограничено одним диалогом, группой или каналом[8]. Любой пользователь может обратиться к ранее добавленному боту в любом своем чате, сделать запрос прямо в окне набора текст и получить результат, который, например, можно отправить сразу в текущий диалог.

Недавним нововведением Telegram демонстрирует свое желание развивать ботов в качестве мини-приложений, персональных ассистентов с расширенными возможностями и с большим количеством сценариев применений. Тем самым превращая мессенджер в супер-приложение, наподобие китайского WeChat[4]. А именно в обновлении Bot API 6.7 от 21 апреля 2023 г. была добавлена полноценная интеграция веб-приложений непосредственно в интерфейс мессенджера[7]. Теперь бот может предоставить пользователю возможность запуска одного и более встроенного приложения, написанного с помощью html и js. Другими словами, полноценные сайты, со всем вытекающими последствиями. Приложение мессенджера отправляет запросы напрямую на сервер разработчика, что раскрывает ip-адрес пользователя бота. Ранее же при использовании телеграмм-бота все взаимодействие происходило посредством API. Тем не менее возможность открыть сторонние сайты позволяет интегрировать абсолютно любой функционал, который можно реализовать в рамках веб-приложений.

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

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

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

С другой стороны, от разработчика требуются гораздо меньше усилий для создания своего “бота-приложения”. Так, например, для получения входящих сообщений можно использовать long-polling – метод общения с сервером, при котором клиент отправляет запрос к серверу, а тот в свою закрывает соединение только при наличии необходимых данных, в нашем случае входящих сообщений, или по истечению определенного времени. Клиент просто открывает соединение с сервером и ждет пока сервер закроет его с необходимыми данные. Это позволяет оперативно получать свежие данные, такие как новые входящие сообщения в боте, даже не открывая порты на сервере. При это не сильно теряя в скорости получения свежих данных от сервера. Такой способ очень удобен для небольших и простых ботов, он позволяет пропустить стандартные шаги по настройке веб-сервера и даже в какой-то мере безопаснее обычных веб-приложений.

Помимо этого, разработчику не нужно программировать сложные интерфейсы, создавать дизайн и отлаживать бота под несколько браузеров. Он может заменить все это обычными текстовыми сообщениями и несколькими кнопками для улучшения пользовательского опыта. Разработчику не нужно думать над системой авторизации и регистрации пользователей, мессенджер решает все эти задачи за вас. Это экономит большое количество времени, а в коммерческих проектах и средств.

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

Совокупность всех этих особенностей открывает широкие возможности по интеграции ботов в работе, повседневной жизни или развлечениях. Приведем примеры некоторых ботов для наглядности:

  • Eddy Travels (@EddyTravels_bot) – Помогает пользователям искать авиабилеты, отели и рестораны, используя данные от Skyscanner.
  • Skeddy (@SkeddyBot) – Это инструмент для создания напоминаний, к которому можно обратиться в разговорном стиле.
  • Combot (@combot) – Помогает превратить вашу группу в полноценное сообщество, занимаясь задачами модерации, аналитикой, борьбой со спамом и предоставлением системы триггеров.
  • File to Bot (@filetobot) – Позволяет сохранять файлы в облаке с неограниченным хранилищем в Telegram?4.
  • Gmail bot (@gmailbot) – Позволяет пользователям получать, отправлять и отвечать на электронные письма прямо в интерфейсе Telegram.
  • Ultimate Pollbot (@ultimate_pollbot) – Обладает расширенными возможностями для создания различных опросов с однократным или множественным голосованием, анонимными или публичными голосованиями, а также управлением несколькими опросами и удобным просмотром их результатов.
  • Feed-reading bot (@TheFeedReaderBot) – Помогает пользователям оставаться в курсе последних новостей по интересующим их темам, отправляя уведомления о сообщениях и статьях из различных источников, таких как блоги, YouTube, Facebook и Instagram.
  • Transcriber bot (@transcriber_bot) – Способен транскрибировать аудиозаписи и изображения в текст, поддерживая более 20 популярных языков.
  • YouTube search bot (@vid) – Позволяет пользователям искать и делиться ссылками на YouTube прямо в приложении Telegram?.
  • Бланк (@BlancMoneyBot) – Бот для ведения бизнеса, позволяет открыть ИП или ООО и получать доступ к функциям личного кабинета.

Отдельно хочется отметить телеграмм боты разработанные и активно применяемые в Донецке:

  • "Мой Феникс" (@myphoenix_bot) – бот заменяет приложение для управления счетом у интернет-провайдера и оператора связи “Феникс”.
  • "HappyLife" (@HappyLifeOrderBot) – бот для оформления заказов в сети ресторанов HappyLife.

2.2 Сравнительный анализ возможностей предоставляемых API и Bot API для управления чат ботами

Начнем со стандартного API Telegram. Он открыт и полностью бесплатен, разработчики утверждают, что он необходим для создания своих собственных клиентов телеграмм. Главной особенностью можно назвать протокол MTProto[5] – собственная разработка Telegram специально для работы мессенджера. С помощью него осуществляется доступ к API. Детально рассматривать протокол не имеет смысла, важно только заметить, что осуществление работы с API посредством MTProto сложнее чем простое обращение к HTTP API.

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

Помимо управления обычными пользовательскими аккаунтами можно управлять и интересующими нас бот-аккаунтами. Подробнее об особенностях далее.

Bot API[6] – надстройка над Telegram API, которая призвана упростить взаимодействие с API для разработчиков ботов. Bot API это стандартный HTTP API, поддерживает WebHooks и Long Polling. Для авторизации в Bot API достаточно владеть уникальным секретным токеном, полученным при создании бота. Фактически это посредник между нашей программой и стандартным Telegram API.

Рис. 2 — Взаимодействие с телеграмм ботом. (анимация: 6 кадров, длительность 7 секунд, нет ограничения циклов повторения, 16 кб)

Один сервер Bot API обслуживает большое количество ботов, что накладывает некоторые ограничения, такие как размер загружаемых файлов и лимиты сообщений. Компания опубликовала исходный код сервера Bot API и позволила разворачивать локальные копии. Это позволяет обходить ограничения по размеру файлов для Bot API.

Важно упомянуть лимиты, накладываемые на бот. Так, согласно документации нежелательно отправлять более одного сообщения пользователю в секунду. Или более 30 сообщений в секунду в общем. Лимиты приведены приблизительные и не являются жестким ограничением. Их можно нарушать на непродолжительное время, это не скажется на работе бота. Но если постоянно превышать лимит – начнутся перебои в работе со стороны Bot API: обновления будут не доходить до бота или в ответ на запрос будет ошибка. Эти лимиты можно увеличить для больших ботов через техническую поддержку, согласно заявлениям владельцев телеграмм ботов с большой аудиторией. Или частично смягчить их влияние установив локальный сервер Bot API исключительно для вашего бота. К сожалению, точные цифры получить не удалось.

3 АНАЛИЗ ГОТОВЫХ ИНСТРУМЕНТОВ ДЛЯ УПРАВЛЕНИЯ ЧАТ БОТАМИ

3.1 Программные решения для работы с Bot API, их недостатки

Разработчики Bot API предоставили только HTTP API. Реализации клиентов были созданы сторонними разработчиками:

  • https://github.com/eternnoir/pyTelegramBotAPI – Python;
  • https://github.com/yagop/node-telegram-bot-api – NodeJs;
  • https://github.com/pengrad/java-telegram-bot-api – Java;
  • https://github.com/reo7sp/tgbot-cpp – C++;
  • https://github.com/TelegramBots/Telegram.Bot – C#;
  • И многие другие решения. Разработчики Telegram приводят некоторые из них на своем сайте: https://core.telegram.org/bots/samples.

В списке приведены простые библиотеки-клиенты для HTTP API без дополнительного функционала. Более сложные инструменты будут рассмотрены в одном из следующих пунктов. Данные клиенты поддерживаются сообществом и некоторые могут не поспевать за изменениями в Bot API или вовсе перестать обновляться. Поэтому следует обращать внимание на размер сообщества, частоту обновления и наличие документации при выборе решения.

Приведенные решения позволяют в полной мере использовать функции Bot API, в том числе WebHooks или Long Polling. Тем не менее можно обратить внимание что использование данных инструментов не полностью удовлетворяет сообщество. Исходя из опыта автора данного материала, а также из сообщений разработчиков ботов в сети интернет можно прийти к следующим выводам: для разработки простого бота-ассистента, с минимумов функций, упомянутых выше библиотек вполне достаточно. Однако, учитывая особенности и ограничения Bot API, для создания полноценных замен веб-приложений в среде телеграмм мессенджера необходимы более сложные решения. Например, часто требуется реализация конечного автомата, для последовательной работы с пользователем.

Поэтому сообщество разработчиков ботов не стоит на месте и предлагает новые, усовершенствованные инструменты для решения более комплексных задач:

  • https://github.com/aiogram/aiogram – Python
  • https://github.com/MajMcCloud/TelegramBotFramework – C#
  • https://github.com/RxTelegram/RxTelegram.Bot – C#
  • https://github.com/teloxide/teloxide – Rust
  • https://github.com/telegraf/telegraf – NodeJs

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

3.2 Облачные решения для управления чат ботами

В сети интернет существует немало облачных сервисов, которые помогают в создании и администрировании телеграмм-ботов. Зачастую они нацелены на людей далеких от программирования, поэтому предлагают No Code разработку. Они накладывают дополнительные ограничения и лимиты. Зачастую они позволяют создавать ботов только для заранее заготовленных сценариев использования.

Если разработчик желает использовать весь функционал ботов и иметь полный контроль над ним без рисков ему следует использовать собственные программные решения. Поэтому в рамках данного материала такие сервисы не будут рассмотрены.

ВЫВОДЫ

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

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. ELIZA – A Computer Program For the Study of Natural Language Communication Between Man and Machine [Электронный ресурс]. – Режим доступа: http://universelle-automation.de/1966_Boston.pdf
  2. ALICE chatbot: Trials and outputs [Электронный ресурс]. – Режим доступа: https://www.researchgate.net/publication/289684788_ALICE_chatbot_Trials_and_outputs
  3. Чат-боты: эволюция и история [Электронный ресурс]. – Режим доступа: https://botcreators.ru/blog/chernovik-chat-boty/#:~:text=SmarterChild%20был%20чат-ботом%2C%20созданным%20AOL,продуктов%20AOL%20за%20всю%20историю
  4. Wechat или действительно всеобъемлющее приложение. Что с ним может делать разработчик [Электронный ресурс]. – Режим доступа: https://habr.com/ru/articles/492420/
  5. MTProto Mobile Protocol [Электронный ресурс]. – Режим доступа: https://core.telegram.org/mtproto
  6. Telegram Bot API [Электронный ресурс]. – Режим доступа: https://core.telegram.org/bots/api
  7. Telegram Mini Apps [Электронный ресурс]. – Режим доступа: https://core.telegram.org/bots/webapps
  8. Inline Bots [Электронный ресурс]. – Режим доступа: https://core.telegram.org/bots/inline
  9. Telegram API [Электронный ресурс]. – Режим доступа: https://core.telegram.org/methods
  10. Коротко про платежи через ботов в Telegram [Электронный ресурс]. – Режим доступа: https://habr.com/ru/companies/otus/articles/781194/