Будь ласка, використовуйте цей ідентифікатор, щоб цитувати або посилатися на цей матеріал: https://er.chdtu.edu.ua/handle/ChSTU/9095
Назва: Програмна інтегрована система автоматизації взаємодій елементів для платформи Discord
Автори: Олексюк, Вадим Володимирович
Євич, Богдан Володимирович
Ключові слова: автоматизація;Discord;модерація;адміністрування;чат-боти;API
Дата публікації: 2024
Короткий огляд (реферат): Євич Б.В. – «Програмна інтегрована система автоматизації взаємодій елементів для платформи Discord»: кваліфікаційна робота бакалавра з спеціальності 121 – «Інженерія програмного забезпечення» ЧДТУ, м.Черкаси 2024 рік. В даній кваліфікаційній роботі бакалавра розроблено програмну інтегровану систему автоматизації елементів для платформи Discord. Система дозволяє автоматизувати рутинні завдання, пов'язані з роботою модераторів, робота з API адресами та адміністраторів Discord-серверів. Система складається з наступних модулів: - модуль збирання даних ботом з discord: сервера включає в себе отримання інформації з текстових повідомлень та взаємодій учасників; - модуль аналізу даних: аналізує зібрані дані та виявляє закономірності; - модуль прийняття рішень: приймає рішення на основі аналізу даних; - модуль виконання дій: виконує дії на основі прийнятих рішень. Система протестована на тестовому Discord-сервері та показала високу ефективність.
URI (Уніфікований ідентифікатор ресурсу): https://er.chdtu.edu.ua/handle/ChSTU/9095
Розташовується у зібраннях:121 Інженерія програмного забезпечення (Інженерія програмного забезпечення)

Файли цього матеріалу:
Файл Опис РозмірФормат 
Пояснювальна записка - Євич.pdf
  Restricted Access
4.22 MBAdobe PDFПереглянути/Відкрити    Запит копії


Усі матеріали в архіві електронних ресурсів захищено авторським правом, усі права збережено.

Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ 
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ 
Факультет інформаційних технологій і систем 
Кафедра програмного забезпечення автоматизованих систем 
 
 
ПОЯСНЮВАЛЬНА ЗАПИСКА 
до кваліфікаційної роботи 
бакалавра 
 
 
на тему:  Програмна інтегрована система автоматизації взаємодій елементів 
для платформи Discord 
 
 
Виконав: студент 4 курсу, групи ПЗС-2144 
спеціальності  
121 «Інженерія програмного забезпечення»  
(шифр і назва напряму підготовки) 
 
 
Студент Євич Б.В. 
 (прізвище та ініціали) 
Керівник Олексюк В.В. 
 (прізвище та ініціали) 
Рецензент Трембовецька Т.В.  
 (прізвище та ініціали) 
 
 
 
Черкаси 2024 
ЧДТУ 242238.004ПЗ 
Черкаський державний технологічний університет                                                                                    
повне найменування вищого навчального закладу 
Факультет інформаційних технологій і систем 
Кафедра  програмного забезпечення автоматизованих систем 
Освітній рівень бакалавр 
Спеціальність 121 «Інженерія програмного забезпечення» 
Освітня програма Інженерія програмного забезпечення 
 
ЗАТВЕРДЖУЮ 
Зав. кафедри ПЗАС, професор 
                                           С. Голуб  
«___» _______________ 2024 року 
 
З А В Д А Н Н Я 
НА КВАЛІФІКАЦІЙНУ РОБОТУ СТУДЕНТУ 
Євич Богдан Володимирович 
(прізвище, ім’я, по батькові) 
1. Тему проекту (роботи) Програмна інтегрована система автоматизації взаємодій елементів для 
платформи Discord 
Керівник проекту (роботи) Олексюк Вадим Володимирович к.т.н. доцент  
                      (прізвище, ім’я , по батькові, науковий ступінь, вчене звання) 
Затверджені наказом Черкаського державного технологічного університету від «26 лютого»               
2024 року № 60/04 
2.Строк подання студентом проекту (роботи) 03.06.2024 
3. Вхідні дані до проекту (роботи) 1) Платформа x86-64, 2) Операційна система Windows 11 
3)Мова програмування Python 3.12.3 
4. Зміст розрахунково-пояснювальної записки (перелік питань, які потрібно розробити)  
Розділ 1. Існуючі методи та засоби розв’язання поставлених завдань 
Розділ 2. Впровадження результатів дослідження у практику проектування програмного 
забезпечення інформаційних систем 
Розділ 3. Розробка та тестування програмного забезпечення 
Висновки; 
Список використаних джерел; 
Додатки А, Додатки Б, Додатки В. 
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових робіт проекту); 
Додатки В - Графічний матеріал. 
5 
ЧДТУ 242238.004ПЗ 
6. Консультанти розділів роботи 
Прізвище, ініціали та посади Підпис, дата 
Розділ 
консультанта Завдання видав Завдання прийняв 
1    
2    
7. Дата видачі завдання    2 грудня   2023 р. 
КАЛЕНДАРНИЙ ПЛАН 
Строк виконання 
№ етапів 
Назва етапів випускної роботи Примітки 
п/п кваліфікаційної 
роботи 
1 Постановка задачі 02.12.2023 виконано 
2 Підготовка завдання 05.01.2024 виконано 
3 Погодження завдання 16.01.2024 виконано 
4 Затвердження завдання 26.02.2024 виконано 
 Основна стадія   
1 Підбір матеріалів 27.02.2024 виконано 
2 Аналіз шляхів вирішення поставленої задачі 04.02.2024 виконано 
3 Розрахунок основних параметрів роботи 10.03.2024 виконано 
4 Вибір кінцевого варіанту проектного рішення 17.03.2024 виконано 
5 Оформлення первісної редакції роботи 25.03.2024 виконано 
 Заключна стадія   
1 Узгодження прийнятих проектних рішень з 31.04.2024 виконано 
керівником 
2 Оформлення пояснювальної записки роботи в 13.05.2024 виконано 
кінцевій редакції 
3 Попередній захист роботи 27.05.2024 виконано 
4 Затвердження роботи 27.05.2024 виконано 
5 Рецензування роботи 28.05.2024 виконано 
6 Захист роботи 03.06.2024  
 
Студент                                           _____________________      Євич Б.В. 
  (підпис)   (прізвище та ініціали) 
Керівник роботи _____________________   Олексюк В.В. 
  (підпис)   (прізвище та ініціали) 
6 
ЧДТУ 242238.004ПЗ 
АНОТАЦІЯ 
Євич Б.В. – «Програмна інтегрована система автоматизації взаємодій 
елементів для платформи Discord»: кваліфікаційна робота бакалавра з 
спеціальності 121 – «Інженерія програмного забезпечення» ЧДТУ, м.Черкаси 
2024 рік. 
В даній кваліфікаційній роботі бакалавра розроблено програмну 
інтегровану систему автоматизації елементів для платформи Discord. Система 
дозволяє автоматизувати рутинні завдання, пов'язані з роботою модераторів, 
робота з API адресами та адміністраторів Discord-серверів. 
Система складається з наступних модулів: 
- модуль збирання даних ботом з discord: сервера включає в себе 
отримання інформації з текстових повідомлень та взаємодій учасників; 
- модуль аналізу даних: аналізує зібрані дані та виявляє закономірності; 
- модуль прийняття рішень: приймає рішення на основі аналізу даних; 
- модуль виконання дій: виконує дії на основі прийнятих рішень. 
Система протестована на тестовому Discord-сервері та показала високу 
ефективність. 
Ключові слова: автоматизація, Discord, модерація, адміністрування, чат-
боти, API. 
  
7 
ЧДТУ 242238.004ПЗ 
ANNOTATION 
Yevych B.V. - "Software integrated system for automating the interaction of 
elements for the Discord platform": bachelor's thesis in the specialty 121 - "Software 
Engineering", ChSTU, Cherkasy, 2024. 
In this bachelor's thesis, a software integrated system for automating elements for 
the Discord platform was developed. The system allows you to automate routine tasks 
related to the work of moderators, work with API addresses and administrators of 
Discord servers. 
The system consists of the following modules: 
- the module for collecting data by a bot from discord: the server includes 
obtaining information from text messages and interactions of participants; 
- data analysis module: analyzes the collected data and identifies patterns; 
- decision-making module: makes decisions based on data analysis; 
- action module: performs actions based on the decisions made. 
The system has been tested on a test Discord server and showed high efficiency. 
Keywords: automation, Discord, moderation, administration, chatbots, API. 
  
8 
ЧДТУ 242238.004ПЗ 
ЗМІСТ 
ВСТУП ........................................................................................................................... 4 
РОЗДІЛ 1 ІСНУЮЧУ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ ПОСТАВЛЕНИХ 
ЗАДАЧ ........................................................................................................................... 6 
РОЗДІЛ 2 ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У ПРАКТИКУ 
ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ІНФОРМАЦІЙНИХ 
СИСТЕМ ...................................................................................................................... 19 
2.1 Моделювання предметної області .................................................................. 20 
2.1.1 Предметна область моделювання. Модель предметної області. Словник 
предметної області .............................................................................................. 20 
2.1.2 Елементи моделювання предметної області ........................................... 17 
2.1.3 Робоча область моделювання ................................................................... 29 
2.2 Формування та аналіз вимог ............................................................................ 31 
2.2.1 Формування вимог до програмного забезпечення. Первинні і детальні 
вимоги. Вимоги замовника і розробника. Функціональні та нефункціональні 
 
вимоги .................................................................................................................. 33 
 
2.2.2 Формування вимог за допомогою діаграми прецедентів ...................... 29 
 
2.3 Проектування логічної структури програмного комплексу ......................... 38 
  
2.3.1 Діаграми класів .......................................................................................... 38 
2.3.2 Діаграми пакетів ........................................................................................ 37 
2.4 Архітектурне проектування ............................................................................. 51 
2.4.1 Діаграма компонентів ................................................................................ 52 
2.4.2 Розгортання програмної системи на апаратних засобах.  Діаграма 
розгортання ......................................................................................................... 47 
2.5 Моделювання поведінки системи ................................................................... 48 
2.5.1 Діаграма діяльності ................................................................................... 50 
2.5.2 Діаграма послідовності ............................................................................. 58 
  
 
 
Зм. Лист № Докум. 
 Підпис Дата ЧДТУ 242238.00 4ПЗ 
Розроб. Є ич Б.В. «Програмна інтегр ована система Літ. Лист Листів 
К ерівник Олексюк. В.В. автоматизації взаємодій елементів для   
Н.контр.  
Півень О.Б. платформи Discord» ФІТІС, Кафедра ПЗАС, 
З атв.  Голуб С.В. (Пояснювальна записка) ПЗС-2144 
 9 
ЧДТУ 242238.004ПЗ 
2.5.3 Діаграма комунікації ................................................................................. 59 
2.5.4 Діаграма скінченного автомату ................................................................ 59 
РОЗДІЛ 3 РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ 62 
3.1 Розробка програмного комплексу ................................................................... 62 
3.1.1 Обґрунтування вибору засобів реалізації ................................................ 56 
3.1.2 Опис структурної (функціональної) схеми ............................................. 56 
3.1.3 Опис логічної схеми системи ................................................................... 58 
3.1.4 Розробка бази даних .................................................................................. 59 
3.1.5 Розробка інтерфейсу користувача ............................................................ 66 
3.1.6 Опис розробки програмних компонентів ................................................ 76 
3.2 Тестування системи .......................................................................................... 77 
3.2.1 Модульне тестування ................................................................................ 77 
3.2.2 Інтеграційне тестування ............................................................................ 87 
 3.2.3 Системне тестування ................................................................................. 89 
 3.2.4 Приймальне тестування ............................................................................ 83 
 3.3 Приклади впровадженого програмного комплексу ...................................... 85 
 ВИСНОВКИ ................................................................................................................ 87 
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ................................................................... 89 
ДОДАТОК А ................................................................ Error! Bookmark not defined. 
ДОДАТОК Б ................................................................. Error! Bookmark not defined. 
ДОДАТОК B ................................................................ Error! Bookmark not defined. 
ДОДАТОК Г ................................................................. Error! Bookmark not defined. 
 
 
  
 Лист 
ЧДТУ 242238.004ПЗ 
З м. Лист № док. Підпис Дата  
    
10 
ЧДТУ 242238.004ПЗ 
ВСТУП 
Актуальність теми:  
Зараз боти є важливим інструментом, який допомагає автоматизувати 
завдання або спілкуватися з користувачами. На жаль, багато з них мають 
обмежене використання, оскільки вони виконують лише одну дію, а це означає, 
що вони надають мало користі, і вам знадобиться їх  набагато більше. 
Discord значною мірою покладається на використання чат-бота для 
модерації, а також для нагадувань і опитувань серед інших функцій. Незважаючи 
на це, доступні параметри, як правило, застаріли або складні після встановлення 
або не мають можливостей після встановлення. 
Актуальність теми полягає в тому, що вона спрямована на розробку 
сучасного, гнучкого та ефективного бота Discord. Бот має бути орієнтованим на 
користувача, щоб задовольняти потреби користувачів і сприяти розвитку 
платформи. 
Тема і завдання розробки:  
Основне завдання цього кваліфікаційної роботи бакалавра є - розробити 
програмно інтегрована система автоматизації взаємодій елементів для платформи 
Discord який поєднує в собі функції декількох ботів, які використовуються 
серверами Discord, щоб зменшити їх кількість та полегшити управління. 
Завдання: 
- проаналізувати аналоги; 
- проаналізувати необхідний функціонал і визначити їх задачі; 
- розробка бази даних; 
- провести тестування; 
Об’єкт розробки 
Програмно інтегрована система автоматизації і взаємодій елементів. 
Предмет розробки 
Процес розробки програмного забезпечення - програмно інтегрованої 
системи автоматизації взаємодій елементів, яка поєднує в собі функції різних 
11 
ЧДТУ 242238.004ПЗ 
ботів, що використовуються серверами Discord, включаючи модерацію, розваги, 
налаштування сервера, економіку, рівні, аналітику та розіграші призів. 
Методи проектування та конструювання  
- використовується модульної архітектури для бота; 
- використовується прости та інтуїтивний інтерфейс для користувача; 
- боти є гнучкими, настроюються і можуть бути адаптовані до потреб 
конкретного сервера discord; 
- бот оптимізований для ефективного використання ресурсів сервера і 
забезпечує стабільну роботу навіть при високих навантаженнях; 
- його розробка включає створення надійної бази даних для зберігання 
інформації. 
Опис отриманих результатів:  
Розроблений програмне забезпечення для корисного та функціонального 
бота Discord, який може значно спростити управління сервером, підвищити 
продуктивність та забезпечити комфортне середовище для спілкування членів 
спільноти. 
Особистий внесок автора: 
  На основі аналізу цільової аудиторії та поточних потреб було розроблено 
рішення свої вимог та планування можливостей майбутнього бота.  
- розробити модульну архітектуру ботів, яка забезпечує гнучкість, 
масштабованість і можливість легко додавати або видаляти функції; 
- розробка ключових компонентів бота, включаючи ядро, інтерфейс 
користувача, систему команд, обробку подій та взаємодію з api discord; 
- реалізація різних функцій бота, таких як модерація, розваги, 
налаштування сервера, економіка, система рівнів та інші; 
- інтеграція та тестування функцій бота, забезпечення стабільності та 
безпеки його роботи; 
- оптимізуйте використання ресурсів сервера, щоб бот працював 
ефективно навіть при високому навантаженні; 
- розробка надійної системи зберігання даних для зберігання інформації 
про користувачів і стан ботів; 
- створення детальної документації та посібників з експлуатації для 
спрощення використання та подальшої розробки бота. 
12 
ЧДТУ 242238.004ПЗ 
РОЗДІЛ 1 ІСНУЮЧУ МЕТОДИ ТА ЗАСОБИ РОЗВ’ЯЗАННЯ 
ПОСТАВЛЕНИХ ЗАДАЧ 
На платформі Discord є безліч ботів, які виконують різні завдання. Більшість 
з них призначені для поліпшення взаємодії з користувачем і розширення 
функціональності сервера. Але моє головне завдання це дослідити цих ботів і 
визначити їх плюси і мінуси. 
Unbelievaboat 
Плюси: 
- багатофункціональний бот з безліччю команд для модерації, розваг та 
налаштування сервера; 
- включає в себе систему економіки, що дозволяє користувачам 
заробляти та витрачати віртуальну валюту; 
- має систему рівнів, яка винагороджує активних користувачів 
ексклюзивними можливостями; 
- простий у налаштуванні та використанні. 
Мінуси: 
- деякі функції можуть здатися складними для нових користувачів; 
- він може бути перевантажений невеликими серверами; 
- деякі користувачі скаржаться, що боти можуть робити помилки. 
Juniper 
Плюси: 
- простий у використанні бот для модерації та налаштування сервера; 
- він має вбудовану систему оголошень, яка полегшує публікацію новин 
та оновлень; 
- він включає систему голосових команд, яка полегшує роботу в дорозі; 
- це безкоштовно та з відкритим кодом. 
Мінуси: 
- він не має стільки функцій, як інші боти; 
- він не пропонує економіку або систему рівнів; 
- він не підтримується так активно, як інші боти. 
13 
ЧДТУ 242238.004ПЗ 
MEE6 
Плюси: 
- один з найпопулярніших ботів Discord з мільйонами користувачів; 
- він пропонує широкий спектр функцій для управління, розваг та 
налаштування сервера; 
- він має вбудовану систему аналітики, яка дозволяє відстежувати 
зростання та активність сервера; 
- простота установки і використання. 
Мінуси: 
- деякі функції доступні лише платним користувачам; 
- може бути перевантажений для великих серверів; 
- деякі користувачі скаржаться на те, що бот іноді буває нав'язливим. 
Carl-bot 
Плюси: 
- багатофункціональний бот з безліччю команд для модерації, розваг і 
налаштування сервера; 
- він включає економічну систему, яка дозволяє користувачам заробляти 
та витрачати віртуальні валюти; 
- він має систему рівнів, яка винагороджує активних користувачів 
спеціальними функціями; 
- він простий в установці і використанні. 
Мінуси: 
- деякі функції доступні лише платним користувачам; 
- він може бути перевантажений невеликими серверами; 
- деякі користувачі скаржаться, що бот іноді помиляється. 
Birthday Bot 
Плюси: 
- простий у використанні бот, який автоматично вітає Користувача з 
днем народження; 
14 
ЧДТУ 242238.004ПЗ 
- ви можете налаштувати його для надсилання повідомлень через різні 
канали або форматування повідомлень; 
- безкоштовний і простий в налаштувані. 
Мінуси: 
- він не надає жодних функцій, крім привітань з днем народження; 
- він не підтримується так активно, як інші боти; 
- це може бути не дуже корисно для багатокористувацьких серверів. 
GiveawayBot 
Плюси: 
- простий у використанні бот для проведення розіграшів та конкурсів на 
вашому сервері; 
- дозволяє створювати розіграші з використанням різних параметрів; 
- таких як тривалість, умови участі та кількість переможців; 
- автоматично виберіть переможця та надішліть їм повідомлення; 
- це безкоштовно і легко встановити. 
Мінуси: 
- він не пропонує жодних інших функцій, крім розіграшів; 
- він не підтримується так активно, як інші боти; 
- це може бути не дуже корисно на сервері. 
Reaction Bot  
Плюси: 
- інтерактивність: реакція на повідомлення дозволяє ботам легко 
створювати інтерактивні лотереї та опитування; 
- гнучкість: можливість додавати гнучкість у використанні і 
налаштовувати різні реакції для різних дій; 
- широкий спектр функцій: крім розіграшів, ботів можна використовувати 
для збору відгуків, опитувань та інших інтерактивних дій; 
- простота установки: інтуїтивно зрозумілий інтерфейс і проста система 
команд полегшують використання новачками. 
15 
ЧДТУ 242238.004ПЗ 
Мінуси: 
- залежність від реакції: всі функції пов'язані з реакцією і можуть 
відволікати деяких користувачів і великі розмови; 
- вимоги до дозволів: для правильної роботи потрібні певні дозволи, але 
це може бути проблемою на деяких серверах; 
- про можливі конфлікти: може конфліктувати з іншими ботами, які 
використовують відповіді на повідомлення. 
ServerStats 
Плюси: 
- відстеження активності: надає детальну статистику активності 
сервера.Це дозволяє краще зрозуміти, як використовуються різні канали 
та ролі; 
- автоматична звітність: можливість автоматичного створення звітів і 
графіків для аналізу; 
- налаштування повідомлень: ви можете налаштувати повідомлення про 
зміни активності. Це дозволяє відстежувати активність сервера в режимі 
реального часу; 
- підтримка різних показників: підтримка різних показників, таких як 
кількість повідомлень, активні користувачі та нові учасники. 
Мінуси: 
- складність налаштувань: через велику кількість параметрів і 
налаштувань новачкам може бути складно; 
- обмежені безкоштовні функції: деякі розширені функції доступні лише 
в платній версії; 
- вплив на продуктивність: великі сервери, особливо ті, що мають високу 
ефективність, можуть споживати більше серверних ресурсів. 
ClearChat Bot 
Плюси: 
- простота використання: його легко встановити і використовувати 
навіть новачкам; 
16 
ЧДТУ 242238.004ПЗ 
- ефективне очищення: швидко видаляйте повідомлення зі свого каналу. 
Це допоможе підтримувати порядок на сервері; 
- налаштовування команди: можливість налаштовувати команди для 
видалення повідомлень з певного періоду часу або від певного 
користувача; 
- автоматизація: канали можуть автоматично очищатися відповідно до 
встановленого графіка і звільняти час адміністратора; 
- безкоштовно: основні функції доступні безкоштовно і доступні на будь-
якому сервері. 
Мінуси: 
- обмежені можливості: спеціально розроблений для очищення чату без 
додаткових функцій. Жовтень; 
- крім того, проблеми з конфіденційністю: видалені повідомлення не 
можуть бути відновлені, тому можуть виникнути проблеми, якщо 
важлива інформація буде видалена помилково; 
- залежність дозволів: для видалення повідомлення потрібні високі 
дозволи, але це може бути проблемою на деяких серверах; 
- можливі конфлікти: ви можете конфліктувати з іншими ботами, які 
перевіряють або очищають ваш чат. 
Постановка завдання цієї кваліфікаційної роботи бакалавра є об'єднання 
функції декількох ботів, що використовуються на серверах Discord, для розробки 
бота, який скорочує їх кількість і спрощують управління. 
  
17 
ЧДТУ 242238.004ПЗ 
ВИСНОВОК ДО РОЗДІЛУ 1 
Основне завдання цієї кваліфікаційної роботи бакалавра з об'єднання 
функції декількох ботів, що використовуються на серверах Discord, для розробки 
бота, який скорочує їх кількість і спрощують управління. 
Цей бот матиме наступні характеристики: 
- модульна архітектура: боти розроблені з використанням модульної 
архітектури. Це полегшить додавання та видалення функцій, а також їх 
розширення в майбутньому; 
- інтуїтивно зрозумілий інтерфейс: Бот оснащений інтуїтивно зрозумілим 
інтерфейсом користувача, який дозволяє користувачам легко керувати 
функцією, не вивчаючи складні команди; 
- широкий спектр функцій: боти поєднують функції різних ботів, що 
використовуються на серверах Discord, включаючи модерацію, розваги, 
налаштування сервера, економіку, рівні, рекламу, аналітику та розіграші 
призів; 
- гнучкість: боти є гнучкими і настроюються і можуть бути адаптовані до 
потреб вашого конкретного сервера Discord; 
- продуктивність: боти оптимізовані для ефективного використання 
ресурсів сервера. 
  
18 
ЧДТУ 242238.004ПЗ 
РОЗДІЛ 2 ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У 
ПРАКТИКУ ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ 
ІНФОРМАЦІЙНИХ СИСТЕМ 
У цьому розділі основними ключовими моментами застосування 
результатів досліджень у процесі проектування програмно інтегрованої системи 
автоматизації взаємодій елементів для платформи Discord є: 
Архітектура:  
Боти Discord, як і будь-яка інша програмна система, мають власну 
архітектуру, яка визначає взаємодію їх структури та компонентів. Уявіть собі 
будинок, в якому кожен поверх відповідає за певну функцію: 
Підвал: 
- тут зберігається вся інформація, необхідна для роботи бота: користувачі, 
сервери, канали, повідомлення, налаштування і т.д. дані про тебе; 
- це може бути схоже на "базову" базу даних, кеш або іншу систему 
зберігання. 
Перший поверх: 
- це те, що користувач бачить і з чим взаємодіє; 
- крім того, інтерфейс може бути представлений у вигляді графічного 
інтерфейсу користувача (gui) або текстового інтерфейсу для взаємодії з 
користувачем. 
Другий поверх: 
- це "мозок" бота, в якому виконується вся основна робота; 
- тут обробляються користувацькі команди, інтегруються з api discord, 
контролюється Автоматизація та виконується вся логіка бота. 
Вибір технологій та інструментів: основна технологія - Python з бібліотекою 
disnake. Крім того, для бази даних використовується MySQL Lite3. 
Інтеграція з Discord: вторинною інтеграцією буде адреса API. 
Автоматизація взаємодії: оскільки кожен бот повинен бути налаштований 
індивідуально, основна Автоматизація полягає у заміні декількох ботів на одного. 
Налаштування конкретного бота займе додатковий час. 
19 
ЧДТУ 242238.004ПЗ 
2.1 Моделювання предметної області 
Моделювання предметної області - це процес створення абстрактного 
представлення конкретної дипломної роботи, і моя мета - вивчити, проаналізувати 
та спроектувати її. Цей процес використовується для кращого розуміння складних 
систем, прийняття обґрунтованих рішень та покращення їх функціонування. 
Ключові моменти: 
- область інтересів: визначає сфери діяльності, які необхідно 
змоделювати; 
- моделювання предметної області: це абстрактне представлення домену, 
яке може бути представлене діаграмами, формулами, комп'ютерними 
програмами або пояснювальним текстом; 
- словник предметної області: набір термінів та визначень, які чітко 
описують поняття, що використовуються в моделі; 
- елементи моделювання: до них відносяться об'єкти, атрибути, 
відносини, події та правила; 
- область вивчення зовнішнього моделювання: це частина сфери 
інтересів, на якій зосереджена модель.  
2.1.1 Предметна область моделювання. Модель предметної області. 
Словник предметної області 
Предметна область моделювання: Програмна інтегрована система 
автоматизації взаємодій елементів для платформи Discord 
Модель предметної області: 
Discord Bot - це кореневий вузол, який представляє основний елемент 
діаграми. 
Користувач - користувачі взаємодіють з ботом, можуть мати різні ролі та 
надсилати повідомлення: 
- взаємодія з ботом: Користувачі використовують команди та функції 
бота; 
- ролі: Ролі визначають, які дії можуть виконувати користувачі на сервері; 
20 
ЧДТУ 242238.004ПЗ 
- повідомлення: Користувачі надсилають текстові, зображувальні та інші 
види повідомлень. 
Сервер - сервери є спільнотами, де користувачі можуть взаємодіяти: 
- спільнота: Сервера об'єднують користувачів для спілкування та 
взаємодії; 
- налаштування: Параметри, що визначають роботу бота на сервері; 
- параметри роботи бота: Конфігураційні параметри, які визначають 
поведінку бота. 
Канал - канали є місцями на сервері, де користувачі надсилають 
повідомлення: 
- місце спілкування: Канали, де відбувається комунікація між 
користувачами; 
- повідомлення: Повідомлення, що надсилаються в канали. 
Повідомлення - повідомлення можуть бути різного типу і є основним 
засобом комунікації: 
- текстовий контент: Повідомлення, що містять текст; 
- зображення: Повідомлення, що містять зображення; 
- інший контент: Інші типи повідомлень (файли, емодзі тощо). 
Команда - команди використовуються для керування ботом: 
- інструкція для бота: Команди, які користувачі надсилають для взаємодії 
з ботом; 
- виконання команд: Процес виконання ботом отриманих команд. 
Роль - ролі визначають набір дозволів для користувачів: 
- створення ролів: Процес створення нових ролей на сервері; 
- надання цих ролів: Призначення ролей користувачам. 
Налаштування - Налаштування визначають параметри роботи бота: 
- параметри роботи бота: Конфігураційні параметри для роботи бота; 
- лог-канал: Канал, куди бот надсилає повідомлення про дії. 
21 
ЧДТУ 242238.004ПЗ 
Нижче буде наведена сама діаграма предметної області Discord Bot, з усіма 
копонентами і як вони пов'язані між собою. 
 
Рисунок 2.1 – Діаграма предметної області Discord Bot 
 
Словник предметної області: 
Discord Bot (Bot) 
- це кореневий вузол, який представляє основний елемент діаграми; 
- взаємодіє з користувачами та виконує їхні команди; 
- працює на серверах, де налаштовується відповідно до конфігураційних 
параметрів. 
Користувач (User) 
22 
ЧДТУ 242238.004ПЗ 
- користувачі взаємодіють з ботом, можуть мати різні ролі та надсилати 
повідомлення; 
- використовують команди та функції бота для різних дій; 
- ролі визначають, які дії можуть виконувати користувачі на сервері; 
- надсилають текстові, зображувальні та інші види повідомлень. 
Сервер (Server) 
- сервери є спільнотами, де користувачі можуть взаємодіяти; 
- об'єднують користувачів для спілкування та взаємодії; 
- містять канали для комунікації між користувачами; 
- мають налаштування, що визначають роботу бота на сервері. 
Канал (Channel) 
- канали є місцями на сервері, де користувачі надсилають повідомлення; 
- місце для спілкування між користувачами; 
- містять повідомлення різного типу. 
Повідомлення (Message) 
- повідомлення можуть бути різного типу і є основним засобом 
комунікації; 
- містять текстовий контент, зображення та інші типи (файли, емодзі 
тощо). 
Команда (Command) 
- команди використовуються для керування ботом; 
- інструкції, які користувачі надсилають для взаємодії з ботом; 
- процес виконання ботом отриманих команд. 
Роль (Role) 
- ролі визначають набір дозволів для користувачів; 
- процес створення нових ролей на сервері; 
- призначення ролей користувачам. 
Налаштування (Settings) 
- налаштування визначають параметри роботи бота; 
23 
ЧДТУ 242238.004ПЗ 
- конфігураційні параметри для роботи бота; 
- лог-канал, куди бот надсилає лог-файли або повідомлення про дії. 
 
Рисунок 2.2 – Словник предметної області 
 
2.1.2 Елементи моделювання предметної області 
При створенні моделі діаграми для спільного побудови діаграми 
використовувалися наступні необхідні елементи і відносини UML. 
 
Таблиця 2.1  
Елементи моделювання 
Елементи Їх Значення 
Представляє роль, яку конкретний об'єкт (користувач, 
адміністратор) відіграє у взаємодії з системою 
 
Описує функції або послуги, які система надає суб'єктам 
 
 
24 
ЧДТУ 242238.004ПЗ 
Продовження таблиця 2.1 
Описує набір об'єктів, які мають спільні атрибути, 
операції, відносини та семантику 
 
Набір операцій, що визначають службу класу або 
компонента 
 
Модулі коду, що інкапсулюють логіку та дані 
 
Фізичні елементи, присутні під час виконання для 
реалізації розподіленої системи 
 
Механізм групування елементів UML 
 
Об'єкти можуть бути пов'язані з іншими елементами 
діаграми UML, такими як класи, інтерфейси та інші 
 об'єкти, використовуючи різні типи відносин. 
 
Таблиця 2.2  
Зв’язки елементів моделювання 
Елементи зв’язку Їх значення 
Відношення - це взаємозв'язок між 
екземплярами класу. 
 
Сильна форма агрегації, де складові 
частини існують виключно в контексті 
 цілого. 
 
 
25 
ЧДТУ 242238.004ПЗ 
Продовження таблиця 2.2 
Відношення "частина-ціле" між 
класами 
 
Відношення між загальним 
суперкласом та більш 
 спеціалізованими підкласами 
Відношення між класом або 
компонентом та інтерфейсом, який 
вони реалізують 
 
Відношення, коли один елемент 
залежить від іншого 
 
 
Наступна діаграма класів показує структуру та основні компоненти бота 
Discord, яка включає в себе наступні елементи: 
Класи: 
User:  
Атрибути:  
- id: int (унікальний ідентифікатор користувача); 
- username: string (ім'я користувача); 
- discriminator: string (дискримінатор); 
- avatar_url: string (URL аватара); 
- bot: boolean (чи є користувач ботом); 
- discriminator: string (дискримінатор). 
Методи:  
- send_message(message: string): void (надсилає повідомлення); 
- react_to_message(message_id: int, emoji: string): void (реагує на 
повідомлення emoji). 
26 
ЧДТУ 242238.004ПЗ 
Message:  
Атрибути:  
- id: int (унікальний ідентифікатор повідомлення); 
- author: User (автор повідомлення); 
- content: string (вміст повідомлення); 
- channel: Channel (канал, де було надіслано повідомлення); 
- timestamp: datetime (час надсилання повідомлення). 
Методи:  
- edit(new_content: string): void (редагує повідомлення); 
- delete(): void (видаляє повідомлення). 
Channel:  
Атрибути:  
- id: int (унікальний ідентифікатор каналу); 
- name: string (назва каналу); 
- type: string (тип каналу); 
- topic: string (тема каналу); 
- messages: List<Message> (список повідомлень у каналі). 
Методи:  
- send_message(message: string): Message (надсилає повідомлення в канал). 
Chatbot:  
Атрибути:  
- id: int (унікальний ідентифікатор чат-бота); 
- token: string (токен Discord API); 
- prefix: string (префікс команди); 
- commands: List<Command> (список команд). 
Методи:  
- start(): void (запускає чат-бота); 
- process_message(message: Message): void (обробляє повідомлення); 
- execute_command(command_name: string, args: List<string>): void 
(виконує команду). 
27 
ЧДТУ 242238.004ПЗ 
Command:  
Атрибути:  
- name: string (назва команди); 
- description: string (опис команди); 
- aliases: List<string> (псевдоніми команди); 
- handler: function(message: Message, args: List<string>): void (функція 
обробника команди). 
 
 
Рисунок 2.3 - UML-діаграма класів предметної області чат-боту для Discord 
 
Ця діаграма класів визначає структуру основних компонентів бота Discord, 
таких як команди, ролі, користувачі, сервери, канали та з'єднання. Це допомагає 
зрозуміти відношення взаємозв'язки між різними компонентами та їх 
властивостями. Однак ця діаграма дуже конкретна і створена для певної 
28 
ЧДТУ 242238.004ПЗ 
предметної області чат-бота Discord, тому може містити неоднозначні елементи 
або терміни. 
2.1.3 Робоча область моделювання 
Програмна інтегрована система автоматизації взаємодій елементів для 
платформи Discord являє собою набір програмних рішень, які можуть 
автоматизувати різні аспекти роботи сервера Discord. ці системи допомагають 
ефективно управляти спільнотою, забезпечувати безпеку, організовувати 
взаємодію між учасниками та надавати додаткові функції, що розширюють 
функціональні можливості стандартних функцій Discord. 
Основні компоненти системи 
Бот-інтерфейс 
- можливості ботів: боти можуть виконувати найрізноманітніші завдання, 
від привітання нових учасників до управління чатами. Вони можуть 
автоматично відповідати на запитання, надавати інформацію та 
організовувати голосування; 
- модерація: бот автоматично видаляє небажані повідомлення, блокує 
порушників правил і попереджає Вас про неприйнятну поведінку, щоб 
захистити ваш контент. 
Автоматизація повідомлень і сповіщень 
- заплановані повідомлення: можливість запланувати публікацію 
повідомлення в певний час або за певних обставин; 
- сповіщення про події: автоматично повідомляйте учасників про важливі 
події, такі як початок потокової передачі, оновлення вмісту та події. 
Інтеграція зі сторонніми сервісами 
- інтегрований API: підключайтеся до різних служб і додатків через API 
для автоматичного обміну даними; 
- webhook: автоматичне надсилання та отримання даних між Discord та 
іншими платформами за допомогою Webhook. 
Аналітика та звіти 
29 
ЧДТУ 242238.004ПЗ 
- статистика активності: відстежуйте активність учасників, відстежуйте 
відвідуваність користувачів, кількість публікацій, кількість нових 
учасників тощо; 
- звіти для адміністраторів: автоматичне створення звітів для 
адміністраторів про дії, порушення правил і дії з аудиту. 
Міні-ігри та розваги 
- елементи ігрового процесу: просування міні-ігор, конкурсів для 
залучення учасників і підвищення їх ефективності; 
- система винагород: налаштуйте систему винагород для активних 
учасників, таких як віртуальні монети, рулони та значки. 
 
Рисунок 2.4 – Робоча область моделювання Discord-бота 
 
DiscordBot: Основний клас для управління ботом. 
- token і prefix — це властивості для аутентифікації та префіксу команд; 
- start() і stop() — методи для запуску та зупинки бота. 
CommandHandler: Клас для обробки команд. 
- commands — список команд; 
- registerCommand(cmd: Command) і executeCommand(name: String) — 
методи для реєстрації та виконання команд. 
Command: Базовий клас для команд. 
- name і description — властивості команди; 
30 
ЧДТУ 242238.004ПЗ 
- execute() — метод для виконання команди. 
RoleManager: Клас для управління ролями. 
- roles — мапа ролей; 
- addRole(role: Role), removeRole(role: Role), assignRole(user: User, role: 
Role) — методи для управління ролями. 
NotificationBot: Клас для управління сповіщеннями. 
- schedules — список розкладів; 
- scheduleMessage(message: String, time: Date) і sendNotification(message: 
String) — методи для планування та відправки повідомлень. 
AnalyticsManager: Клас для збору та аналізу даних. 
- activityData — список активностей; 
- collectData() і generateReport() — методи для збору даних і генерації 
звітів. 
IntegrationAPI: Клас для інтеграції зі сторонніми API. 
- apis — мапа API; 
- connect(api: ExternalAPI), sendData(api: ExternalAPI, data: Object), 
receiveData(api: ExternalAPI) — методи для підключення та обміну 
даними. 
SecurityBot: Клас для забезпечення безпеки. 
- rules — список правил; 
- monitorContent() і enforceRules() — методи для моніторингу та 
забезпечення дотримання правил. 
GameManager: Клас для управління іграми. 
- games — список ігор; 
- startGame(game: Game), endGame(game: Game), rewardPlayer(player: 
User, reward: Reward) — методи для управління іграми та 
винагородження учасників. 
2.2 Формування та аналіз вимог 
31 
ЧДТУ 242238.004ПЗ 
У цьому розділі описані вимоги, які необхідно визначити для розробки 
програмного забезпечення, а також діаграми випадків використання для 
візуалізації цих вимог. 
По-перше, визначте основні та детальні вимоги. Основні вимоги включають 
загальні цілі та функції, які програмне забезпечення повинно виконувати. 
Наприклад, до них відносяться функції управління користувачами (бан, кік, мут), 
економічні системи, реалізація розіграшів, отримання інформації про погоду, 
логування, системи рівнів, модерація контенту, а потім уточнення цих вимог, щоб 
вони були чітко визначені і зрозумілі розробникам. Це забезпечує належне 
виконання функції, враховуються обмеження і встановлюються стандарти якості 
системи. 
Потім розглянимо вимоги клієнтів та розробників. Вимоги замовника 
відображають потреби та очікування щодо функціональності та якості 
програмного забезпечення. Сюди входять прості вимоги до налаштування та 
інтеграції, інтуїтивно зрозумілий інтерфейс, масштабованість та високий рівень 
безпеки. Вимоги розробника включають технічні аспекти розробки та 
впровадження системи, такі як використання сучасних середовищ, модульне 
тестування, документація коду та використання систем контролю версій. 
Ми також розглянемо функціональні та нефункціональні вимоги. 
Функціональні вимоги визначають конкретні функції, які повинна надавати 
система, такі як отримання інформації про погоду або команди запуску розіграшу. 
Нефункціональні вимоги визначають характеристики системи, такі як 
продуктивність, надійність, безпека та простота використання. 
Щоб візуалізувати ці вимоги, можна використовувати діаграми 
прецендентів використання, щоб допомогти проілюструвати взаємодію 
користувача з системою за допомогою різних випадків використання. Це дозволяє 
чітко визначити системні вимоги і зрозуміти, як різні частини програмного 
забезпечення взаємодіють один з одним. Наприклад, діаграма прецендентів 
використання бота Discord може показати, як адміністратори можуть виконувати 
різні дії та як користувачі можуть отримувати різні послуги. Ми можемо 
32 
ЧДТУ 242238.004ПЗ 
використовувати як текстові описи, так і візуалізацію, використовуючи діаграми 
прецендентів використання, щоб краще зрозуміти всі аспекти формування вимог 
до програмного забезпечення. 
2.2.1 Формування вимог до програмного забезпечення. Первинні і детальні 
вимоги. Вимоги замовника і розробника. Функціональні та нефункціональні 
вимоги 
Формування вимог до програмного забезпечення.  
Для утримання ботів Discord не потрібно потужного обладнання. Вимоги 
можуть змінюватися залежно від розміру сервера та кількості користувачів, але в 
більшості випадків досить скромної конфігурації. Загальні рекомендації по 
обладнанню полягають в наступному: 
Процесор: 
- сучасний двоядерний процесор, такий як Intel Core i3 або AMD Ryzen 3, 
буде цілком достатнім для роботи бота; 
- для більших серверів або більш ресурсномістких функцій, таких як 
обробка мультимедіа, краще використовувати чотириядерний процесор, 
наприклад, Intel Core i5 або AMD Ryzen 5. 
Оперативна пам'ять (ОЗУ): 
- мінімум 2 ГБ ОЗУ, але рекомендується принаймні 4 ГБ для більш 
плавної роботи; 
- для великих серверів з багатьма користувачами може знадобитися до 8 
ГБ ОЗУ або більше. 
Накопичувач: 
- твердотільний накопичувач (SSD) об'ємом 120-240 ГБ буде цілком 
достатнім для більшості ботів; 
- якщо бот також обробляє мультимедійні файли або зберігає великі 
обсяги даних, може знадобитися більший накопичувач. 
Мережевий інтерфейс: 
- стабільне з'єднання з Інтернетом зі швидкістю принаймні 1 Мбіт/с. 
33 
ЧДТУ 242238.004ПЗ 
Для користувачів, які хочуть взаємодіяти з Discord ботом, вимоги досить 
прості: 
Обліковий запис Discord  
- користувачі повинні мати обліковий запис на платформі discord. 
створення облікового запису безкоштовне та просте. 
Клієнт Discord  
Для доступу до серверів Discord та взаємодії з ботами користувачі можуть 
використовувати один із офіційних клієнтів Discord:  
- веб-клієнт (доступний через браузер); 
- десктопний клієнт (для windows, macos або linux); 
- мобільний клієнт (для android або ios). 
Доступ до сервера  
- користувачі повинні мати доступ до сервера discord, на якому 
розміщений бот. вони можуть приєднатися до сервера за запрошенням 
або за допомогою спеціального посилання. 
Дозволи на сервері  
- залежно від функцій бота, користувачам може знадобитися певний 
рівень прав або ролей на сервері, щоб мати можливість взаємодіяти з 
ботом. 
Знання команд бота  
- користувачам необхідно ознайомитися з доступними командами та 
функціями бота, щоб ефективно з ним взаємодіяти. зазвичай ця 
інформація надається розробниками бота або адміністраторами сервера. 
Підтримувані платформи  
- клієнт discord повинен бути сумісним з операційною системою 
пристрою користувача (windows, macos, linux, android або ios). 
Первинні і детальні вимоги.  
Первинні вимоги: 
- бот повинен забезпечувати основні функції модерації на discord сервері; 
- бот повинен взаємодіяти з користувачами через текстові команди. 
34 
ЧДТУ 242238.004ПЗ 
Детальні вимоги: 
- бот повинен мати команди для блокування, розблокування користувачів; 
- бот повинен мати команди для призначення та видалення ролей 
користувачам; 
- бот повинен мати команди для налаштування його конфігурації та 
привілеїв; 
- бот повинен мати вбудований механізм обробки помилок та 
некоректних команд. 
Вимоги замовника і розробника 
Вимоги замовника (власника серверу): 
- простий та інтуїтивно зрозумілий інтерфейс команд для адміністраторів; 
- можливість персоналізації команд та повідомлень бота; 
- надійність та стабільність роботи бота цілодобово. 
Вимоги розробника: 
- використання актуальної версії discord.py або іншої бібліотеки для 
взаємодії з discord api; 
- модульна архітектура бота для легкого розширення функціоналу; 
- підтримка розгортання бота на різних платформах (наприклад, 
локальний сервер або хмарний сервіс). 
Функціональні та нефункціональні вимоги 
Функціональні вимоги: 
- блокування/розблокування користувачів за ніком або id; 
- надання/вилучення ролей користувачам; 
- виведення інформації про користувачів або сервер; 
- очищення текстових каналів від повідомлень; 
- надання статистики сервера; 
- працююча економічна система; 
- бази даних; 
- реакція під повідомленнями; 
35 
ЧДТУ 242238.004ПЗ 
- привітання користувачів з днем народження. 
Нефункціональні вимоги: 
- час відгуку на команди не більше 2 секунд; 
- захист від зловмисного використання (наприклад, обмеження частоти 
команд); 
- висока доступність бота (цілодобовий режим роботи); 
- масштабованість для підтримки великої кількості серверів; 
- зрозумілий і структурований вивід результатів команд. 
2.2.2 Формування вимог за допомогою діаграми прецедентів 
 
Рисунок 2.5 - Діаграма прецедентів Адміністратора та Користувача 
36 
ЧДТУ 242238.004ПЗ 
Таким чином, є 2 актори: користувач та адміністратор. Кожна окрема 
функція (варіант використання) взаємодіє з ботом Discord. Ось список 
прецедентів та їх описи: 
Прецеденти для "Адміністратор": 
- логування дій - відстеження та запис дій, виконаних в системі; 
- бан користувача - заборона доступу користувача до сервера; 
- кік користувача - вигнання користувача з сервера без заборони 
повернення; 
- мут користувача - заборона користувачу відправляти повідомлення; 
- очистити чат - видалення повідомлень з каналу; 
- кастомна роль - створення та управління спеціальними ролями для 
користувачів; 
- запуск розіграшу - ініціювання та проведення розіграшів; 
- модерація контенту - перевірка та фільтрація контенту, що публікується 
користувачами; 
- статистика сервера - перегляд статистики та аналітики сервера; 
- реакції  - управління реакціями на повідомлення; 
- економіка - управління економічними функціями сервера (валюта, 
магазини тощо). 
Прецеденти для "Користувач": 
- опитування  - участь в опитуваннях, створених на сервері; 
- отримання погоди - отримання інформації про погоду; 
- оновлення рівня  - підвищення рівня користувача на сервері на основі 
активності; 
- перевірка дня народження - перевірка дати народження користувача; 
- економіка - використання економічних функцій сервера (наприклад, 
перевірка балансу, покупки). 
Стрілки між акторами та прецедентами показують, хто ініціює виконання 
кожного прецеденту, тим самим показує хто який має доступ до команд. 
37 
ЧДТУ 242238.004ПЗ 
2.3 Проектування логічної структури програмного комплексу 
У цій роботі ми розробляємо логічну структуру програмного пакету, 
використовуючи діаграму класів та діаграму пакетів для візуалізації структури та 
компонентів системи. 
По-перше, створіть діаграму класів програмного забезпечення. Ця діаграма 
допомагає візуалізувати структуру системи, показуючи класи, їх атрибути, методи 
і відносини між ними. Наприклад, визначте батьківський клас DiscordBot для бота 
Discord.Цей клас включає в себе методи запуску ботів, обробки повідомлень, 
заборони, запуску, перемикання користувачів, управління ролями, отримання 
інформації про погоду, запуску розіграшів, реєстрації дій, Оновлення рівнів, 
перевірки днів народження і аудиту контенту. На додаток до основного класу, ми 
створюємо окремі класи для кожної з цих функцій, які взаємодіють з DiscordBot. 
жовтень. 
Потім створіть діаграму пакетів, яка допоможе вам організувати свої класи 
в логічні групи або пакети. Це полегшує управління великими проектами та 
покращує чіткість структури коду. У випадку ботів Discord ви можете визначити 
класи як такі параметри, як управління користувачами (клас, відповідальний за 
заборону, удари ногами та мутації), економіка (клас, відповідальний за економічні 
системи), роздача подарунків (клас, відповідальний за розіграші), погода (клас, 
відповідальний за отримання інформації про погоду), ведення журналу (клас, 
відповідальний за ведення журналу дій), рівні (клас, відповідальний за Системи 
рівнів) та Аудит (клас, відповідальний за аудит вмісту). Ви можете організувати 
їх у пакети. 
Таким чином, в деці описується конструкція логічної структури 
програмного пакету, діаграма класів, яка візуалізує структуру і відносини між 
класами, а також клас як логічну групу. 
2.3.1 Діаграми класів 
Нижче наведено діаграму класів для бота Discord, де кожен клас показує 
зв’язок з Discord-ботом. Давайте детальніше розглянем діаграму класів. 
38 
ЧДТУ 242238.004ПЗ 
 
Рисунок 2.6 – Початкова діаграма класів 
 
Ця діаграма є діаграмою класів для бота Discord, де кожен прямокутник 
представляє клас. Давайте детальніше розглянемо кожен із цих класів: 
1 DiscordBot: це основний клас, який керує всіма функціями бота. Це 
означає, що екземпляри цих класів включені як поля; 
2 Ban: клас, відповідальний за функцію заборони користувачів; 
3 kick: клас, відповідальний за можливість виключення користувачів із 
сервера; 
4 Mute: клас, відповідальний за можливість "перемикання" користувача 
(тимчасове блокування можливості введення повідомлень); 
5 Economy: клас, відповідальний за управління економічною системою 
бота (віртуальна валюта, магазини, нагороди тощо); 
6 Loggs: клас для запису дій бота; 
7 Weather: клас, відповідальний за отримання та відображення інформації 
про погоду; 
8 Giveaway: клас, відповідальний за проведення розіграшу на сервері; 
9 Levels: клас, який відповідає за систему рівнів користувача; 
10 Birthday: клас для перегляду та привітання з днем народження 
користувача; 
11 Moderation: клас, відповідальний за модерацію вмісту (фільтрація 
повідомлень, виявлення небажаного вмісту); 
39 
ЧДТУ 242238.004ПЗ 
12 ServerStats: надає статистику сервера (кількість користувачів, Кількість 
каналів тощо).) Клас, відповідальний за збір та показ.); 
13 Reaction Emoji: клас, відповідальний за управління реакціями на 
повідомлення (додавання та видалення реакцій); 
14 Poll: клас, відповідальний за створення та проведення опитувань на 
сервері; 
15 Custome Role: клас, відповідальний за створення та управління ролями 
користувачів для користувачів; 
16 Clear: клас, відповідальний за очищення повідомлень на каналі. 
Розглянемо наповнену діаграму класів докладніше на наступній сторінці. 
Ця діаграма класів для Discord-бота є детальним поясненням кожного класу, 
його методів та атрибутів, а також їх функціональності в рамках роботи бота. 
Розглянемо кожен клас детальніше: 
DiscordBot: 
Атрибути:  
- token: String - токен для аутентифікації бота; 
- client: Client - клієнт для взаємодії з Discord API; 
Методи:  
- run(): void - запускає бота; 
- on_message(message: Message): void - обробляє вхідні повідомлення; 
- on_ready(): void - виконує дії при запуску бота; 
- ban_user(user: User): void - банує користувача; 
- unban_user(user: User): void - розбанює користувача; 
- kick_user(user: User): void - виключає користувача; 
- mute_user(user: User): void - мутує користувача; 
- unmute_user(user: User): void - розмутовує користувача; 
- give_role(user: User, role: Role): void - видає роль користувачу; 
- remove_role(user: User, role: Role): void - знімає роль з користувача; 
- get_weather(location: String): String - отримує інформацію про погоду; 
40 
ЧДТУ 242238.004ПЗ 
 
Рисунок 2.7 – Повна діаграма класів 
41 
ЧДТУ 242238.004ПЗ 
- start_giveaway(details: String): void - запускає розіграш; 
- end_giveaway(details: String): void - завершує розіграш; 
- log_action(action: String): void - логує дію; 
- update_level(user: User, points: int): void - оновлює рівень користувача; 
- check_birthday(user: User): void - перевіряє день народження 
користувача; 
- moderate_content(content: String): void - модерує контент; 
Це основний клас, який відповідає за керування ботом і координацію роботи 
інших класів. Його головні завдання включають запуск бота, обробку вхідних 
повідомлень, керування користувачами (банити, розбанювати, виключати, 
мутити, розмутовувати, призначати та знімати ролі), отримувати інформацію про 
погоду, запускати та завершувати розіграші, логувати дії, оновлювати рівні 
користувачів, перевіряти дні народження і модерувати контент. 
Ban: 
- ban_user(user: User): void - банує користувача; 
- unban_user(user: User): void - розбанює користувача. 
Kick: 
- kick_user(user: User): void - виключає користувача. 
Mute: 
- mute_user(user: User): void - мутує користувача; 
- unmute_user(user: User): void - розмутовує користувача. 
Economy: 
- save_balance(user: User): int - зберігає баланс користувача; 
- get_balance(user: User): int - отримує баланс користувача; 
- withdraw(user: User, amount: int): void - знімає кошти з балансу 
користувача; 
- deposit(user: User): int - поповнює баланс користувача. 
Loggs: 
- log(action: String): void - логує дію. 
42 
ЧДТУ 242238.004ПЗ 
Weather: 
- get(location: String): String - отримує інформацію про погоду. 
Giveaway: 
- start_giveaway(details: String): void - запускає розіграш; 
- end_giveaway(details: String): void - завершує розіграш. 
Levels: 
- update(user: User, points: int): void - оновлює рівень користувача. 
Birthday: 
- check(user: User): void - перевіряє день народження користувача. 
Moderation: 
- check_banned_word(content: String): void - перевіряє контент на 
заборонені слова; 
- check_banned_domain(content: String): void - перевіряє контент на 
заборонені домени. 
ServerStats: 
- get_stats(): String - отримує статистику сервера. 
- check_stats(): String - перевіряє статистику сервера. 
- update_stats(): String - оновлює статистику сервера. 
Reaction: 
- add_reaction(message: Message, emoji: String): void - додає реакцію до 
повідомлення; 
Poll: 
- create_poll(question: String, options: List<String>): void - створює 
опитування; 
- end_poll(poll_id: int): void - завершує опитування. 
CustomRole: 
- create_role(name: String, permissions: List<String>): Role - створює 
кастомну роль; 
- add_role(name: String, permissions: List<String>): Role - додає кастомну 
роль. 
43 
ЧДТУ 242238.004ПЗ 
Clear: 
- clear_chat(channel: TextChannel, amount: int): void - очищує певну 
кількість повідомлень у каналі. 
Ця діаграма класів визначає структуру та взаємодію різних компонентів у 
Discord-боті, забезпечуючи різноманітну функціональність, таку як керування 
користувачами (блокування, розблокування, виключення, мутування, 
розмутування, призначення та зняття ролей), економічну систему, модерацію 
контенту, статистику серверу, опитування, створення кастомних ролей, надання 
статистики сервера, проведення розіграшів, систему рівнів користувачів, а також 
дозволяє отримувати інформацію про погоду та логувати дії на сервері. 
2.3.2 Діаграми пакетів 
 
 
Рисунок 2.8 – Діаграма пакетів для функції «Birthday» 
 
На цій діаграмі показано взаємодію між основними компонентами Discord і 
його відносинами з базою даних. Коли користувач викликає команду /setbirthday, 
вона обробляється ботом через обробну команду і передається відповідному 
44 
ЧДТУ 242238.004ПЗ 
обробнику команд. Останній виконує функції, пов'язані з функцією дня 
народження, і зберігає дані в базі даних. 
 
 
Рисунок 2.9 – Діаграма пакетів для функції «Economy» 
 
На цій діаграмі представлені 4 основні пакети: боти Discord, бази даних, 
функції та їх взаємодія. 
Давайте розглянемо можливі дії користувачів щодо віртуальних грошей та 
магазинів: 
- заробляйте віртуальні гроші: користувачі можуть заробляти віртуальні 
гроші, виконуючи певні дії в чаті або грі, реалізованій у боті. Функції, 
відповідальні за цей процес, виконуються в пакеті функцій; 
- окрім витрачання віртуальних грошей у магазині: користувачі можуть 
витрачати віртуальні гроші на придбання різних предметів у 
віртуальному магазині, реалізованому ботом. Функції, що відповідають 
за цю функціональність, також реалізовані в пакеті функцій; 
- інформація про користувачів (залишки грошових коштів) і товари в 
магазині зберігається в базі даних. 
Дана діаграма відображає структуру та взаємодію елементів у Discord боті, 
який має функціональність розіграшів. 
У пакеті Discord Bot містяться класи Bot (головний клас, що представляє 
Discord бота) та GiveawayCog (відповідальний за функціональність розіграшів). 
У пакеті Database є клас DatabaseConnection, який відповідає за підключення 
до бази даних для збереження даних розіграшів 
45 
ЧДТУ 242238.004ПЗ 
 
Рисунок 2.10 – Діаграма пакетів для функції «Giveaway» 
 
У пакеті Functions реалізований клас GiveawayFunctions, який містить 
функції для обробки розіграшів. 
У взаємодії компонентів: 
- Bot додає GiveawayCog для управління розіграшами; 
- GiveawayCog ініціалізує підключення до бази даних за допомогою 
DatabaseConnection; 
- GiveawayCog використовує GiveawayFunctions для обробки 
функціональності розіграшів; 
- GiveawayFunctions взаємодіє з базою даних через DatabaseConnection. 
46 
ЧДТУ 242238.004ПЗ 
 
Рисунок 2.11 – Діаграма пакетів для функцій «Kick/Ban/Mute» 
 
На цій діаграмі показана структура програмного продукту для бота Discord 
з функцією "Kick / Ban / Mute". Проаналізувавши інформацію, ви можете 
визначити різні компоненти: "Bot", "kick", "Ban", "Mute", "Database", "User" і т.д. 
кожен з них відповідає за певні функції в системі. Наприклад," Kick"," Ban "і" 
Mute "відповідають за управління Користувачем з сервера," Database "- за 
управління базою даних, в якій зберігається інформація про те, що було зроблено, 
а"Bot" відповідає за основні функції бота Discord.  
 
Рисунок 2.12 – Діаграма пакетів для функції «Levels» 
 
Система рівнів складається з компонентів для керування логікою, зберігання 
даних і взаємодії з користувачем. Коли користувач пише повідомлення, система 
обчислює заробленим досвід і зберігає його в базі даних. Щоб перевірити свій 
рівень, користувач запитує поточні дані через систему, яка зчитує їх з бази даних. 
47 
ЧДТУ 242238.004ПЗ 
 
 
Рисунок 2.13 – Діаграма пакетів для функції «Weather» 
 
Дана діаграма працює наступним чином: 
- користувач надсилає команду зі своїм містом; 
- бот отримує інформацію, та передає її  на API-адресу; 
- API-адреса в свою чергу бере потрібну інформацію та передає боту; 
- бот в свою чергу виводить інформацію користувачу. 
48 
ЧДТУ 242238.004ПЗ 
 
Рисунок 2.14 – Діаграма пакетів для команди «Clear» 
 
Пакети та елементи діаграми 
Administrator: 
- містить елемент [Admin], що представляє адміністратора системи; 
- адміністратор може викликати різні команди для управління системою. 
Bot: 
- містить елемент [Clear], що представляє команду бота для очищення 
чату; 
- команда "Clear" викликається адміністратором для видалення певної 
кількості повідомлень у чаті. 
Chat: 
- містить елемент [delete messages], що представляє функцію видалення 
повідомлень у чаті; 
- цей елемент відповідає за фактичне видалення повідомлень з чату. 
Взаємодії 
Адміністратор викликає команду /Clear: 
- адміністратор (admin) викликає команду "clear" у боті; 
- це показано стрілкою від [admin] до [clear] з надписом "адміністратор 
викликає команду /clear". 
Команда видаляє необхідну кількість тексту в чаті: 
49 
ЧДТУ 242238.004ПЗ 
- команда "Clear" у боті взаємодіє з функцією видалення повідомлень у 
чаті; 
- це показано стрілкою від [Clear] до [Delete messages] з надписом 
"Команда видаляє необхідну кількість тексту в чаті". 
 
Рисунок 2.15 – Діаграма пакетів для команди «CustomeRole» 
 
Опис елементів та взаємодій 
Administrator: 
- пакет містить елемент [Admin], який представляє адміністратора 
системи; 
- адміністратор викликає команду "/CustomRole". 
Bot: 
50 
ЧДТУ 242238.004ПЗ 
- пакет містить елемент [CustomRole], який відповідає за створення та 
налаштування нових ролей користувачів; 
- команда "/CustomRole" запускає процес створення нової ролі. 
User: 
- пакет містить елемент [Got a new role], який представляє користувача, 
якому була призначена нова роль. 
Взаємодії 
Адміністратор викликає команду /CustomRole: 
- адміністратор (Admin) запускає команду "/CustomRole" в боті; 
- це показано стрілкою від [Admin] до [CustomRole] з підписом 
"Адміністратор викликає команду /CustomRole". 
Створена роль дається користувачу: 
- після створення нової ролі в системі, вона призначається користувачеві; 
- це показано стрілкою від [CustomRole] до [Got a new role] з підписом 
"Потім створена роль дається користувачу". 
2.4 Архітектурне проектування 
У цьому розділі ми розглянемо архітектурний дизайн програмних пакетів, 
які використовують діаграми компонентів та діаграми розгортання для 
візуалізації структури системи та розгортання на апаратному забезпеченні. 
Спочатку створіть діаграму компонентів. Ця діаграма допомагає 
візуалізувати основні програмні компоненти системи та їх взаємозв'язки. У 
випадку з нашими ботами Discord це будуть компоненти, відповідальні за 
управління користувачами, економічні системи, реалізацію розіграшів, отримання 
інформації про погоду, повсякденні операції, системи рівня та аудит вмісту. 
Кожен з цих компонентів взаємодіє з основним компонентом DiscordBot. 
Потім створіть схему розгортання, яка показує, як програмні компоненти 
вбудовані в апаратне забезпечення. Це допоможе вам зрозуміти, як розгорнути 
систему в реальному середовищі. Наприклад, ви можете розгорнути бота Discord 
на сервері з потрібними ресурсами (процесор, пам'ять), забезпечити підключення 
51 
ЧДТУ 242238.004ПЗ 
до бази даних для зберігання журналів та даних користувачів та інтегрувати його 
з API для отримання інформації про погоду та інших зовнішніх служб. 
Таким чином, у цьому розділі ви можете використовувати діаграми 
компонентів для візуалізації структури системи та основних програмних 
компонентів, а також для аналізу структури цих компонентів. 
2.4.1 Діаграма компонентів 
Діаграми компонентів - це дійсно важливий інструмент архітектурного 
проектування програмних систем. Вони забезпечують візуальне представлення 
системи на високому рівні, показуючи її компоненти, інтерфейси та залежності 
між ними. Це дозволяє абстрагуватися від деталей реалізації та зосередитися на 
загальній структурі та взаємодії між ключовими частинами системи. 
Для створення діаграми компонентів виконуються наступні кроки: 
1 Визначення системних компонентів: Компонент - це модуль, підсистема 
або послуга, яка реалізує певну функцію або надає певну послугу. На 
цьому етапі ідентифікуються та визначаються всі основні компоненти 
системи. 
2 Визначення інтерфейсів компонентів: Інтерфейс описує, яким чином 
компонент взаємодіє та надає свої функції. Для кожного компонента 
визначаються його інтерфейси, через які він буде взаємодіяти з іншими 
частинами системи. 
3 Визначення залежностей між компонентами: Залежності виникають, 
коли один компонент використовує функціональність іншого 
компонента. На цьому етапі визначаються всі залежності між 
компонентами системи. 
4 Візуальне представлення: Після визначення компонентів, інтерфейсів та 
залежностей, вони візуально представляються на діаграмі. Компоненти 
відображаються у вигляді прямокутників, інтерфейси - у вигляді кіл на 
кордонах компонентів, а залежності - у вигляді стрілок між 
компонентами, що вказують напрямок залежності. 
52 
ЧДТУ 242238.004ПЗ 
 
Рисунок 2.16 – Діаграма компонентів 
 
Ця діаграма є архітектурним оглядом або діаграмою класів для програми 
бота Discord: 
- Discord Bot: Це основний компонент, що представляє самого бота 
Discord; 
- Discord API: Цей компонент взаємодіє з Discord API, що містить модуль 
JDA (Java Discord API); 
- команди: Цей розділ містить різні класи команд, які може виконувати 
бот, такі як ClearCommand, Ban-UnbanCommand, Mute-
UnmuteCommand, KickCommand, CustomeRoleCommand, PollCommand, 
EconomyCommand і WeatherCommand; 
- Utils: Цей розділ містить класи утиліт, зокрема LoggsUtils для ведення 
журналів та ModerationUtils, для функцій, пов'язаних з модерацією; 
- Event: Цей розділ містить класи слухачів подій, які обробляють різні 
події на сервері Discord, зокрема LevelsListener, BirthdayListener  і 
GiveawayListener; 
- ServerStatsListener: Цей компонент, відстежує та звітує про статистику 
сервера. 
53 
ЧДТУ 242238.004ПЗ 
На цій діаграмі показані взаємозв'язки і взаємодії між цими різними 
компонентами, а також представлений огляд архітектури і функціональності.  
2.4.2 Розгортання програмної системи на апаратних засобах.  
Діаграма розгортання 
Діаграма розгортання є ще одним артефактом архітектурного проектування, 
який відображає розміщення компонентів програмної системи на фізичних вузлах 
(серверах, пристроях) та їх взаємозв'язки. Вона допомагає візуалізувати топологію 
системи та розподіл компонентів на апаратних засобах. 
Для створення діаграми розгортання необхідно виконати наступні кроки: 
1 Визначити апаратні вузли, на яких буде розгорнуто систему: Це можуть 
бути сервери, пристрої, віртуальні машини тощо. 
2 Визначити компоненти системи, які будуть розгорнуті на кожному вузлі. 
3 Визначити взаємозв'язки між вузлами, такі як мережеві з'єднання або 
протоколи взаємодії. 
4 Візуалізувати вузли, компоненти та їх взаємозв'язки на діаграмі: Вузли 
зображуються як вузли або пристрої, компоненти - як артефакти 
всередині вузлів, а взаємозв'язки - як лінії між вузлами. 
Нижче наведено діаграма розгортання Discord-бота на апаратних засобах, 
яка візуалізує архітектуру та його розміщення на апаратних засобах самого 
Discord-бота. Центральним компонентом є хостинг, на якому запущений сам код 
Discord-бота. Цей код взаємодіє з декількома зовнішніми системами та сервісами. 
Ці сервіси з якими Discord-бот взаємодіє є API адреси через офіційні API-адреси, 
надані Discord. А наступним сервісом це є сам Discord  сервер, до якого буде 
підключений Discord-бот. 
54 
ЧДТУ 242238.004ПЗ 
 
Рисунок 2.17 – Діаграма розгортання Discord-бота на апаратних засобах 
 
Ця діаграма є діаграмою розгортання і відображає розміщення компонентів 
Discord бота на апаратних засобах. 
Діаграма містить наступні елементи: 
- Host: Це вузол, на якому розгорнуто основний компонент Discord бота, 
званий "Discord Bot". Цей компонент містить у собі підкомпоненти, які 
представляють різні команди та функції бота, такі як Bot-Unban, Mute-
Unmute, Kick, Giveaway, Weather, Loggs, Levels, Economy, Birthday, 
Moderation, Clear, CustomRole, Poll, ReactionEmoji та ServerStats; 
- Discord API Server: Це вузол, на якому розгорнуто компонент "Discord 
API". Цей компонент містить у собі підкомпонент JDA, який, ймовірно, 
є бібліотекою для взаємодії з Discord API; 
- Discord Server: Це хмарний компонент, який представляє сервер Discord, 
з яким взаємодіє Discord бот. 
Стрілки на діаграмі показують зв'язки між компонентами та вузлами. 
Зокрема, " Discord bot" взаємодіє з "Discord API Server" для використання 
бібліотеки JDA, а також з "Discord Server" для обміну повідомленнями та 
виконання команд на сервері Discord та взаємодії з самим сервером та 
користувачами. 
55 
ЧДТУ 242238.004ПЗ 
Ця діаграма розгортання візуалізує фізичне розміщення компонентів 
Discord бота та їх взаємозв'язки, що допомагає краще зрозуміти топологію 
системи та вимоги до інфраструктури. Вона також дає уявлення про 
різноманітність функцій та команд, які реалізовані в Discord боті. 
  2.5 Моделювання поведінки системи 
У цьому розділі ми розглянемо використання різних типів діаграм для 
моделювання поведінки системи та візуалізації її взаємодії і функціональності. 
По-перше, створимо діаграму дій (activity diagram), яка допоможе 
візуалізувати робочий процес та дії в системі. На цій діаграмі показано, як 
працюють ключові функції бота Discord, такі як обробка повідомлень, бани, 
кікбани, зміни користувачів, запуск лотереї та інші дії. Діаграми дій допоможуть 
вам зрозуміти загальну послідовність дій і процесів, що відбуваються у вашій 
системі. Вони особливо корисні для моделювання складних бізнес-процесів або 
алгоритмів з розгалуженнями та циклами. 
Далі діаграма послідовності покаже взаємодію об'єктів при виконанні 
функцій, як-от банування користувача. Вона візуалізує потік повідомлень та 
виклики між об'єктами, що допомагає моделювати складні сценарії взаємодії. 
Діаграма взаємодії схожа, але більше фокусується на структурі зв'язків між 
об'єктами. Вона ілюструє, як об'єкти обмінюються повідомленнями для 
виконання функцій, наприклад, запуску лотереї. Корисна для високорівневого 
моделювання взаємодії компонентів. 
Діаграми станів моделюють різні стани об'єктів та події, що змінюють ці 
стани. Вони візуалізують життєвий цикл складних об'єктів, як сесії користувачів 
чи лотереї. 
Нарешті, діаграми компонентів та розгортання візуалізують високорівневу 
архітектуру, її компоненти, відносини та фізичне розгортання на різних вузлах. 
Ці діаграми - корисні інструменти для аналізу вимог, проєктування та 
документування архітектури і поведінки систем. Вони роблять складні системи 
зрозумілішими та полегшують комунікацію в проєкті 
56 
ЧДТУ 242238.004ПЗ 
2.5.1 Діаграма діяльності 
 
 
Рисунок 2.18 – Діаграма діяльності «Перевірка доступу до команд» 
 
На цьому рисунку показано простий потік управління командами, які 
можуть мати атрибут @is_admin. Така функція гарантує несанкціоноване 
використання команд від звичайних користувачів. Спочатку бот отримує 
повідомлення, що містить команду. Після чого йде перевірка, чи має користувач 
дозвіл на використання команди тої чи іншої команди. Якщо є, надходить 
підтвердження виконання команди, після чого команда набуде чинності. Якщо 
користувач не має дозволів, буде надіслано повідомлення про те, що користувач 
не має відповідних дозволів на використання команди. 
Якщо використовувати команду, в якій вказаний аргумент @is_admin(), 
користувачу знадобиться підвищений рівень доступу або ж роль яка має надані 
права модератора чи адміністратора. Звичайні користувачі не можуть 
використовувати його для доступу до команди, вони повинні мати відповідну роль 
з відповідними дозволами. 
def is_admin(): 
    def predicate(ctx): 
        return ctx.author.guild_permissions.administrator 
    return commands.check(predicate) 
@commands.slash_command(description = “”) 
@is_admin() 
57 
ЧДТУ 242238.004ПЗ 
2.5.2 Діаграма послідовності 
 
 
Рисунок 2.19 – Діаграма послідовності роботи Адміністратора 
 
На цій діаграмі відображається взаємодія між об'єктами Admin, Bot, 
CommandHandler та BanUnbanCommand при виконанні команди 
"BanUnbanCommand". 
- адміністратор відправляє повідомлення з командою; 
- bot викликає метод executecommand в commandhandler для обробки 
команди; 
- commandhandler створює об'єкт banunbancommand та викликає його 
метод execute; 
- banunbancommand перевіряє права користувача на 
блокування/розблокування користувачів; 
- залежно від результату перевірки прав та наявності аргументів, 
виконується блокування або розблокування користувача, і 
відправляється відповідне повідомлення; 
- якщо користувач не має прав, відправляється повідомлення про 
відсутність прав. 
58 
ЧДТУ 242238.004ПЗ 
2.5.3 Діаграма комунікації 
 
 
Рисунок 2.20 – Діаграма комунікації роботи Користувача 
 
На цій діаграмі комунікації ми бачимо взаємодію між об'єктами User, Bot, 
CommandHandler та LevelsCommand при виконанні команди "LevelsCommand". 
- user відправляє повідомлення з командою до bot; 
- bot передає команду до commandhandler через виклик методу 
executecommand; 
- commandhandler створює об'єкт levelscommand та викликає його метод 
execute; 
- levelscommand перевіряє чи є у користувача взагалі хочаб якийсь рівень, 
звертаючись до bot через виклик методу checkpermissions; 
- bot повідомляє levelscommand, що користувач має рівень; 
- bot відправляє підтвердження про видалення повідомлень до user. 
2.5.4 Діаграма скінченного автомату 
Ця діаграма є діаграмою станів, яка візуалізує різні стани, у яких може 
перебувати система, в цьому випадку - Discord бот, а також переходи між цими 
станами, викликані певними подіями або діями. 
Діаграма містить стани: Idle(Бездіяльність), ProcessingMessage(Обробка 
повідомлення), ExecutingCommand(Виконання команди), 
RespondingToCommand(Відповідь на команду), WaitingForMessage(Очікування). 
59 
ЧДТУ 242238.004ПЗ 
 
Рисунок 2.21  – Діаграма скінченого автомату 
 
Переходи між станами відбуваються за такими подіями:  
- "отримано повідомлення" переводить бота зі стану "бездіяльність" у 
"обробку повідомлення"; 
- "розпізнано команду" переводить зі стану "обробка повідомлення" у 
"виконання команди"; 
- "не команда" переводить зі стану "обробка повідомлення" в "очікування 
повідомлення"; 
- "відповідь надіслана" переводить зі стану "відповідь на команду" назад 
у "бездіяльність"; 
- "вихід" переводить зі стану "очікування повідомлення" назад у 
"бездіяльність". 
60 
ЧДТУ 242238.004ПЗ 
ВИСНОВОК ДО РОЗДІЛУ 2 
Ретельне дотримання етапів в цьому описаному розділі, сприятиме 
систематичному та структурованому підходу до розробки програмного 
забезпечення. Це дозволяє уникнути помилок і невідповідностей на ранніх етапах 
проектування і знижує витрати на виправлення недоліків в подальшій розробці. 
жовтні дек. Крім того, використання стандартизованих методів моделювання та 
діаграм UML сприяє кращому спілкуванню між учасниками проекту та полегшує 
подальше обслуговування та заміну програмного забезпечення. 
  
61 
ЧДТУ 242238.004ПЗ 
РОЗДІЛ 3 РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО 
ЗАБЕЗПЕЧЕННЯ 
Цей розділ описує процес розробки та тестування програмних пакетів, 
включаючи вибір інструментів реалізації, визначення структурних та логічних 
схем системи, розробку баз даних, інтерфейсів користувача та програмних 
компонентів. Також описані різні типи випробувань, такі як модульні, інтегровані, 
системні та приймальні випробування. Приклад реалізованого програмного 
пакету наведено в кінці розділу. 
3.1 Розробка програмного комплексу 
У цих розділах розглядається процес розробки програмного пакету. По-
перше, вибір мови програмування, середовища розробки, бібліотек та інших 
інструментів, що використовуються для реалізації проекту, є правильним. У 
ньому описуються переваги і недоліки обраних коштів, а також відповідність 
вимогам проекту. Потім ми представляємо структурну (функціональну) схему 
програмного дека і візуалізуємо його основні компоненти і взаємозв'язки між 
ними. Він описує призначення кожного компонента та його роль у загальній 
архітектурі системи. 
Потім представлена логічна схема системи, що показує потік даних та 
алгоритми, що використовуються в програмному пакеті. Він описує, як дані 
переміщуються по системі, як обробляються дані та перетворюються на корисну 
інформацію. Потім ми розглянемо процес розробки бази даних для програмного 
пакету. Структура бази даних- це таблиці, поля, типи даних, ключі та відносини 
між таблицями. Також приділяється увага питанням безпеки та продуктивності 
бази даних. 
Наступним кроком буде визначення процесу розробки інтерфейсу 
користувача для програмного пакету. Враховується дизайн інтерфейсу, його 
елементи, навігація, функціональність і простота використання. Також буде 
приділено увагу доступності та адаптивності інтерфейсів для різних пристроїв і 
платформ. Нарешті, наводиться докладний опис розробки основних програмних 
62 
ЧДТУ 242238.004ПЗ 
компонентів або модулів програмного пакету. Кожен компонент описує його 
функціональність, використовувані алгоритми та функціональність програми, а 
також інтеграцію з іншими частинами системи. 
3.1.1 Обґрунтування вибору засобів реалізації 
Мова програмування Python була обрана для розробки бота Discord, а 
основною бібліотекою є dishake. 
Python-відмінний вибір для створення ботів через його простоту, чистий 
синтаксис і велику кількість готових бібліотек і фреймворків. Disnake-популярна 
бібліотека Python для взаємодії з API Discord, яка надає зручний програмний 
інтерфейс для управління ботами. 
Ці бібліотеки надають наступні функції: 
- обробка повідомлень, відповідей і маніпулювання подіями, такими як 
введення і виведення даних Користувачем.); 
- управління ботами (Налаштування статусу, аватара і активності); 
- взаємодія з сервером (створення/редагування каналів, ролей, тощо). 
SQLite 3 
SQLite-це компактна вбудована база даних, яка підходить для невеликих 
проектів та додатків. Він має наступні переваги: 
- він не вимагає окремого серверного процесу, а файли бази даних 
зберігаються у файловій системі; 
- кроссплатформенний може працювати в різних операційних системах 
- висока продуктивність для невеликих обсягів даних; 
- він простий у використанні і може бути інтегрований з Python через 
модуль sqlite3. 
SQLite хороший для початківців ботів і невеликих спільнот. Але в міру 
зростання вашого проекту та збільшення робочого навантаження вам може 
знадобитися більш масштабована база даних, така як PostgreSQL або MySQL. 
3.1.2 Опис структурної (функціональної) схеми 
Файлова система Discord-бота Nord Side 
63 
ЧДТУ 242238.004ПЗ 
[Nord Side] 
├── .venv/ 
├── cogs/ 
│   ├── ban-unban.py 
│   ├── birthday.py 
│   ├── clear.py 
│   ├── custom role.py 
│   ├── economy.py 
│   ├── giveaway.py 
│   ├── kick.py 
│   ├── levels.py 
│   ├── loggs.py 
│   ├── moderation.py 
│   ├── mute-unmute.py 
│   ├── poll.py 
│   ├── reationemoji.py 
│   ├── serverstats.py 
│   ├── Weather.py 
│   ├── welcome.py 
├── font/ 
│   └── Dirtyline 36daysoftype 2022.otf 
├── image/ 
│   ├── Goodbye.png 
│   ├── Welcome.png 
│   └── Welcome_Goodbye.ai 
├── json/ 
│   ├── config.json 
│   └── TOKEN.json 
├── audit.log 
├── Main.py 
└── user_db.db 
64 
ЧДТУ 242238.004ПЗ 
Ця файлова система складається з наступних елементів: 
- .venv / - це віртуальне середовище для розділення залежностей та 
бібліотек, що використовуються в цьому проекті. Якщо ви хочете мати 
чисте середовище для конкретної конфігурації або інструменту, це 
стандартний спосіб розробки бота Discord; 
- cogs / - ця папка містить окремі модулі або" гвинтики " (cog), які 
представляють різні функції бота. Наприклад,ban-unban.py дозволити 
користувачам блокувати,poll.py -проведіть розслідування; 
- font / - ця папка містить шрифти, використовувані в 1 з режимів; 
- image/ Ця папка містить зображення, які ви можете переглядати в 
певному режимі; 
- json / - це включає Налаштування паприки.Файл json, який 
використовується для налаштування та налаштування деяких аспектів 
роботи бота; 
- audit.log - це окремий файл, що містить записи аудиту активності 
сервера; 
- user_db.db - це файл бази даних для облікового запису Користувача. 
3.1.3 Опис логічної схеми системи 
 
 
Рисунок 3.1 – Опис логічної схеми системи 
65 
ЧДТУ 242238.004ПЗ 
Сервер Discord 
Сервер Discord - це тип сервера чату, який використовується для 
спілкування з іншими людьми. Ви можете використовувати його для створення 
спільноти, обговорення тем, які Вас цікавлять, та спілкування з друзями. 
Бот Discord 
Бот Discord  -це програма, яка дозволяє взаємодіяти з сервером Discord. Боти 
можуть використовуватися для виконання різних завдань, таких як керування 
чатами, відтворення музики та надання інформації. 
Сервер баз даних 
Сервер баз даних - це тип комп'ютера, який використовується для зберігання 
та управління даними. Сервер баз даних зазвичай використовується серверами 
Discord для зберігання інформації користувача, каналів та повідомлень. 
3.1.4 Розробка бази даних 
База даних SQLite використовується для зберігання різної інформації про 
користувачів в рамках Discord сервера: 
Схема бази даних включає такі основні таблиці: 
1 giveaway (розіграш): 
- start_time (час початку); 
- end_time (час закінчення); 
- admin_name (ім'я адміністратора;) 
- winner_name (ім'я переможця); 
- winner_id (ідентифікатор переможця); 
- participants (кількість учасників); 
- title (назва). 
 
 
Рисунок 3.2 – База даних «Giveaway» 
 
66 
ЧДТУ 242238.004ПЗ 
2 economy (економіка): 
- user_id (ідентифікатор користувача); 
- username (ім'я користувача); 
- money (гроші); 
- position (позиція). 
 
 
Рисунок 3.3 – База даних «Economy» 
 
3 cooldowns (часи очікування): 
- user_id (ідентифікатор користувача); 
- command (команда); 
- last_executed (останнє виконання). 
 
 
Рисунок 3.4 – База даних «Cooldowns» 
 
4 gifts (подарунки) : 
- sender_id (ідентифікатор відправника); 
- sender_name (ім'я відправника); 
- receiver_id (ідентифікатор одержувача); 
- receiver_name (ім'я одержувача); 
- amount (кількість); 
- timestamp (часова мітка). 
67 
ЧДТУ 242238.004ПЗ 
 
Рисунок 3.5 – База даних «Gifts» 
 
5 shop (магазин) : 
- id_roles (ідентифікатор ролі); 
- role_name (назва ролі); 
- description (опис); 
- price (ціна); 
- quantity (кількість). 
 
 
Рисунок 3.6 – База даних «Shop» 
 
6 bought (куплено): 
- id_roles (ідентифікатор ролі); 
- roles_name (назва ролі); 
- how_much_buy (скільки куплено). 
 
 
Рисунок 3.7 – База даних «Bought» 
 
7 money_transactions (грошові транзакції): 
- id (ідентифікатор); 
- giver_id (ідентифікатор того, хто дав гроші); 
68 
ЧДТУ 242238.004ПЗ 
- giver_name (ім'я того, хто дав гроші); 
- receiver_id (ідентифікатор одержувача грошей); 
- receiver_name (ім'я одержувача грошей); 
- amount (кількість); 
- timestamp (часова мітка). 
 
 
Рисунок 3.8 – База даних «Money_Transactions» 
 
8 birthdays (дні народження): 
- user_id (ідентифікатор користувача); 
- username (ім'я користувача); 
- birthday (день народження). 
 
 
Рисунок 3.9 – База даних «Birthday» 
 
9 kick (вилучення): 
- kick_id (ідентифікатор вилучення); 
- admin_name (ім'я адміністратора); 
- user_id (ідентифікатор користувача); 
- username (ім'я користувача); 
- date (дата). 
 
 
Рисунок 3.10 – База даних «Kick» 
69 
ЧДТУ 242238.004ПЗ 
 
10 bans (бани): 
- ban_id (ідентифікатор бану); 
- user_id (ідентифікатор користувача); 
- username (ім'я користувача); 
- date (дата); 
- banned_by (забанений ким); 
- mute_id (ідентифікатор мута); 
- kick_id (ідентифікатор вилучення). 
 
 
Рисунок 3.11 – База даних «Ban» 
 
11 mutes (мути): 
- mute_id (ідентифікатор мута); 
- admin_name (ім'я адміністратора); 
- user_id (ідентифікатор користувача); 
- username (ім'я користувача); 
- time (час); 
- reason (причина). 
 
 
Рисунок 3.12 – База даних «Mute» 
 
12 levels (рівні): 
- id (ідентифікатор); 
70 
ЧДТУ 242238.004ПЗ 
- name (назва); 
- lvl (рівень); 
- xp (досвід); 
- xp_needed_next_level (досвід, потрібний для наступного рівня). 
 
 
Рисунок 3.13 – База даних «Levels» 
 
 
Рисунок 3.14 – Структура бази даних 
71 
ЧДТУ 242238.004ПЗ 
На цій діаграмі показана структура бази даних, що складається з декількох 
пов'язаних таблиць. Центральна таблиця - це" economy", яка зберігає інформацію 
про баланс користувачів, коштів та позицій. Інші таблиці залежать від цього і 
зберігають додаткову інформацію в інших таблицях. 
1 "Gift" - це таблиця, яка використовується для зберігання даних про 
подарунок, який користувач надсилає іншому користувачеві. Сюди входять 
ідентифікатори відправника та одержувача, імена, суми подарунків та мітки 
часу; 
2 "Bans" - це таблиця, яка використовується для зберігання інформації про 
власні фургони. Це включає ідентифікатор заборони, ідентифікатор 
користувача, ім'я користувача, дату заборони та ідентифікатор модератора, 
який наклав заборону; 
3 "User_joins" - це таблиця, яка використовується для зберігання даних про 
Користувача, який приєднався до сервера, включаючи ідентифікатор 
користувача, дату приєднання, ім'я користувача та ідентифікатор сервера; 
4 "Birthday" - це інформація про день народження Користувача, включаючи 
ідентифікатор користувача, ім'я, дату народження тощо; 
5 "Money_transactions" - це таблиця, яка використовується для відстеження 
грошових переказів між користувачами. Сюди входять унікальні 
ідентифікатори, ідентифікатори відправника та одержувача, імена, суми 
переказів та мітки часу; 
6 "Cooldowns" - це таблиця, яка використовується для зберігання інформації 
про охолодження команди користувача, включаючи ідентифікатор 
користувача, ім'я команди та час останнього виконання; 
7 "Kick" - це таблиця, яка використовується для зберігання даних про 
депортацію Користувача, включаючи ідентифікатор депортації, ім'я 
модератора, ідентифікатор користувача, ім'я користувача та дату депортації; 
8 "Mute" використовується для зберігання інформації про тимчасове 
вимкнення Користувача, включаючи ідентифікатор вимкнення, ім'я 
модератора, ідентифікатор користувача, ім'я користувача, час вимкнення та 
причину; 
72 
ЧДТУ 242238.004ПЗ 
9 "Giveaway" - це таблиця, яка використовується для зберігання даних 
лотереї, включаючи час початку та закінчення лотереї, ім'я адміністратора, 
ім'я переможця, ідентифікатор переможця, кількість учасників, назву 
лотереї; 
10 "Economy" - ця таблиця є однією з центральних таблиць цієї бази даних 1. 
Він призначений для зберігання інформації про користувачів і їх 
економічному становищі. 
3.1.5 Розробка інтерфейсу користувача 
Інтерфейс користувача бота Discord реалізований через текстовий канал, 
використовуючи команди та відповіді бота. Важливо надати чіткий та інтуїтивно 
зрозумілий синтаксис команд, а також чітку та інформативну відповідь. 
Особливості інтерфейсу: 
1 Префікси команд  
- використовуючи префікс (! Або/) дозволяє боту розрізняти команди 
та звичайний текст у повідомленні; 
- це приставка ! Зазвичай це використовується для старого формату 
команд, а ось / - для більше сучасного формату команд з косою 
рискою, представленого в Discord. 
2 Типи команд  
- команда з префіксом ! (Наприклад !weather) - це класичний формат, 
який потрібно вводити вручну; 
- крім того, команди з префіксом / (наприклад, /setbirthday) - це новий 
формат команд з косою рискою, який забезпечує більш зручний 
інтерфейс та автозаповнення. 
3 Списки доступних команд  
- ви можете написати окрему команду, щоб отримати список команд, 
які користувачі та адміністратори можуть використовувати для 
розрізнення дозволів користувачів та забезпечення простоти 
використання; 
73 
ЧДТУ 242238.004ПЗ 
- ці команди можуть відображати короткий опис кожної команди, щоб 
краще зрозуміти функціональність кожної команди. 
4 Користувацький інтерфейс 
 
 
Рисунок 3.15 – Бан 
 
 
Рисунок 3.16 – Встановлення день народження 
 
 
Рисунок 3.17 – Привітання користувача з днем народження 
 
 
Рисунок 3.18 – Видалення повідомлення вказаної кількості повідомлення 
74 
ЧДТУ 242238.004ПЗ 
 
Рисунок 3.19 – Видалення повідомлення конкретної особи, вказаної кількості 
повідомлення 
 
 
Рисунок 3.20 – Видалення всіх повідомлення конкретної особи 
 
 
Рисунок 3.21 – Видалення всіх повідомлення в чаті 
 
 
Рисунок 3.22 – Заробіток з команди !earn 
75 
ЧДТУ 242238.004ПЗ 
 
Рисунок 3.23 – Заробіток з команди !work 
 
 
Рисунок 3.24 – Штраф від СБУ за скоєний злочин 
 
 
Рисунок 3.25– Перевірка балансу 
76 
ЧДТУ 242238.004ПЗ 
 
Рисунок 3.26 – Перевірка лідерство 
 
 
Рисунок 3.27 – Передача грошей іншому користувачу 
 
 
Рисунок 3.28 – Поповнення магазину товарами 
 
 
Рисунок 3.29 – Список доступних товарів 
77 
ЧДТУ 242238.004ПЗ 
 
Рисунок 3.30 – Підвищення рівня 
 
 
Рисунок 3.31 – Перевірка рівня 
 
 
Рисунок 3.32 – Перевірка лідерство по рівню 
 
 
Рисунок 3.33 – Видача грошей від імені адміністратора 
78 
ЧДТУ 242238.004ПЗ 
 
Рисунок 3.34 – Розпочатий розіграш 
 
 
Рисунок 3.35 – Розіграш закінчено і вибрано переможця 
 
 
Рисунок 3.36 – Модерування на вміст мата чи образ 
 
 
Рисунок 3.37 – Модерування на вміст посилань 
 
 
Рисунок 3.38 – Додавання нових слів в список заборонених 
 
 
Рисунок 3.39 – Видалення слів зі списку заборонених 
79 
ЧДТУ 242238.004ПЗ 
 
Рисунок 3.40 – Додавання нових доменів в список дозволених 
 
 
Рисунок 3.41 – Видалення доменів зі в список дозволених 
 
 
Рисунок 3.42 – Журнал аудита 
80 
ЧДТУ 242238.004ПЗ 
 
Рисунок 3.43 – Проведення опитування на сервері 
 
 
Рисунок 3.44 – Результати опитування 
 
 
Рисунок 3.45 – Вітання та Прощання з користувачем 
81 
ЧДТУ 242238.004ПЗ 
 
Рисунок 3.46 – Додавання реакцій від імені бота 
 
 
Рисунок 3.47 – Результат пошук погоди по місту 
 
 
Рисунок 3.48 – Бонус від сервера 
82 
ЧДТУ 242238.004ПЗ 
 
Рисунок 3.49 – Статистика сервера 
3.1.6 Опис розробки програмних компонентів 
Основні програмні компоненти Discord бота: 
Ініціалізація та підключення до Discord API (disnake):  
- завантаження налаштувань; 
- створення екземпляру Discord клієнта; 
- підключення до Discord через вказаний токен; 
- встановлення базових подій (готовність, помилки). 
Обробники команд:  
- імпорт доступних команд; 
- парсинг вхідних повідомлень на предмет команд; 
- перевірка прав доступу користувача; 
- виклик відповідного обробника команди. 
Обробники подій:  
- повідомлення (виділення повідомлень, фільтрація спаму); 
- реакції (меню, підтвердження дій); 
- створення/видалення ролей/каналів (для модерації); 
- економічна система; 
- система рангів. 
База даних SQLite:  
- ініціалізація з'єднання з БД SQLite; 
- запити читання та запису даних; 
83 
ЧДТУ 242238.004ПЗ 
- обробка транзакцій та міграцій. 
Модерація:  
- команди для бану/розбану/вигнати/заглушити користувача; 
- логування дій модерації та користувачів. 
Утиліти:  
- пошук/форматування даних (Погода тощо). 
Логування та моніторинг:  
- забезпечує реєстрацію подій які відбувалися на сервері; 
- допомагає відстежувати поведінку користувачів. 
3.2 Тестування системи 
У цьому розділі описані різні типи тестів, що виконуються під час 
розробки програмного комплексу. По-перше, розглянемо модульні тести, які 
перевіряють правильність роботи окремих модулів або компонентів 
системи. Він пояснює, які тести використовувались, як вони проводилися та 
які результати були отримані. Нижче описані інтеграційні тести, які 
перевіряють взаємодію між різними модулями або компонентами системи. 
Він пояснює, як організовуються інтеграційні тести та які підходи та 
інструменти використовуються для забезпечення належної взаємодії 
компонентів. 
Наступним кроком є опис системного тесту, який перевіряє роботу 
всієї системи, включаючи її функціональність, продуктивність та 
стабільність. Він пояснює, як організовані системні тести, які тестові 
випадки та методи використовуються та які результати були отримані. Він 
також описує процес приймальних випробувань, проведених замовником 
або користувачем, щоб переконатися, що система відповідає вимогам та 
специфікаціям. 
3.2.1 Модульне тестування 
84 
ЧДТУ 242238.004ПЗ 
Мова програмування Python та бібліотека disnake були використані для 
створення «Програмна інтегрована система автоматизації взаємодій елементів для 
платформи Discord». 
Функціонал який був створений для кваліфікаційної роботи бакалавра: 
- Ban-Unban; 
- Birthday; 
- Clear; 
- CustomRole; 
- Economy; 
- Giveaway; 
- Kick; 
- Levels; 
- Loggs; 
- Moderation; 
- Mute-Unmute; 
- Poll; 
- ReactionEmoji; 
- ServerStats; 
- Weather; 
Таблиця 3.1 
Компоненти з їхніми командами та результати 
Модулі Команди Результат 
Ban-Unban /ban та /unban Ця функція працює належним чином 
і зберігає необхідну інформацію в 
базі даних 
Birthday /setbirthday Ця функція працює належним чином 
і зберігає необхідну інформацію в 
базі даних 
 
85 
ЧДТУ 242238.004ПЗ 
Продовження таблиця 3.1 
Giveaway !giveaway, !end_giveaway Ця функція працює належним чином 
і зберігає необхідну інформацію в 
базі даних 
Kick /kick Ця функція працює належним чином 
і зберігає необхідну інформацію в 
базі даних 
Levels !leaderboard Ця функція працює належним чином 
і зберігає необхідну інформацію в 
базі даних 
Loggs !set_audit_chanel Функція працює правильно 
Moderation !add_banned_word, Функція працює правильно. 
!remove_banned_word, Команди, які для зберігання та 
!add_approved_domain, видалення з певного файлу, 
!remove_approved_domain, працюють нормально 
!set_log_channel 
Mute-Unmute /mute, /unmute Ця функція працює належним чином 
і зберігає необхідну інформацію в 
базі даних 
Poll /poll, /end_poll Функція працює правильно 
ReactionEmoji !set_reactions_channel Функція працює правильно 
ServerStats /cheate_stat_chanells Функція працює правильно 
Weather /weather Функція працює нормально, але є 
похибка в даних 
Clear /clear Функція працює правильно 
CustomRole /create_role Функція працює правильно 
Economy !earn, !work, !crime, !balance, Ця функція працює належним чином 
!leaderboard, !gift, !bonus, і зберігає необхідну інформацію в 
!shop, !buy, drop базі даних 
 
86 
ЧДТУ 242238.004ПЗ 
Усі необхідні функції успішно пройшли тести та продемонстрували 
очікуваний результат. 
3.2.2 Інтеграційне тестування 
Інтеграційне тестування перевірятиме взаємодію між різними 
компонентами системи та базою даних. 
Тестування взаємодії команд із базою даних включає: 
- Перевірку правильного збереження та оновлення інформації про 
користувачів після виконання команд: /ban, /unban, /setbirthday, !earn, !work, 
!crime, !balance, !leaderboard (!top), !gift, !bonus, !shop, !buy, !drop, !giveaway, 
/kick, /mute, /unmute; 
- Тестування правильного зчитування інформації для користувачів із бази 
даних при виконанні команд: !xp, !leaderboard. 
 
Таблиця 3.2 
Тестування правильного збереження та оновлення інформації 
Команди Результати 
/ban Команда працює належним чином, та правильно заносить інформацію в 
базу даних 
/unban Команда працює належним чином, та видаляє інформацію з бази даних 
/setbirthday Команда працює належним чином, та правильно заносить інформацію в 
базу даних 
!earn Команда працює належним чином, та правильно заносить інформацію в 
базу даних 
!work Команда працює належним чином, та правильно заносить інформацію в 
базу даних 
!crime Команда працює належним чином, та правильно заносить інформацію в 
базу даних 
!gift Команда працює належним чином, та правильно заносить 
інформацію в базу даних 
!bonus Команда працює належним чином, та правильно заносить 
інформацію в базу даних 
87 
ЧДТУ 242238.004ПЗ 
Продовження таблиці 3.2 
!shop Команда працює належним чином, та правильно заносить 
інформацію в базу даних 
!buy Команда працює належним чином, та правильно заносить 
інформацію в базу даних 
!drop Команда працює належним чином, та правильно заносить 
інформацію в базу даних 
!giveaway Команда працює належним чином, та правильно заносить 
інформацію в базу даних 
/kick Команда працює належним чином, та правильно заносить 
інформацію в базу даних 
/mute Команда працює належним чином, та правильно заносить 
інформацію в базу даних 
/unmute Команда працює належним чином, та видаляє інформацію з бази 
даних 
 
Таблиця 3.3 
Таблиця правильного зчитування інформації 
Команди Результати 
!xp Команда працює належним чином, та виводить інформацію з бази 
даних 
!leaderboard Команда працює належним чином, та виводить інформацію з бази 
даних 
!balance Команда працює належним чином, та правильно заносить 
інформацію в базу даних 
!leaderboard Команда працює належним чином, та правильно заносить 
(!top) інформацію в базу даних 
 
88 
ЧДТУ 242238.004ПЗ 
Усі команди, що працюють з базою даних, продемонстрували результати, 
необхідні для зберігання та читання інформації як всередині, так і за межами бази 
даних. 
3.2.3 Системне тестування 
Системне тестування перевіряє програмне забезпечення на повністю 
інтегрованому системному рівні, щоб переконатися, що всі функціональні та 
нефункціональні вимоги виконані, тобто внутрішня структура програми не 
враховується, а орієнтована лише на зовнішню роботу. 
 
Таблиця 3.4 
Системне тестування 
Системні функція Протестовано Працює Опис дії 
Ban-Unban Так Так Заборона та дозвіл на сервері для 
користувачів. 
Birthday Так Так Повідомлення про дні 
народження користувачів 
Clear Так Так Видалення повідомлень з каналів 
чату 
CustomeRole Так Так Створення ролей для 
користувачів 
Economy Так Так Система економіки та валюти на 
сервері 
Giveaway Так Так Організація розіграшів серед 
користувачів 
Kick Так Так Вилучення користувачів з 
сервера 
Levels Так Так Система рівнів та досвіду для 
користувачів 
 
89 
ЧДТУ 242238.004ПЗ 
Продовження таблиця 3.4 
Loggs Так Так Запис журналу подій на 
сервері 
Moderation Так Так Модерація на сервері 
Mute-Unmute Так Так Вимкнення та увімкнення 
можливості спілкуватися на 
сервері. 
Poll Так Так Проведення опитувань серед 
користувачів 
ReactionEmoji Так Так Додавання реакцій на 
повідомлення. 
ServerStats Так Так Відображення статистики 
сервера. 
Weather Так Так Повідомлення про погоду. 
 
Всі функції пройшли системне тестування. Функція відповідає всім 
функціональним і нефункціональним вимогам.  
3.2.4 Приймальне тестування 
Мета: Перевірка функціональності системи з точки зору звичайного 
користувача та виявлення недоліків або покращень. 
Перевірка основних команд 
- команда /ban: користувач успішно забанений; 
- команда /unban: користувач успішно розбанений; 
- команда /setbirthday: дата народження користувача успішно збережена; 
- команди !earn, !work, !crime: відповідні нагороди або покарання 
успішно нараховані; 
- команда !gift: подарунок успішно переданий; 
- команда !bonus: бонус успішно отриманий; 
90 
ЧДТУ 242238.004ПЗ 
- команда !shop: коректний показ магазин сервера; 
- команда !buy: покупка в магазині успішно здійснена; 
- команда !drop: успішно видає гроші користувачам, від імені 
адміністратора; 
- !giveaway: роздача або конкурс успішно проведені; 
- команда /kick: користувач успішно вигнаний з сервера; 
- команди /mute, /unmute: користувач успішно зам'ючений/розм'ючений. 
Перевірка команд читання інформації 
- команда !leaderboard: правильний відображає рейтинг серед 
користувачів які мають найвищий рейтинг на сервері; 
- команда !xp: правильний відображення досвіду користувача; 
- команда !leaderboard (!top): правильний відображає рейтинг серед 
найбагатших користувачів; 
- команда !balance: коректно показує баланс користувача. 
Перевірка нефункціональних вимог 
- швидкість реакції: команди виконуються без значних затримок; 
- стабільність: система працює без збоїв протягом тестового періоду; 
- інтуїтивність інтерфейсу: користувачі легко освоюють використання 
команд. 
Зворотній зв'язок та пропозиції 
Загальна оцінка:  
Система працює стабільно і виконує всі основні функції відповідно до 
вимог. Але з точки зору звичайного користувача додаткових розваги недостатньо. 
Пропонується додати наступні функції: 
- міні-ігри: інтеграція простих ігор (наприклад, вікторини, казино, 
словесні ігри); 
- музичний бот: можливість програвати музику з популярних платформ; 
- розважальні команди: додаткові команди для жартів, мемів і тд. 
91 
ЧДТУ 242238.004ПЗ 
Система потребує деяких удосконалень, щоб покращити взаємодію з 
користувачем та підвищити рівень взаємодії з користувачем та розваг. 
3.3 Приклади впровадженого програмного комплексу 
Звичайно, головною метою залишається розкрити в повній межі дану 
кваліфікаційну роботу бакалавра, але було обдумано, що Discord-бота необхідно 
розширити функціонал та можливості. Це значно підвищить автоматизацію 
програмних продуктів. Запровадження автоматизованих систем, додавання нових 
модулів та створення інтерактивних ігор може покращити досвід взаємодії з цим 
Discord-ботом та зробити його більш захопливим і корисним для користувачів. 
Іншими словами, пропонується розширити функціональність бота за 
рахунок автоматизації певних процесів, інтеграції додаткових модулів та 
розробки ігрових і розважальних компонентів. Це дозволить зробити взаємодію з 
ботом більш різноманітною, цікавою та залучити більше користувачів.. 
Запуск ботів Discord на хостингу для забезпечення 24-годинної доступності 
є важливим кроком у розвитку поточного проекту. Однак реалізація цієї ідеї 
вимагатиме відповідних фінансових витрат на послуги хостингу. 
  
92 
ЧДТУ 242238.004ПЗ 
ВИСНОВОК ДО РОЗДІЛУ 3 
У цьому розділі детально описуються практичні аспекти розробки та 
тестування програмного забезпечення. Розглядалися питання, пов'язані з вибором 
інструментів реалізації, структурним і логічним проектуванням системи, 
розробкою баз даних і користувальницьких інтерфейсів, а також розробкою 
окремих програмних компонентів. Особлива увага приділяється різним типам 
тестування, особливо модульним, інтегрованим, системним і приймальним 
випробуванням, які є невід'ємною частиною забезпечення якості програмного 
забезпечення.  
93 
ЧДТУ 242238.004ПЗ 
ВИСНОВКИ 
В результаті цієї кваліфікаційної роботи бакалавра було досліджено та 
створено інтегровану програмну систему для автоматизації взаємодії елементів 
платформи Discord. Початковою метою було розробити бота, який об'єднає 
можливості декількох ботів, що використовуються на серверах Discord, для 
оптимізації їх кількості та спрощення управління. 
Метою даної роботи було створення програмна інтегрована система 
автоматизації взаємодій елементів для платформи Discord, що дозволило б 
уникнути використання кількох окремих ботів. Поставлені задачі включали в себе 
різноманітні функції, необхідні для ефективної модерації та управління сервером, 
а також для розваги та взаємодії з користувачами. 
Розроблений бот успішно виконує всі поставлені завдання. Модульна 
архітектура дозволила створити гнучку і легко масштабовану систему, яка може 
бути адаптована до різних вимог. Інтуїтивно зрозумілий інтерфейс спрощує 
управління функціями бота без необхідності навчання складним командам, 
доступним для всіх користувачів. 
Розроблений бот містить широкий спектр функцій, які значно розширюють 
можливості адміністраторів серверів і скорочують кількість необхідних 
індивідуальних ботів: 
- модерація: автоматизовані процеси для підтримки порядку на сервері, 
включаючи фільтрацію контенту; 
- команди для адміністраторів: дані команди допоможуть 
адміністраторам в керуванні користувачами; 
- розваги: інтерактивні ігри та заходи, що сприяють підвищенню 
активності користувачів 
- налаштування сервера: зручні інструменти для конфігурації каналів, 
ролей та дозволів; 
- економіка: віртуальна економіка з можливістю заробітку і витрат 
віртуальних валют; 
- рівні: система рівнів для мотивації користувачів залишатися активними; 
94 
ЧДТУ 242238.004ПЗ 
- аналітика: збір та аналіз даних сервера; 
- лотереї: організація розіграшів і конкурсів. 
Гнучкість та налаштування системи роблять її більш універсальною у 
використанні, оскільки боти можуть адаптуватися до конкретних потреб серверів 
Discord. Кожна функція може бути налаштована адміністратором відповідно до 
вимог конкретного сервера, що забезпечує індивідуальний підхід до управління. 
Оптимізація для ефективного використання ресурсів сервера забезпечує 
стабільну роботу бота навіть при високих навантаженнях, що важливо для 
підтримки продуктивності і зниження вартості технічних ресурсів. Розроблений 
бот також забезпечує надійне зберігання інформації користувача за допомогою 
створеної бази даних. Механізми, що застосовуються для забезпечення безпеки, 
узгодженості і точності операцій, забезпечують стабільну і надійну роботу 
системи. 
В цілому, система інтеграції програмного забезпечення, створена для 
автоматизації взаємодії елементів платформи Discord, досягла своєї мети, 
забезпечивши централізоване управління різними серверними функціями. Ця 
система не тільки підвищує ефективність управління, але і допомагає створити 
комфортну атмосферу для спілкування членів спільноти. Використання такого 
бота може значно поліпшити взаємодію з сервером і забезпечити зручний і 
функціональний інтерфейс для користувачів і адміністраторів. 
  
95 
ЧДТУ 242238.004ПЗ 
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ 
1 "Discord Developer Documentation" - Офіційна документація Discord для 
розробників: https://discord.com/developers/docs/intro  
2 "Getting Started" - Початок роботи з Discord API: 
https://discord.com/developers/docs/quick-start/getting-started 
3 "Receiving and Responding to Interactions" - Прийом та відповідь на 
взаємодії: https://discord.com/developers/docs/interactions/receiving-and-
responding 
4 "Message Components" - Компоненти повідомлень: 
https://discord.com/developers/docs/interactions/message-components 
5 "Game SDK Images" - Зображення в Game SDK: 
https://discord.com/developers/docs/game-sdk/images 
6 "User Resources" - Ресурси користувача: 
https://discord.com/developers/docs/resources/user 
7 "Auto Moderation Resources" - Ресурси автоматичної модерації: 
https://discord.com/developers/docs/resources/auto-moderation 
8 "Channel Resources" - Ресурси каналів: 
https://discord.com/developers/docs/resources/channel 
9 "Interactions Overview" - Огляд взаємодій: 
https://discord.com/developers/docs/interactions/overview 
10 "Disnake Documentation" - Офіційна документація для бібліотеки 
Disnake: https://docs.disnake.dev/en/stable/  
11 "Creating a Discord Bot" - Посібник від RealPython: 
https://realpython.com/how-to-make-a-discord-bot-python/  
12 "Discord Bot Development Crash Course" - Відеокурс від freeCodeCamp: 
https://www.youtube.com/watch?v=SPTfmiYiuok  
13 "Python Discord" - Офіційний сервер Discord спільноти Python: 
https://discord.gg/python  
14 "Discord API Reference" - Офіційна документація Discord API: 
https://discord.com/developers/docs/reference  
96 
ЧДТУ 242238.004ПЗ 
15 "Python Logging Documentation" - Офіційна документація модуля 
Logging для Python: https://docs.python.org/3/library/logging.html  
16 "Python Pathlib Documentation" - Офіційна документація модуля Pathlib 
для Python: https://docs.python.org/3/library/pathlib.html  
17 "Python Asincio Documentation" - Офіційна документація модуля Asincio 
для Python: https://docs.python.org/3/library/asincio.html  
18 "Python SQLite 3 Documentation" - Офіційна документація модуля SQLite 
3  для Python: https://docs.python.org/3/library/sqlite3.html  
19 "Python Random Documentation" - Офіційна документація модуля 
Random для Python: https://docs.python.org/3/library/random.html  
20 "OpenWeather" - Офіційна документація модуля Weather API: 
https://openweathermap.org/api 
21 "Книги по UML" – Збірник книг по Unified Modeling Language (UML): 
https://openweathermap.org/api 
97