# TODO - План реализации функций ## 🎯 Основные задачи ### 1. ⚡ Переделать систему опыта (XP System Rework) **Текущая проблема:** - Формула: `XP = 100 * level^1.5` (слишком сложная) - XP за сообщение: 10 XP - XP за минуту в войсе: 5 XP - Cooldown на сообщения: 60 секунд **Новая система (из FEATURES.md):** - ✅ **Формула прогрессии:** `XP для следующего уровня = 200 * текущий_уровень` - Пример: уровень 1 → 2 требует 200 XP - Уровень 5 → 6 требует 1000 XP - Уровень 10 → 11 требует 2000 XP - ✅ **Голосовая активность:** - 1 XP каждую минуту нахождения в голосовом канале - Автоматическое отслеживание через `VoiceXpListener` - Уведомление при повышении уровня в войс-канале **Файлы для изменения:** - `src/main/java/creator/loki/level/LevelSystem.java` - изменить формулу - `src/main/java/creator/loki/listener/VoiceTracker.java` - изменить начисление XP - Добавить уведомления о level up в войсе **Статус:** ✅ **ГОТОВО** --- ### 2. 🎤 Система личных голосовых каналов (Voice Management System) **Концепция:** Пользователь заходит в специальный канал-триггер → бот автоматически создает личный войс-канал → перемещает пользователя туда → пишет сообщение в чат войса с настройками **Функционал:** #### 2.1 Автоматическое создание каналов - ✅ Создать `VoiceChannelManager` класс - ✅ Listener на вход в канал-триггер (например, "➕ Создать канал") - ✅ Автоматическое создание канала с именем пользователя - ✅ Перемещение пользователя в созданный канал - ✅ Выдача прав управления владельцу канала - ✅ Автоматическое удаление канала когда он пустой #### 2.2 Сообщение с настройками в чате войса При создании канала бот отправляет embed с кнопками: - 🔒 **Закрыть/Открыть** - переключение приватности - 👥 **Лимит** - установить лимит пользователей (0-99) - ✏️ **Переименовать** - изменить название канала - 🎨 **Битрейт** - изменить качество звука - 🚫 **Удалить** - удалить канал #### 2.3 Система пресетов - ✅ Сохранение настроек как пресет - ✅ Быстрое применение сохраненных настроек - ✅ Хранение в `data/voice_presets.json` **Структура данных:** ```json { "voice_channels": { "channel_id": { "owner_id": "user_id", "created_at": 1234567890, "settings": { "name": "Канал пользователя", "limit": 5, "bitrate": 64000, "locked": false } } }, "presets": { "user_id": [ { "name": "Gaming", "limit": 4, "bitrate": 96000 } ] } } ``` **Файлы для создания:** - `src/main/java/creator/loki/voice/VoiceChannelManager.java` - `src/main/java/creator/loki/voice/VoiceChannelData.java` - `src/main/java/creator/loki/voice/VoicePreset.java` - `src/main/java/creator/loki/listener/VoiceChannelListener.java` - `src/main/java/creator/loki/command/impl/voice/VoiceSettingsCommand.java` (для кнопок) **Статус:** ✅ **ГОТОВО** (базовая реализация, кнопки управления требуют обработчиков) --- ### 3. 📊 Счетчик участников (Member Counter) **Функционал:** - ✅ Обновление названия голосового канала с количеством участников - ✅ Формат: `【👥】Участники: 123` - ✅ Отслеживание дневной статистики: - Количество присоединившихся за день - Количество покинувших за день - Разница за 24 часа - ✅ Обновление каждые 5 минут - ✅ Сохранение статистики в `data/counter_data.json` **Структура данных:** ```json { "counter_channel_id": "1234567890", "daily_stats": { "date": "2026-05-11", "joined": 15, "left": 8, "difference": 7 }, "history": [ { "date": "2026-05-10", "joined": 20, "left": 12, "difference": 8 } ] } ``` **Файлы для создания:** - `src/main/java/creator/loki/listener/MemberCounterListener.java` - `src/main/java/creator/loki/counter/CounterManager.java` - `src/main/java/creator/loki/counter/DailyStats.java` **Статус:** 🔴 Не начато --- ## ✅ Что уже сделано ### ✅ Система опыта переделана - Новая формула: `XP для уровня N = 200 * N` - 1 XP за минуту в войсе - Обновление каждую минуту вместо 5 минут - Метод `addVoiceTime` теперь возвращает `LevelUpResult` для уведомлений ### ✅ Система личных войс-каналов (базовая) - `VoiceChannelManager` - управление каналами - `VoiceChannelListener` - автоматическое создание/удаление - `VoiceChannelData` и `VoicePreset` - модели данных - Автоматическое создание при входе в триггер-канал - Автоматическое удаление пустых каналов - Панель управления с кнопками (требуется обработчик кнопок) ### ✅ Счетчик участников - `CounterManager` - управление счетчиком - `MemberCounterListener` - отслеживание входов/выходов - `DailyStats` - дневная статистика - Обновление каждые 5 минут - История за 30 дней ### ✅ SQLite база данных + автомиграция - `Database` - менеджер SQLite - `DatabaseMigration` - автоматическая миграция из JSON - `ConfigRepository` - работа с конфигурацией - Все таблицы созданы автоматически - Миграция данных при первом запуске ### ✅ Команды настройки - `/voice-setup trigger` - установить канал-триггер - `/voice-setup category` - установить категорию - `/voice-setup text-channel` - установить текстовый канал - `/voice-setup info` - показать конфигурацию - `/counter-setup channel` - установить канал счетчика - `/counter-setup format` - установить формат - `/counter-setup info` - показать конфигурацию --- ## 🔧 Дополнительные улучшения ### 4. 🎨 Улучшение уведомлений о level up - ✅ Красивые embed сообщения при повышении уровня - ✅ Отправка в тот же канал где получен XP - ✅ Для войса - отправка в текстовый канал связанный с войсом - ✅ Показывать прогресс до следующего уровня **Статус:** 🔴 Не начато --- ### 5. 🛠️ Команды для настройки систем (Admin Commands) #### Voice System Setup: - `/voice-setup trigger ` - установить канал-триггер - `/voice-setup category ` - установить категорию для личных каналов - `/voice-setup text-channel ` - установить текстовый канал для уведомлений #### Counter Setup: - `/counter-setup channel ` - установить канал для счетчика - `/counter-setup format ` - изменить формат отображения - `/counter stats` - показать статистику за период **Статус:** 🔴 Не начато --- ## 📝 Приоритеты реализации ### Высокий приоритет (сделать в первую очередь): 1. ⚡ Переделать систему опыта (простая формула) 2. 🎤 Базовая система личных войс-каналов (создание/удаление) 3. 📊 Счетчик участников ### Средний приоритет: 4. 🎤 Настройки войс-каналов через кнопки 5. 🎨 Улучшение уведомлений о level up 6. 🎤 Система пресетов для войс-каналов ### Низкий приоритет: 7. 🛠️ Админ команды для настройки --- ## 🐛 Известные проблемы (Bugs to Fix) ### Критические: - [ ] Проверить корректность начисления XP в войсе - [ ] Убедиться что VoiceTracker правильно отслеживает время ### Некритические: - [ ] Удалить неиспользуемый logger в LevelSystem.java - [ ] Убрать ненужный @SuppressWarnings в LevelSystem.java --- ## 📚 Технические детали ### Зависимости: - JDA 5.0.0 (уже есть) - Guice для DI (уже есть) - Gson для JSON (уже есть) ### Конфигурация (добавить в config): ```yaml voice: trigger_channel_id: 1234567890 category_id: 1234567890 text_channel_id: 1234567890 auto_delete_empty: true counter: channel_id: 1234567890 update_interval: 300 # секунды format: "【👥】Участники: {count}" ``` --- ## ✅ Чеклист перед релизом - [ ] Все функции протестированы - [ ] Логирование работает корректно - [ ] Нет утечек памяти (проверить scheduler'ы) - [ ] Graceful shutdown для всех scheduler'ов - [ ] Документация обновлена - [ ] FEATURES.md актуализирован --- **Дата создания:** 2026-05-11 **Версия:** 1.0 **Автор:** Loki Bot Team