Initial commit: Discord bot with XP system, voice channels, moderation logs, and member counter

This commit is contained in:
loki5512344 2026-05-11 13:55:12 +02:00
commit 0f664e317e
132 changed files with 12415 additions and 0 deletions

275
TODO.md Normal file
View file

@ -0,0 +1,275 @@
# 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