11 KiB
11 KiB
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
Структура данных:
{
"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.javasrc/main/java/creator/loki/voice/VoiceChannelData.javasrc/main/java/creator/loki/voice/VoicePreset.javasrc/main/java/creator/loki/listener/VoiceChannelListener.javasrc/main/java/creator/loki/command/impl/voice/VoiceSettingsCommand.java(для кнопок)
Статус: ✅ ГОТОВО (базовая реализация, кнопки управления требуют обработчиков)
3. 📊 Счетчик участников (Member Counter)
Функционал:
- ✅ Обновление названия голосового канала с количеством участников
- ✅ Формат:
【👥】Участники: 123 - ✅ Отслеживание дневной статистики:
- Количество присоединившихся за день
- Количество покинувших за день
- Разница за 24 часа
- ✅ Обновление каждые 5 минут
- ✅ Сохранение статистики в
data/counter_data.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.javasrc/main/java/creator/loki/counter/CounterManager.javasrc/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- менеджер SQLiteDatabaseMigration- автоматическая миграция из JSONConfigRepository- работа с конфигурацией- Все таблицы созданы автоматически
- Миграция данных при первом запуске
✅ Команды настройки
/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 <channel>- установить канал-триггер/voice-setup category <category>- установить категорию для личных каналов/voice-setup text-channel <channel>- установить текстовый канал для уведомлений
Counter Setup:
/counter-setup channel <voice-channel>- установить канал для счетчика/counter-setup format <format>- изменить формат отображения/counter stats- показать статистику за период
Статус: 🔴 Не начато
📝 Приоритеты реализации
Высокий приоритет (сделать в первую очередь):
- ⚡ Переделать систему опыта (простая формула)
- 🎤 Базовая система личных войс-каналов (создание/удаление)
- 📊 Счетчик участников
Средний приоритет:
- 🎤 Настройки войс-каналов через кнопки
- 🎨 Улучшение уведомлений о level up
- 🎤 Система пресетов для войс-каналов
Низкий приоритет:
- 🛠️ Админ команды для настройки
🐛 Известные проблемы (Bugs to Fix)
Критические:
- Проверить корректность начисления XP в войсе
- Убедиться что VoiceTracker правильно отслеживает время
Некритические:
- Удалить неиспользуемый logger в LevelSystem.java
- Убрать ненужный @SuppressWarnings в LevelSystem.java
📚 Технические детали
Зависимости:
- JDA 5.0.0 (уже есть)
- Guice для DI (уже есть)
- Gson для JSON (уже есть)
Конфигурация (добавить в config):
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