Научная статья на тему 'РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ТЕЛЕГРАММ БОТА ДЛЯ СТУДЕНТОВ И АБИТУРИЕНТОВ ГБОУ ВО НГИЭУ'

РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ТЕЛЕГРАММ БОТА ДЛЯ СТУДЕНТОВ И АБИТУРИЕНТОВ ГБОУ ВО НГИЭУ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
302
49
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
TELEGRAM / ЧАТ-БОТ / СПРАВОЧНО-ИНФОРМАЦИОННАЯ СИСТЕМА / PYTHON / ФУНКЦИЯ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Зуева Светлана Владимировна, Краснов Александр Сергеевич, Краснова Анна Сергеевна

В данной статье проанализирован рейтинг языков программирования и график изменения популярности языков программирования. На основании проведённого анализа создан и реализован проект, главной целью которого является помощь студентам в период обучения, путем отделения от основного источника информации требуемых данных в единый портал с возможностью использования Telegram чат-бота. Актуальность разработки и возможности внедрения данного проекта в повседневное использование студентами НГИЭУ объясняется тем, что мессенджер Telegram не является официальным источником для получения информации. Данная платформа является наиболее актуальной для создания ботов с набором цепочек-ответов, так как ее суть заключается во взаимодействии пользователя с приложением с помощью текстовых сообщений. На данный момент НГИЭУ насчитывает порядка 5 официальных источников информаций, одним из которых является web-портал «ngieu.ru», он же является основным центром сбора, оповещения и получения данных. В связи с этим было принято решение создать и реализовать проект, главной целью которого будет помощь студентам в период обучения, путем отделения от основного источника информации требуемых данных в единый портал с возможностью использования Telegram - бота.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

DEVELOPMENT OF TELEGRAM BOT SOFTWARE FOR STUDENTS AND APPLICANTS OF GBOU VO NGUEU

This article analyzes the rating of programming languages and the graph of changes in the popularity of programming languages. Based on the analysis, a project was created and implemented, the main purpose of which is to help students during their studies by separating the required data from the main source of information into a single portal with the possibility of using a Telegram chatbot. The relevance of the development and the possibility of implementing this project in the daily use of NGUE students is explained by the fact that the Telegram messenger is not an official source for obtaining information. This platform is the most relevant for creating bots with a set of response chains, since its essence lies in the interaction of the user with the application using text messages. At the moment, NGIEU has about 5 official sources of information, one of which is the web portal "ngieu.ru ", it is also the main center for collecting, notifying and receiving data. In this regard, it was decided to create and implement a project whose main goal will be to help students during their studies by separating the required data from the main source of information into a single portal with the possibility of using a Telegram bot.

Текст научной работы на тему «РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ТЕЛЕГРАММ БОТА ДЛЯ СТУДЕНТОВ И АБИТУРИЕНТОВ ГБОУ ВО НГИЭУ»

Разработка программного обеспечения телеграмм бота для студентов и абитуриентов ГБОУ ВО

НГИЭУ

С.В. Зуева, А.С. Краснов, А.С. Краснова

Аннотация — В данной статье проанализирован рейтинг языков

программирования и график изменения популярности языков программирования. На основании проведённого анализа создан и реализован проект, главной целью которого является помощь студентам в период обучения, путем отделения от основного источника информации требуемых данных в единый портал с возможностью использования Telegram чат-бота. Актуальность разработки и возможности внедрения данного проекта в повседневное использование студентами НГИЭУ объясняется тем, что мессенджер Telegram не является официальным источником для получения информации. Данная платформа является наиболее актуальной для создания ботов с набором цепочек-ответов, так как ее суть заключается во взаимодействии пользователя с приложением с помощью текстовых сообщений. На данный момент НГИЭУ насчитывает порядка 5 официальных источников информаций, одним из которых является web-портал «ngieu.ru», он же является основным центром сбора, оповещения и получения данных. В связи с этим было принято решение создать и реализовать проект, главной целью которого будет помощь студентам в период обучения, путем отделения от основного источника информации требуемых данных в единый портал с возможностью использования Telegram - бота.

Ключевые слова - Telegram, чат-бот, справочно-информационная система, Python, функция.

Статья получена 10 февраля 2023

Зуева Светлана Владимировна, Нижегородский государственный инженерно-экономический университет. (email: limonovasvetlana@mail.ru).

Краснов Александр Сергеевич, Нижегородский государственный инженерно-экономический университет. (email: sahik2016@mail.ru).Краснова Анна Сергеевна, Нижегородский государственный инженерно-экономический университет. (e-mail: shochina96@mail.ru).

I. Введение

Актуальность разработки и возможности внедрения данного проекта в повседневное использование студентами НГИЭУ объясняется тем, что мессенджер Telegram не является официальным источником для получения информации, таких как расписание, ссылки на образовательные ресурсы, новости и иных полезных сведений. Данная платформа является наиболее актуальной для создания ботов с набором цепочек-ответов. Суть таких ботов заключается во взаимодействии пользователя с приложением с помощью текстовых сообщений. Бот в Telegram не похож обычный диалог, а также имеет отличия от ботов в любой из социальных сетей. Несмотря на то, что Telegram является одним из самых молодых мессенджеров, владелец сервиса позиционирует свою разработку лидером рынка. Это подтверждается наличием удобного интерфейса, быстрым откликом, обратной связью, как для простого пользователя, так и для разработчика. Универсальность данного приложения, а именно реализация под все современные платформы, такие как Android, iOS, Windows Phone, Windows, macOS, Linux, а также веб-версия проекта, помогло сделать выбор в сторону Telegram.

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

II. Описание метода решения задачи исследования

На данный момент НГИЭУ насчитывает порядка 5 официальных источников информаций, одним из которых является web-портал «ngieu.ru». Он же является основным центром сбора, оповещения и получения данных, необходимых для абитуриентов, студентов. изобилие информации, представленной на портале и в социальных сетях не дает

разработаны с помощью технологии искусственного интеллекта.

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

На рисунке 1 показан рейтинг языков 2021 в коммерческих рабочих проектах.

возможности получить мгновенно

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

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

Чат-боты используют в самых разных сферах. Например, банк Тинькофф разработал голосового помощника Олега. Олег обладает искусственным интеллектом [2]:

- распознаёт и интерпретирует запросы;

- совершает денежные переводы на счета в банке Тинькофф и Сбербанке;

- бронирует столики в ресторанах;

- записывает в салоны красоты;

- покупает билеты в кино;

- консультирует по банковским вопросам и акциям;

- а также может просто поболтать с вами.

В зависимости от принципа работы, выделяют

обучаемых и необучаемых чат-ботов. Необучаемые чат-боты работают по заранее заданному сценарию и предлагают готовые варианты ответа. Обучаемые чат-боты

Java и сейчас является самым популярным языком программирования. В пятерку лучших языков вошли также: C#, Python, PHP. На рисунке 2 можно посмотреть, как менялись данные с 2012-2021 годы.

Рис. 1 - Рейтинг языков программирования в коммерческих проектах [3]

С 1С T-SQL Dart PL-SQL Pascal/Delphi Apex

Рис. 2 - График изменения популярности языков программирования, % [3]

- принцип работы алгоритмов системы (обработчики событий);

- логику базы данных (добавление, удаление и хранение данных, а также выполнение запросов).

Для разработки информационной системы наиболее приемлемым будет использование «клиент-серверной» архитектуры. Пример архитектуры показан на рисунке 3.

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

- возможности системы по работе с интерфейсом пользователя;

Клиентские компьютеры

Прикладная программа 1 (клиентское приложение )

Результаты

Прикладная программа 2 (клиентское приложение)

SQL запросы

Результаты

СУБД

=0

Данные (БД)

Рис. 3 - Архитектура «клиент-сервер» Клиент-серверная архитектура чат-бота для платформы Telegram построена с применением концепции MVC («Модель-Представление-Контроллер»), то есть, модель базы данных отделена от контроллеров (подсистем) и системы обработки ввода/вывода. Применение концепции MVC позволяет выстроить безопасную и отказоустойчивую архитектуру, легкой в поддержке и модификации в будущем. Более того, крупные части приложения отделены друг от друга, т.е можно относительно без проблем заменить базу данных на другую, переписав ее модель.

База данных - это упорядоченный набор структурированной информации или данных, которые обычно хранятся в электронном виде в компьютерной системе [4]. База данных в проекте необходима для выполнения операций с данными (добавление, сохранение, удаление).

class Buttonfdb.Mndel):

_tahlenane_ = 'buttons'

query: sql.Select

id = ColumnCIrteger, SequeneeC'user^id^seq'), primary_feey-Trife]

cateqorv.code = Co\Uffln(Strlng(5B))

category.naffle _ Column(String(50>)

subcategory.code = C&T.umntStringi5en

Bubcategory_name - CoLi>mn(String[56))

info = ColumnCString(399000))

button = Cntujnn(fitrlng(5e))

def _repr^Cself):

return f""n {sel/.ldi - "{self,info}"""

Рис. 4 - Модель таблицы «buttons»

В ходе разработки базы данных были создана модель Button. В данной таблице хранятся сведения о кнопках, выдаваемых пользователю в меню чат-бота: id, код категории (для отображения в CallbackData), название категории (для отображение на кнопке), код подкатегории (для отображения в CallbackData), название подкатегории (для отображения в кнопке), название кнопки (для отображения на кнопке), информация под кнопкой (для отображения информации по нажатию по кнопке).

Модель таблицы представлена на рисунке 4

Подсистема обрабатывает события на вызов пользователем динамического меню через кнопку «Главное меню», обрабатывает событие при команде start, кнопки «Справка», отвечает на ввод неизвестной команды, обрабатывает ошибки, является входом в блок промежуточного программного обеспечения (middleware) такие как подсистема антифлуда и логгирование событий, возвращает пользователю результат обработки его запроса. Любое действие пользователя рассматривается как событие. Событийная модель реагирования на действия пользователя позволяет выстроить простую и понятную архитектуру входящих команд. Перечень событий и вспомогательных функций, используемых в подсистеме приведен таблице 1. Подсистема работы меню и взаимодействия с базой данных описывает логику работы меню т.е обработка событий по нажатию на кнопки и обработка запросов к базе данных для получения информации для кнопок в динамическом меню чат-бота. Перечень событий и вспомогательных функций, используемых в подсистеме приведен таблице 1.

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

У данной подсистемы всего одна функция, представленная на рисунке 5.

Таблица 1 - Подсистемы

Function Declaration обработки событий Function Declaration работы меню и взаимодействия с базой данных

@dp.message_handler(text="Главное меню") @rate_limit (15, 'Главное меню') async def show menu (message: types.Message): menu_cd = CallbackData("show_menu", "level", "category", "subcategory", "button_id")

@dp.message_handler(CommandStart()) @rate_limit(15, 'start') async def bot_start(m: types.Message): def make_callback_data(level, category="0", subcategory="0", button_id="0"): return menu_cd.new(level=level, category=category, subcategory=subcategory, button_id=button_id)

async def list_categories(message: Union[CallbackQuery, Message], **kwargs): markup = await categories_keyboard() async def categories_keyboard():

async def list_subcategories(callback: CallbackQuery, category, **kwargs): markup = await subcategories keyboard(category) categories = await get_categories() for category in categories:

async def list_buttons(callback: CallbackQuery, category, subcategory, **kwargs): markup = await buttons_keyboard(category, subcategory) callback data = make_callback_data(level=CURRENT_LEVEL + 1, category=category.category_code)

async def show_button(callback: CallbackQuery, category, subcategory, button_id): markup = button_keyboard(category, subcategory, button id) async def subcategories_keyboard(category):

button = await get_button(button_id) text = f"{button.info}" await callback.message.edit_text(text=text, reply markup=markup) subcategories = await get_subcategories(category) for subcategory in subcategories:

@dp.callback_query_handler(menu_cd.filter()) async def navigate(call: CallbackQuery, callback_data: dict): callback data = make_callback_data(level=CURRENT_LEVEL + 1,category=category, subcategory=subcategory.subcategory code)

@dp.message_handler(text="Справка") @rate_limit(15, 'Справка') async def info(message: types.Message): async def buttons_keyboard(category, subcategory):

@dp.message_handler() @rate_limit(15, None) async def unknown_command(m: types.Message): buttons = await get_buttons(category, subcategory) for button in buttons:

callback data = make_callback_data(level=CURRENT_LEVEL + 1,category=category, subcategory=subcategory, button id=button.id)

def button_keyboard(category, subcategory, button_id):

osunc def arid_buttonsO :

aurait __' linfo ;f ' *»« "

cateqory_name="***", category_code="***", subcategory! , subcategory_code= **+", button-"***") Рис. 5 - Подсистема заполнения базы данных

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

Подсистема логгирования выводит в консоль администратора на сервере, логги со статусом

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

Так выглядит функция для вызова подсистемы в консоль администратора, представленная на рисунке 6.

logging.basicConfig(forinat=u1 ^(filename)s [HNE:%(lineno)d] #%(levelnaiiie)-8s tXCasctùneJs] X(message)s', leve"Ulogging.INFO,

gle^et-loaajnn.gtBÜG,

Рис. 6 - Функция для вызова подсистемы в консоль администратора

Подсистема антифлуда обрабатывает timeout на вызов команды, введенной пользователем. Простыми словами, пользователь может ввести одну и туже команду не чаще одного раза за 15

секунд. Функция def rate_limit(limit: int, key=None): вызывается декоратором в выбранном хэндлере в представленном рисунке 7 .

[3dp.fnessaqe_handler(text= "Главное меню")

grate_limitC15, 'Главное меню')

async def show_menu(message: types.Message):

U Выполним функцию, которая отправит пользователю кнопки с доступными категориями await list_categories{message)

Рис. 7 - Подсистема антифлуда

iii. Прикладная интерпретация и иллюстрация

ПОЛУЧЕННЫХ РЕЗУЛЬТАТОВ ИССЛЕДОВАНИЯ

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Подсистема оповещения о запуске бота, вызывается функцией async def on startup_notify (dp: Dispatcher): в основном файле app.py служащим для запуска бота. Тем самым с запуском чат-бота на сервере, администраторами придёт оповещение о том, что «Бот запущен».

Для запуска информационной системы необходимо отправить команду /start боту @ngieu_kbot.

Команды боту можно отдавать, используя клавиатуру.

При вызове команды /start' пользователю будет выведено приветственное сообщение,

представленное на рисунке 8.

Для вызова справки о боте, пользователю будет предложено нажать кнопку «Справка» и по нажатию чат-бот выведет информацию пользователю на экран.

Для вызова Главного меню, пользователю предложено нажать кнопку «Главное меню». С вызовом данного события, появится динамическое меню при нажатии, на кнопки которого из базы данных будут появляться запросы на получение данных. Кнопки будут динамически меняться, предлагая выбрать категорию, под категорию и кнопку с выводом информации под ней. Главное меню представлено на русинках 9,10.

.il •Ç'D

NGIEU КВОТ

бот

Я!)

Скорее жми кнопку "Запустить"!!!

Бот Запущен

-Е35» ■ .

■ ftta^

таО

и

Привет, Александр Волков! Я K-bot, unlversity mentor;-) Я помогаю студентам, абитуриентам НГИЭУ быстро находить нужную информацию.

Скорее выбирай раздел в Главном меню - я знаю много интересного про университет!

в

(D Û

NGIEUKBQT

бел

е

NGIEU КВОТ

бот

Скорее выбирай раздел в Главном меню - я знаю много интересного про университет!

Справка ов:1, ^

Привет! Меня зоеут K.bat - я помощник студентов и абитуриентов НГИЭУ! Я могу помочь тебе быстро найти нужную информацию в областях:

1) поступление

2)учебы

3) здоровье и спорт

4) новости универстета Больше не нужно долго ходить по сайтам в поиске нужной информации, ведь есть Я!)

Главное меню

Г 1 Чтобы найти нужную тебе информацию, выбери интересующий раздел:

Абитуриентам ■ч Здоровье, питани...

шва

@ Сообщение... (¡g ф

Главное меню

Спрэ&кэ

Главное меню Справка

Главное меню Справка

Рис. S - Старт чат-бота

Рис.9 - Справка о боте

Рис.10 - Главное меню

VII.

ЗАКЛЮЧЕНИЕ

При реализации анализа предметной области был проведено сравнение средств реализации проекта, в результате которого определено что для разработки системы будет использоваться язык программирования Python и СУБД PostgreSQL. В соответствии со всеми предъявляемыми требованиями разработан простой и удобный интерфейс информационной системы, а также выполнен полный комплекс работ по написанию программного кода для реализации функционала информационной системы. Также в проектной части описан принцип работы пользователей с информационной системой.

Библиография

1. Что такое чат-боты и какие они бывают [Электронный ресурс]. -Режим доступа: https://www.carrotquest.io/chatbot/chatbot-types/dostavki.html (дата обращения: 15.12.2022)

2. Матвеева Н.Ю., Золотарюк А.В. Технологии создания и применения чат-ботов // Научные записки молодых исследователей. 2018. №1. URL: https://cyberleninka.ru/article/n/tehnologii-sozdaniya-i-primeneniya-chat-botov (дата обращения: 14.12.2022).

3. Рейтинг языков программирования 2021 [Электронный ресурс]. -Режим доступа: https://habr.com/ru/post/543346/ (дата обращения: 15.12.2022)

4. Васильева К. Н., Хусаинова Г. Я. Реляционные базы данных // Colloquium-journal. 2020. №2 (54). URL: https://cyberleninka.ru/article/n/relyatsionnye-bazy-dannyh (дата обращения: 15.12.2022).

Development of telegram bot software for students and applicants of GBOU VO NGUEU

S. Zueva, A. Krasnov, A. Krasnova

Abstract - This article analyzes the rating of programming languages and the graph of changes in the popularity of programming languages. Based on the analysis, a project was created and implemented, the main purpose of which is to help students during their studies by separating the required data from the main source of information into a single portal with the possibility of using a Telegram chatbot. The relevance of the development and the possibility of implementing this project in the daily use of NGUE students is explained by the fact that the Telegram messenger is not an official source for obtaining information. This platform is the most relevant for creating bots with a set of response chains, since its essence lies in the interaction of the user with the application using text messages. At the moment, NGIEU has about 5 official sources of information, one of which is the web portal "ngieu.ru ", it is also the main center for collecting, notifying and receiving data. In this regard, it was decided to create and implement a project whose main goal will be to help students during their studies by separating the required data from the main source of information into a single portal with the possibility of using a Telegram bot.

Keywords - telegram, chatbot, reference information system, Python, function.

REFERENCES

1. What are chatbots and what they are [Electronic resource]. -Access mode: https://www.carrotquest.io/chatbot/chatbot-types/dostavki.html (accessed: 15.12.2022)

2. Matveeva N.Yu., Zolotaryuk A.V. Technologies of creation and application of chatbots // Scientific notes of young researchers. 2018. No. 1. URL: https://cyberleninka.ru/article/n/tehnologii-sozdaniya-i-primeneniya-chat-botov (accessed: 14.12.2022).

3. Rating of programming languages 2021 [Electronic resource]. -Access mode: https://habr.com/ru/post/543346 / (accessed: 15.12.2022)

4. Vasilyeva K. N., Khusainova G. Ya. Relational databases // Colloquium-journal. 2020. No. 2 (54). URL: https://cyberleninka.ru/article/n/relyatsionnye-bazy-dannyh (accessed: 15.12.2022).

i Надоели баннеры? Вы всегда можете отключить рекламу.