Skip to content

v0.5.0

Choose a tag to compare

@AndreyKilanov AndreyKilanov released this 22 Feb 23:16
· 151 commits to main since this release
dcee21b

Релиз 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) автономен и легко тестируем.