275 lines
11 KiB
Markdown
275 lines
11 KiB
Markdown
# 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 <channel>` - установить канал-триггер
|
||
- `/voice-setup category <category>` - установить категорию для личных каналов
|
||
- `/voice-setup text-channel <channel>` - установить текстовый канал для уведомлений
|
||
|
||
#### Counter Setup:
|
||
- `/counter-setup channel <voice-channel>` - установить канал для счетчика
|
||
- `/counter-setup format <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
|