| dc.contributor.author | Авдосьєв, І. А. | uk |
| dc.contributor.author | Avdosiev, I. A. | en |
| dc.date.accessioned | 2026-09-03T10:27:41Z | |
| dc.date.available | 2026-09-03T10:27:41Z | |
| dc.date.issued | 2026 | |
| dc.identifier.citation | Авдосьєв І. А. Архітектура розподіленої багатоботової системи для платформи Discord // Матеріали Міжнародної науково-практичної інтернет-конференції «Молодь в науці: дослідження, проблеми, перспективи (МН-2026)», м. Вінниця, 22-26 червня 2026 р. Електрон. текст. дані. 2026. URI: https://conferences.vntu.edu.ua/index.php/mn/mn2026/paper/view/29762. | uk |
| dc.identifier.uri | https://ir.lib.vntu.edu.ua/handle/123456789/52796 | |
| dc.description.abstract | Стаття присвячена проектуванню та розробці архітектури розподіленої системи Discord-ботів із підтримкою одночасного відтворення потокового аудіо, автоматизованої модерації та інтеграції великих мовних моделей. Здійснено детальний аналіз організації асинхронного виконання чотирьох незалежних ботів у межах єдиного процесу Python. Описано механізми ізоляції стану між агентами, управління Lavalink-вузлами та побудови системи штучного інтелекту з персонажами на основі Groq API. Запропоновано архітектурне рішення на основі патерну Cog та делегування команд через менеджер воркерів. | uk |
| dc.description.abstract | The article is devoted to the design and development of the architecture of a distributed Discord bot system supporting simultaneous audio streaming, automated moderation, and integration of large language models. A detailed analysis of the asynchronous execution of four independent bots within a single Python process is carried out. Mechanisms for state isolation between agents, Lavalink node management, and the construction of an artificial intelligence system with character-based interactions using the Groq API are described. An architectural solution based on the Cog pattern and command delegation through a worker manager is proposed. | en |
| dc.language.iso | uk_UA | uk_UA |
| dc.publisher | ВНТУ | uk |
| dc.relation.ispartof | Матеріали Міжнародної науково-практичної інтернет-конференції «Молодь в науці: дослідження, проблеми, перспективи (МН-2026)», м. Вінниця, 22-26 червня 2026 р. | uk |
| dc.relation.uri | https://conferences.vntu.edu.ua/index.php/mn/mn2026/paper/view/29762 | |
| dc.subject | Python | en |
| dc.subject | discordpy | en |
| dc.subject | asyncio | en |
| dc.subject | Wavelink | en |
| dc.subject | Lavalink | en |
| dc.subject | Groq API | en |
| dc.subject | великі мовні моделі | uk |
| dc.subject | Discord-бот | en |
| dc.subject | Python | en |
| dc.subject | discordpy | en |
| dc.subject | asyncio | en |
| dc.subject | Wavelink | en |
| dc.subject | Lavalink | en |
| dc.subject | Groq API | en |
| dc.subject | large language models | en |
| dc.subject | Discord bot | en |
| dc.subject | audio | en |
| dc.title | Архітектура розподіленої багатоботової системи для платформи Discord | uk |
| dc.type | Thesis | |
| dc.identifier.udc | 004.42 | |
| dc.relation.references | медіаконтенту YouTube та Spotify через інтеграцію lavasrcплагіну Lavalink. Для оптимізації швидкодії реалізовано LRU-кеш пошукових запитів ємністю 100 записів, спільний між Rainbow та воркерами. Автоматичне перемикання вузлів відбувається при виявленні деградації: 2 і більше помилок протягом 2 хвилин ініціюють failover на резервний вузол. Система логування та моніторингу Зважаючи на багатоботову природу системи, де чотири агенти генерують події одночасно, централізована система логування є критичним інструментом діагностики та налагодження. Реалізовано ієрархічну структуру журналювання на базі стандартного модуля logging мови Python із власним механізмом ротації сесій. При кожному запуску системи автоматично створюється окрема директорія у форматі Logs/DD_MM_YYYY-HH-MM/, що відповідає часу старту. Система зберігає не більше трьох останніх сесій, автоматично видаляючи застарілі при перевищенні ліміту. Така організація дозволяє швидко зіставляти поведінку системи між різними запусками без ручного сортування файлів. Кожен модуль системи веде власний лог-файл: музичний модуль генерує окремі файли для bot, cache, commands, components, worker_bot та worker_manager; модуль адміністрування — для commands, tasks, models; AI-модуль — для bot, context, memory, db. Глобальний файл errors.log агрегує повідомлення рівня ERROR і вище з усіх модулів одночасно, що спрощує виявлення критичних збоїв у продакшн-середовищі. Виведення у консоль доповнено ANSI-кольоровим форматуванням для швидкого візуального розрізнення рівнів DEBUG, INFO, WARNING та ERROR, тоді як файловий формат залишається plain-text для сумісності з будь-якими інструментами аналізу логів. Модуль штучного інтелекту Система містить модуль чат-бота, побудований на базі Groq API з використанням моделі llama3.3-70b-versatile. Кожен із чотирьох ботів має власну унікальну особистість, визначену через системні промпти у форматі TOML: Rainbow тепла та дружна, Iris стримана та саркастична, Aurora енергійна у стилі Gen-Z, Selene мудра та спокійна. Вибір мови відповіді визначається автоматично на основі аналізу частки кириличних символів у повідомленні користувача. Модуль контексту реалізує RAG-light підхід: перед формуванням запиту до LLM система збирає метадані каналу (назва, тема, категорія), короткострокову пам'ять (15 останніх повідомлень), соціальний контекст (карма та активні претензії користувача), а також інжектує документацію відповідних команд при виявленні ключових слів, пов'язаних із налаштуваннями або довідкою. Система карми забезпечує динамічне ставлення бота до користувача в діапазоні від -100 до +100 балів. LLM додає спеціальний тег [K:N] у кінці відповіді, який парсується та застосовується до бази даних. Негативні зміни карми, що перевищують поріг у -3 одиниці, автоматично фіксуються як pretenzii (grudges) з описом інциденту, що впливає на подальший тон спілкування бота з цим користувачем. Система модерації та допоміжні модулі Модуль модерації побудовано на базі Tortoise ORM із SQLite як сховищем даних. Система реалізує триступеневу модель попереджень: кожне накладене попередження (/warn) автоматично призначає користувачеві відповідну роль згідно з конфігурацією сервера. Для тимчасових покарань реалізовано фоновий цикл на базі asyncio, що кожні 60 секунд перевіряє терміни дії та автоматично скасовує покарання. Додатково реалізовано систему амністії: якщо з моменту накладення попередження минуло більше 7 днів, воно автоматично знімається в рамках щоденного перегляду. Розважальні модулі системи включають три підсистеми кастомізації нікнеймів: ColorNick (анімована зміна кольору ролі в режимах Rainbow, Gradient, Wave та Random), FontNick (Unicodeтрансформація нікнейму у стилі Bold, Italic, Fraktur тощо) та NickPrefix (анімований префікс у стилі DVD-заставки, Spinner або LoadingBar). Управління конфігурацією реалізовано через централізований ConfigManager з LRU-кешуванням та підтримкою гарячого перезавантаження JSON-файлів без зупинки бота. Висновки Розроблена архітектура розподіленої багатоботової системи для платформи Discord демонструє практичну ефективність у вирішенні задач одночасного обслуговування кількох голосових каналів. Застосування asyncio.gather() та патерну WorkerManager дозволило об'єднати чотири незалежних агенти в єдиному процесі зі збереженням повної ізоляції стану, уникаючи накладних витрат на міжпроцесну комунікацію. Інтеграція Wavelink та Lavalink із механізмом виділених вузлів для кожного воркера вирішила фундаментальну проблему синглтон-природи Wavelink Pool, забезпечивши коректну маршрутизацію аудіо-подій виключно до бота-власника вузла. Інтеграція Groq API з системою карми, унікальними особистостями ботів та RAG-light контекстом реалізує рівень соціальної взаємодії, що якісно відрізняє розроблену систему від стандартних чат-ботів. Персоналізоване ставлення бота до кожного користувача на основі накопиченої карми формує динамічне середовище спілкування. Централізована система логування із сесійною організацією та permodule журналами, у поєднанні з Tortoise ORM та aiosqlite, забезпечує надійний моніторинг і зберігання даних у виробничому середовищі. Отримані результати підтверджують доцільність застосування асинхронної багатоагентної архітектури для розробки складних Discord-систем. Запропоновані рішення щодо ізоляції стану між агентами та делегування команд через централізований менеджер можуть бути адаптовані у ширшому контексті розробки багатоагентних систем реального часу на базі екосистеми Python. СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ | uk |
| dc.relation.references | Rapptz, "discord.py: A Python wrapper for the Discord API," GitHub. [Online]. Available: https://github.com/Rapptz/discord.py. [Accessed: May 24, 2026]. | en |
| dc.relation.references | Rapptz, "discord.py Documentation: Components, Slash Commands and Event Reference," discord.py Docs. [Online]. Available: https://discordpy.readthedocs.io/en/stable/. [Accessed: May 24, 2026]. | en |
| dc.relation.references | PythonDiscord, "Wavelink: A robust and powerful Lavalink wrapper for discord.py," GitHub. [Online]. Available: https://github.com/PythonDiscord/Wavelink. [Accessed: May 24, 2026]. | en |
| dc.relation.references | Lavalink Devs, "Lavalink: A standalone audio sending node based on Lavaplayer," GitHub. [Online]. Available: https://github.com/lavalink-devs/Lavalink. [Accessed: May 24, 2026]. | en |
| dc.relation.references | Groq Inc., "Groq API Documentation: Fast AI inference," Groq Console. [Online]. Available: https://console.groq.com/docs/. [Accessed: May 24, 2026]. | en |
| dc.relation.references | Meta AI, "Introducing LLaMA 3.3: A New State-of-the-Art Language Model," Meta AI Blog, 2024. [Online]. Available: https://ai.meta.com/blog/. [Accessed: May 24, 2026]. | en |
| dc.relation.references | Python Software Foundation, "asyncio: Asynchronous I/O," Python Documentation, 2025. [Online]. Available: https://docs.python.org/3/library/asyncio.html. [Accessed: May 24, 2026]. | en |
| dc.relation.references | Python Software Foundation, "logging: Logging facility for Python," Python Documentation, 2025. [Online]. Available: https://docs.python.org/3/library/logging.html. [Accessed: May 24, 2026]. 9. tortoise-orm, "Tortoise ORM: Easy async ORM for python, built with relations in mind," GitHub. [Online]. Available: https://github.com/tortoise/tortoise-orm. [Accessed: May 24, 2026]. | en |
| dc.relation.references | omnilib, "aiosqlite: asyncio bridge to the standard sqlite3 module," GitHub. [Online]. Available: https://github.com/omnilib/aiosqlite. [Accessed: May 24, 2026]. | en |