
Mirage Arena Assistant
Discord-бот для серверу клубу: тікети підтримки, тимчасові голосові канали, модерація і захист ролей.
- Year
- 2026
- Role
- Backend-розробка, архітектура
- Client
- Mirage Arena (власний бізнес)
- Date
- Mar 15, 2026
Виклик
Discord-сервер клубу зростав, і рутина почала з'їдати час адмінів: створення voice-каналів на турніри, тікети підтримки, контроль ролей. Хотіли automated layer, який не вимагає мікроменеджменту.
Що зробили
Discord-бот на Python 3.11+ з discord.py 2.x і slash-командами. Повний async-стек: httpx для HTTP до API сайту, pydantic-settings для конфігу.
Архітектура з чіткою декомпозицією:
- cogs/ — Discord I/O (команди, події, listeners)
- services/ — бізнес-логіка, валідація, правила
- api-client/ — спілкування з основним сайтом (єдина persistent layer)
Завдяки такому розділенню фіча-код тестується без живого зʼєднання з Discord — services і api-client підмінюються моками. Це різко прискорює розробку нових команд.
Функції:
- Тікети підтримки з автозакриттям після N днів неактивності
- Тимчасові голосові канали (join-to-create) — користувач заходить у спец-канал, бот створює його приватну voice-кімнату, видаляє коли всі вийшли
- Захист привілейованих ролей — якщо хтось дав owner-роль поза офіційним flow, бот її забирає назад
- Автоочищення службових каналів за розкладом
Деплой
Docker Compose або systemd на Linux VPS. Ротовані логи, graceful shutdown через SIGTERM. Втрачено API-зʼязок з сайтом — circuit breaker з експоненційним backoff.
Результат
Працює 24/7 без втручань. Команда адмінів витрачає на рутину в рази менше часу.