Repository navigation
v0.5.0
Релиз 0.5.0 — Модульная архитектура и расширение функций Discord-бота
Этот релиз представляет собой значительное обновление архитектуры проекта: полный переход на модульную систему и внедрение ряда новых функций для музыкального плеера и управления ботом.
🚀 Основные изменения
💎 Новые функции (Features)
- YouTube Playlists: Добавлена полная поддержка воспроизведения плейлистов YouTube.
- Система пагинации: Внедрена универсальная пагинация для результатов поиска и очереди воспроизведения (
QueuePaginationView), что значительно улучшает UX в Discord. - Команда
/playlist: Новая гибридная команда для удобного управления списками воспроизведения. - Гибкая настройка ответов: В админ-панель добавлен переключатель «Отвечать всем» (
discord_respond_everyone), позволяющий боту реагировать на любые сообщения или только на упоминания. - Проверка статуса: Музыкальные команды теперь проверяют, включен ли Discord-бот в настройках.
🛠 Исправления (Fixes)
- Python 3.10+ Compatibility: Исправлен синтаксис аннотаций типов (
TypeAlias) для обеспечения стабильной работы на современных версиях Python. - Логика вайтлиста: Исправлена проверка авторов сообщений (теперь корректно проверяется ID пользователя вместо сравнения объектов).
- UI Музыкального плеера: Исправлено поведение прогресс-бара (зависание на 99%) и иконок управления при завершении последнего трека в очереди.
- Сеттеры свойств: В класс плеера добавлены необходимые
@property.setterдля корректного управления состоянием в реальном времени. - CSS Fixes: Настроены параметры
pointer-eventsиz-indexдля устранения багов с анимацией кликов.
✨ Качество жизни и стиль (QoL & Style)
- Safari Support: Добавлены вендорные префиксы
-webkit-для корректного отображения эффектов размытия (backdrop-filter) в браузере Safari. - Анимация курсора: Добавлена стильная анимация активного клика для улучшения отзывчивости интерфейса.
- Обновление темы: Улучшена стилизация переключателя тем и прозрачных функциональных кнопок.
🧪 Тестирование (Tests)
- Глобальный рефакторинг тестов: Удалены старые монолитные тесты. Внедрена современная структура с использованием
pytestи общих фикстур (conftest.py). - Полное покрытие: Добавлены модульные тесты для всех новых сервисов (Music, LLM, User, History), а также для логики пагинации и веб-интерфейса.
♻️ Рефакторинг и Архитектура (Refactoring)
Декомпозиция монолита
Файлы bot.py, music_player.py и views.py были удалены в пользу модульных пакетов:
src/bot/discord/bot/— Клиент и команды.src/bot/discord/player/— Фабрика, менеджер очереди, обработчик голоса.src/bot/discord/views/— Базовые классы и специализированные представления.
Ключевые улучшения
- Централизация констант: Все строковые сообщения и параметры пагинации вынесены в
constants.py, что упрощает поддержку и будущую локализацию. - Паттерны проектирования: Активное использование паттернов Factory (для плеера) и Handler (для команд).
Архитектурная заметка: Переход к компонентной структуре позволяет масштабировать проект без увеличения сложности кодовой базы. Теперь каждый элемент (очередь, голос, UI) автономен и легко тестируем.