Научная статья на тему 'СИСТЕМА ВЕДЕНИЯ ОНЛАЙН СТАТИСТИКИ УЧАСТНИКОВ В МЕССЕНДЖЕРЕ DISCORD ПОСРЕДСТВОМ PYTHON И POSTGRESQL'

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

CC BY
329
22
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
DISCORD / PYTHON / POSTGRESQL / СТАТИСТИКА / API / БАЗА ДАННЫХ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Крапивин Роман Русланович, Ахметов Линар Марселевич, Хамидуллин Марат Раисович, Гареева Гульнара Альбертовна

Актуальность рассматриваемой темы обусловлена тем, что в одном из сообществ Discord канала была необходимость по сбору активности участников канала за определенное время и продолжительность. Для решения этой задачи было принято решение разработать базу данных и специального бота, для взаимодействия с этой базой данных и API Discord для выполнения сбора информации. Цель - разработка системы для анализа, сбора и вывода информации по активности участников, разработка базы данных для хранения всей информации. Метод или методология проведения работы: в статье рассмотрен проект по сбору, хранению и выводу информации об активности участников. Результаты: разработан Discord бот на Python, который ведет статистику по активности участников канала, разработана база данных на PostgreSQL, в которой хранятся данные по всем участникам и их активности. Область применения результатов: функционал бота можно использовать для менеджмента участников канала, выделения самых активных и их поощрения.

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Крапивин Роман Русланович, Ахметов Линар Марселевич, Хамидуллин Марат Раисович, Гареева Гульнара Альбертовна

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

ONLINE STATISTICS SYSTEM FOR PARTICIPANTS IN THE DISCORD MESSENGER USING PYTHON AND POSTGRESQL

The relevance of the topic under consideration is since in one of the Discord channel communities there was a need to collect the activity of channel members for a certain time and duration. To solve this problem, it was decided to develop a database and a special bot to interact with this database and the Discord API to collect information. The goal: development of a system for analyzing, collecting, and displaying information on the activity of participants, developing a database to store all information. The method or methodology of the work: the article considers a project for collecting, storing, and displaying information about the activity of participants. Results: a Python discord bot was developed that keeps statistics on the activity of channel members, a PostgreSQL database was developed that stores data on all participants and their activity. Scope of the results: the functionality of the bot can be used to manage channel members, highlight the most active and allocate incentives for greater activity

Текст научной работы на тему «СИСТЕМА ВЕДЕНИЯ ОНЛАЙН СТАТИСТИКИ УЧАСТНИКОВ В МЕССЕНДЖЕРЕ DISCORD ПОСРЕДСТВОМ PYTHON И POSTGRESQL»

DOI: 10.12731/2227-930X-2022-12-3-125-137 УДК 004.93

СИСТЕМА ВЕДЕНИЯ ОНЛАЙН СТАТИСТИКИ УЧАСТНИКОВ В МЕССЕНДЖЕРЕ DISCORD ПОСРЕДСТВОМ PYTHON И POSTGRESQL

Р.Р. Крапивин, Л.М. Ахметов, М.Р. Хамидуллин, Г.А. Гареева

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

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

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

Метод или методология проведения работы: в статье рассмотрен проект по сбору, хранению и выводу информации об активности участников.

Результаты:разработан Discord бот на Python, который ведет статистику по активности участников канала, разработана база данных на PostgreSQL, в которой хранятся данные по всем участникам и их активности.

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

Ключевые слова: Discord; Python; PostgreSQL; статистика; API; база данных

ONLINE STATISTICS SYSTEM FOR PARTICIPANTS IN THE DISCORD MESSENGER USING PYTHON AND POSTGRESQL

R.R. Krapivin, L.M. Akhmetov, M.R. Khamidullin, G.A. Gareeva

The relevance of the topic under consideration is since in one of the Discord channel communities there was a need to collect the activity of channel members for a certain time and duration.

To solve this problem, it was decided to develop a database and a special bot to interact with this database and the Discord API to collect information.

The goal: development of a system for analyzing, collecting, and displaying information on the activity of participants, developing a database to store all information.

The method or methodology of the work: the article considers a project for collecting, storing, and displaying information about the activity of participants.

Results: a Python discord bot was developed that keeps statistics on the activity of channel members, a PostgreSQL database was developed that stores data on all participants and their activity.

Scope of the results: the functionality of the bot can be used to manage channel members, highlight the most active and allocate incentives for greater activity

Keywords: Discord; Python; PostgreSQL; Statistics; API; Database

Введение

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

Данную разработку целесообразно для менеджмента участников канала для выделения самых активных участников игровых

событий в определенное время для поощрения большей активности на канале.

В течение дня это событие возникает в 7, 16, 21 и 23 часа и продолжается ровно час. В эти часы бот просматривает кто находится в голосовых каналах и запоминает это. После чего бот выводит отчет и графики о прошедшем событии, а именно какое количество минут и в какое время участники присутствовали.

Материалы и методы

Для правильной работы бота необходимо:

• Наличие библиотек;

• Наличие базы данных;

• Присутствие бота на нужном Discord канале сообщества;

• Наличие хостинга, где будет расположен бот и база данных. При разработке использовались следующие библиотеки Python,

представленные на рисунке 1.

from asyncio.tasks import sleep import requests import discord

import matplotlib.pyplot as pit from matplotlib import rcParams from discord.ext import commands, tasks import datetime

from matplotlib import fontmanager as fm, rcParams

import psycopg2

import asyncio

import random

import json

Рис. 1. Библиотеки Python

В начале каждого события бот просматривает определенные голосовые каналы Discord сервера на наличие участников [4, 8]. Когда бот замечает присутствие, запоминается уникальный

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

Рис. 2. Схема работы цикла

На рисунке 3 представлен участок кода, который просматривает голосовые каналы и вводит информацию в БД, где цикл повторяется каждые 5 секунд.

После окончания события, бот автоматически формирует график активности по этому событию[2,6]. Для формирования графика используется библиотека та1р!оШЬ. Для получения данных

по прошедшему событию, используется запрос в БД (рис. 5). По этим данным формируется график активности (рис. 4)

for voice_channel in voice_channel_list: # Записывает ID голосовых каналов, в которых будут собраться учестники if "БЗС" in str(voice_channel):# При наличии слова "БЗС", этот голосовой канал запоминается для мониторинга All_BZS_Channel.append(voice_channel.id)

for Channel_BZS in All_BZS_Channel:# Анализирует каждый голосовой канал

ID_List = agent.get_channel(Channel_BZS).voice_states.keys()# Получет ID пользователей находящихся в голосовом for IDJJser in ID_List:

All_users_id.append(ID_User)# Добавляет Имя участника в общий список All users add_info_in_table(All_users_id, conn, cursor)# Внесение информации об активности участников в Б^

Рис. 3. Проверка наличия онлайн участников

0tasks.loop(seconds = 20) async def send_itog_everbzs():

to_time = datetime.datetiiie.now() .strftirae("%H:%M")

if (to_time -- '08:01' or to_time — '17:01' or to_time -- '22:01' or to_tine -- '00:01'):

channel_statistic - agent.get_channel(844548552864563200) # канал, в который будут отправлены графики статистики channelbzs = agent.get_channel(803750654589665300) # второй канал, в который будут отправлены графики статистики now = datetime.datetine.now() # Берется текущее время

to_day = (now - datetime.timedelta(hours=l)).strftime("%Y-%m-%d") # Берется текущая дата, с вычитом часа hour = int((now - datetime.timedelta(hours=l)).strftime("%Н"))# Берется прошлый час title_print - f'B3C: {to_day} время: {hour} час(ов)" # Формирование заголовка

enb - discord.Embed( # Формирование embed, это такой тип класса, в котором удобно выводить информацию title = title_print, colour = discord.Color.blue()) rows = try_conn(nane_table, to_day, hour) # Выполняется запрос в БД, с текущей датой и часом if rows !- []: # Если в результате запроса нет никаких данных, задача прекращается all_img = create_graf_info(rows) # формирование графиков await channel_statistic.send(embed = emb) # отправка заголовка await channel_statistic.send(files = all_img)?r отправка статистики all_ii»g = create_graf_info(rows) await channel_bzs.send(embed = emb) await channel_bzs.send(files = all_img) await agent.change_presence(activity=discord.Activity(type=discord.ActivityType.watching, пате="АНИМЕ")) await asyncio.sleep(61)

Рис. 4. Функция по выводу статистики после события

Запрос на получение активности всех участников на указанную дату представлен на рисунке 4.

def try_conn(name_table, today, hour): conn = init_bd() cursor = conn.cursor()

cursor.execute(f"SELECT * FROM {name_table} WHERE DATA_BZS = "{t^day}" and HOUR = '{hour}';") rows = cursor.fetchall() conn.close() return rows

Рис. 5. Запрос, который заполняется в Python и отправляется на выполнение в PostgreSQL

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

def get_rows_week(): conn = init_bd()

cursor.execute(f..... SELECT player_id, SUM(ARRAY_LENGTH(score,1)) AS bzs_sum FROM {nane_table} WHERE

databzs BETWEEN (NOW() - "7 days1::INTERVAL)::DATE AND NOW()::DATE GROUP BY player_id.....)

rows = cursor.fetchallQ

conn.close()

return rows

Рис. 6. Запрос на получение активности всех участников за неделю

Для хранения данных была выбрана база данных PostgreSQL.

PostgreSQL является реляционной базой данных, она подходит для реализации функционала хранения информации по активности. База данных состоит из 1 главной таблицы, показанной на рисунке 7.

Результат План выполнения Notifications Сообщения

id А [PK] / nteger playerjd . score bigint integers data_bzs , date houi integer /

1 2445 369427180834521100 (0,1,2,3,4,5,6,7) 2021 12-04 16

2 2444 552061405910532116 15,16,17,18,19,20,21,223,24,25,26,27,28,29,30,31,32,33) 2021 11-30 16

3 2443 201783737631899648 (24,25,26,27,28,29,30,31) 2021 11-28 16

4 2442 518825460986019855 33,34,35,36,37,38,39,40,41,4243,44,45,46,47,48,49,50,51) 2021 11-28 16

5 2441 369427180834521100 41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59) 2021 11-28 16

6 2440 246659285885386753 (44,45.46,47,48,49.50,51,52,53,54,55,56,57.58,59) 2021 11-27 16

7 2439 518825460986019855 (0.1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22) 2021 11-27 16

8 2438 518825460986019855 (29) 2021 11-26 23

9 2437 425312253026500628 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50) 2021 11-26 16

10 2436 369427180834521100 3233,34,35,36,37,38,39,40,41,42,43.44,45,46,47,48,49,50) 2021 11-26 16

11 2435 552061405910532116 (0,1,2Д4,5,6) 2021 11-25 21

12 2434 518064875411341353 41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59) 2021 11-25 16

13 2433 425312253026500628 41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59) 2021 11-25 16

14 2432 201783737631899648 (0,12,3,4,5,6) 2021 11-25 16

14 9441 ft1fifl9ft4ftnQRftni9Rftft 141R1fi171iHQ9il91 99 94 9Л 9ft 9ft 970Я 9Q 4(141 491 9(191 11.9ft 1ft

Рис. 7. База данных PostgreSQL

Таблица состоит из следующих столбцов, где:

• player_id - это идентификационный номер пользователя в Discord

• score - массив, в котором хранятся минуты онлайна

• data_bzs - это день когда был пользователь был онлайн

• hour - час это в какой именно час были в онлайне

Результаты

В результате сбора информации во время события, бот формирует график активности всех участников, которые на нем присутствовали, используя запрос в базе данных. Пример графика показан на рисунке 8, где ось X - это минутная полоса, ось Y - это полоса активности, над графиком указано имя участника канала, который присутствовал на событии [7].

Информационная БЗС ют

БЗС: 2021-11-22 время: 16 час(ов)

[DESU] Planya Chan

\ I ... m

0 10 20 Э0 40 50 59

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

JERICHOX3D

1.....>3

О 10 20 X 40 SO 59 Seidanjet

I'.....3

О 10 20 30 40 5Q 59

0 10 20 ЭО 40 50 59

MRdestroy [Q>

1.....g

0 10 20 30 40 НО 59 SpiritOfBalance

1 ■ ■ ,

О w 20 30 40 50 59

Рис. 8. График с данными о событии

Бот формирует еженедельный отчет, который отправляется в понедельник после 00:00 по МСК. В нем отображены имена участников Discord канала, имена аккаунтов и их суммарное присутствие на событиях за всю неделю, так же бот показывает всех участников, которые ни разу не присутствовали во время события. Пример отчета показан на рисунке 9.

Информационная БЗС 601

Участники БЗС за период: 2021-11-29 по 2021-12-05

Имя на сервере

[ОЕБи] Р1апуа-СИэп

Имя на сервере

[1иХ] JERICHO*ЗD

Имя на сервере

В^ВоотМапйиБ

Имя на сервере

ЫауаИа

Имя дискорда Общее время

77 — V -1- V присутствия

] 8 минут(ы)

Имя дискорда Общее время

тта о присутствия

52 минут(ы)

Имя дискорда Общее время

шаман- присутствия

68 минут(ы)

Имя дискорда Общее время

ЫауаИа присутствия

28 минут(ы)

Имя дискорда

Имя дискорда

Navaha

Участники с ролью "Рядовой", которых не было на БЗС за период: 2021-11-29 по 2021-12-05

Имя на сервере Имя дискорда

ISIevinKelevra Slevin Kelevra

Имя на сервере Имя дискорда

[LuX] enigma2013 t Erida t

Имя на сервере Имя дискорда

[SOLI] баЛаНс ЗахВаТ4ик

Имя на сервере Имя дискорда

[ХеХ] ZiroTwo оО> Polpalki

Имя на сервере Имя дискорда

AbADDoN (Роман) AbADDoNfPoMaH]

Рис. 9. Отчет по участникам за неделю

Выводы

Был разработан Discord бот на Python, который ведет статистику по активности участников канала, разработана база данных на PostgreSQL, в которой хранятся данные по всем участникам и их активности, для взаимодействия с базой данных, используется библиотека psycorg2, разработан статистический вывод данных в виде отчетов и графиков, использующий

графические инструменты из библиотеки matplotlib. Функционал бота можно использовать для поощрения самых активных участников событий или для отслеживания неактивных, повышая менеджмент активности Discord сообщества. Бот размещен на хостинге Heroku там же и расположена база данных. В будущем, функционал бота можно расширить, добавив возможность вывода активности отдельно взятых участников, указывая интересующую дату или период [10].

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

1. Khamidullin M.R., Mardanshin R.G., Prozorov A.V., Karimov R.I. The Introduction of QR-Codes in Production Processes // Journal of Environmental Treatment Techniques. 2019, Special Issue on Environment, Management and Economy. P. 1097-1100.

2. Akhmetov L.M., Bikov D.I., Khamidullin M.R., Gareeva G.A., Gabdullina G.K. Development of a system for analyzing and unloading road traffic using artificial intelligence // Journal of Physics: Conference Series, 2021, vol. 2094. http://dx.doi.org/10.1088/1742-6596/2094/3/032036

3. Ахметов Л.М. Разработка системы анализа влажности и температуры в помещении на базе микроконтроллера // Инновационные технологии, экономика и менеджмент в промышленности: сборник научных статей IV международной научной конференции. 2223 апреля 2021 г. Часть 1.: материалы конференции. Волгоград: ООО «Конверт», 2021. 248 с.

4. Ахметов Л.М., Биков Д.И., Хамидуллин М.Р. Разработка системы для анализа и разгрузки дорожного трафика с применением искусственного интеллекта // International Journal of Advanced Studies, 2021, vol. 11(1), pp. 87-98.

5. Биков Д.И., Насибулин Р.О., Гареева Г.А. Потенциал и перспективы использования технологии интернет вещей // Приоритетные направления инновационной деятельности в промышленности: сборник научных статей международной научной конференции. 30-31 января 2021 г. Казань: ООО «Конверт», 2021. С.188-189.

6. Бич, Мартин. Микроконтроллеры семейства XC166. Вводный курс разработчика / Мартин Бич, Дэвид Гринхилл. М.: ДМК Пресс, Додэка XXI, 2016. 200 с.

7. Кечиев Л.Н. IBIS-модели и их применение в задачах ЭМС. М.: Грифон, 2016. 638 с.

8. Крапивин Р.Р., Гареева Г.А. Получение доступа к данным путем авторизации в аккаунт с помощью библиотеки Requests в языке Python // Инновационные технологии, экономика и менеджмент в промышленности: сборник научных статей IV международной научной конференции. 22-23 апреля 2021 г. Часть 1. Волгоград: ООО «Конверт», 2021. С. 206-208.

9. Правоткин И.А. Настройка и запуск программ на Python на удалённом хостинге // Приоритетные направления инновационной деятельности в промышленности сборник научных статей по итогам двенадцатой международной научной конференции. Казань: ООО «Конверт», 2020. С. 78-80.

10. Тугов В.В. Проектирование автоматизированных систем управления : учебное пособие / В.В. Тугов, А.И. Сергеев, Н.С. Шаров. Санкт-Петербург: Лань, 2019. 172 с.

References

1. Khamidullin M.R., Mardanshin R.G., Prozorov A.V., Karimov R.I. The Introduction of QR-Codes in Production Processes. Journal of Environmental Treatment Techniques. 2019, Special Issue on Environment, Management and Economy, pp. 1097-1100.

2. Akhmetov L.M., Bikov D.I., Khamidullin M.R., Gareeva G.A., Gabdullina G.K. Development of a system for analyzing and unloading road traffic using artificial intelligence. Journal of Physics: Conference Series, 2021, vol. 2094. http://dx.doi.org/10.1088/1742-6596/2094/3/032036

3. Akhmetov L.M. Innovatsionnye tekhnologii, ekonomika i menedzh-ment v promyshlennosti: sbornik nauchnykh statey IV mezhdunarod-noy nauchnoy konferentsii. 22-23 aprelya 2021 g. Chast' 1.: materialy konferentsii [Innovative technologies, economics and management in

industry: collection of scientific articles of the IV international scientific conference. April 22-23, 2021 Part 1: conference proceedings]. Volgograd: Envelope LLC, 2021, 248 p.

4. Akhmetov L.M., Bikov D.I., Khamidullin M.R. International Journal of Advanced Studies, 2021, vol. 11(1), pp. 87-98.

5. Bikov D.I., Nasibulin R.O., Gareeva G.A. Prioritetnye napravleniya innovatsionnoy deyatel'nosti v promyshlennosti: sbornik nauchnykh statey mezhdunarodnoy nauchnoy konferentsii. 30-31 yanvarya 2021 g [Priority areas of innovative activity in industry: collection of scientific articles of the international scientific conference. January 30-31, 2021]. Kazan: Envelope LLC, 2021, pp.188-189.

6. Beach, Martin. Mikrokontrollery semeystvaXC166. Vvodnyy kurs raz-rabotchika [Microcontrollers of the XC166 family. Introductory Developer Course] / Martin Beach, David Greenhill. M.: DMK Press, Dodeka XXI, 2016, 200 p.

7. Kechiev L.N. IBIS-modeli i ikh primenenie v zadachakh EMS [IBIS-models and their application in EMC problems]. M.: Grifon, 2016,638 p.

8. Krapivin R.R., Gareeva G.A. Innovatsionnye tekhnologii, ekonomika i menedzhment v promyshlennosti: sbornik nauchnykh statey IV mezhdunarodnoy nauchnoy konferentsii. 22-23 aprelya 2021 g. Chast' 1 [Innovative technologies, economics and management in industry: collection of scientific articles of the IV international scientific conference. April 22-23, 2021 Part 1]. Volgograd: Envelope LLC, 2021, pp. 206-208.

9. Pravotkin I.A. Prioritetnye napravleniya innovatsionnoy deyatel'nosti v promyshlennosti sbornik nauchnykh statey po itogam dvenadtsatoy mezhdunarodnoy nauchnoy konferentsii [Priority areas of innovative activity in the industry. Collection of scientific articles following the results of the twelfth international scientific conference]. Kazan: Envelope LLC, 2020, pp. 78-80.

10. Tugov V.V. Proektirovanie avtomatizirovannykh sistem upravleniya : uchebnoe posobie [Design of automated control systems: textbook] / V.V. Tugov, A.I. Sergeev, N.S. Sharov. St. Petersburg: Lan, 2019, 172 p.

ДАННЫЕ ОБ АВТОРАХ Крапивин Роман Русланович, студент

Набережночелнинский филиал Казанского национального исследовательского технического университета им. А.Н. Туполева

Академика Королева, 1, г. Набережные Челны, 423814, Российская Федерация Jerichotyrant1 @yandex. ru

Ахметов Линар Марселевич, студент

Набережночелнинский филиал Казанского национального исследовательского технического университета им. А.Н. Туполева

Академика Королева, 1, г. Набережные Челны, 423814, Российская Федерация diobrandmayer@gmail. com

Хамидуллин Марат Раисович, доцент, кандидат экономических наук

Набережночелнинский филиал Казанского национального исследовательского технического университета им. А.Н. Туполева

Академика Королева, 1, г. Набережные Челны, 423814, Российская Федерация nayka_prom@mail. ru

Гареева Гульнара Альбертовна, доцент, кандидат педагогических наук

Набережночелнинский филиал Казанского национального исследовательского технического университета им. А.Н. Туполева

Академика Королева, 1, г. Набережные Челны, 423814, Российская Федерация gagareeva1977@mail. ru

DATA ABOUT THE AUTHORS Roman R. Krapivin, student

Kazan National Research Technical University named after A. N. Tupolev - KAI, Branch in Naberezhnye Chelny 1, Akademika Koroleva Str., Naberezhnye Chelny, 423814, Russian Federation Jerichotyrantl @yandex. ru

Linar M. Akhmetov, student

Kazan National Research Technical University named after A. N. Tupolev - KAI, Branch in Naberezhnye Chelny 1, Akademika Koroleva Str., Naberezhnye Chelny, 423814, Russian Federation diobrandmayer@gmail. com

Marat R. Khamidullin, PhD

Kazan National Research Technical University named after A. N. Tupolev - KAI, Branch in Naberezhnye Chelny 1, Akademika Koroleva Str., Naberezhnye Chelny, 423814, Russian Federation [email protected]

ORCID: https://orcid.org/0000-0002-3326-0955

Gulnara A. Gareeva, PhD

Kazan National Research Technical University named after A. N. Tupolev - KAI, Branch in Naberezhnye Chelny 1, Akademika Koroleva Str., Naberezhnye Chelny, 423814, Russian Federation gagareeva1977@mail. ru

Поступила 10.05.2022

После рецензирования 25.05.2022

Принята 30.05.2022

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

Received 10.05.2022 Revised 25.05.2022 Accepted 30.05.2022

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