discord-bot/TODO.md

11 KiB
Raw Blame History

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.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

Структура данных:

{
  "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. 📊 Счетчик участников

Средний приоритет:

  1. 🎤 Настройки войс-каналов через кнопки
  2. 🎨 Улучшение уведомлений о level up
  3. 🎤 Система пресетов для войс-каналов

Низкий приоритет:

  1. 🛠️ Админ команды для настройки

🐛 Известные проблемы (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