+ economy domain (EconomyAccount, Job, SlotCombination, EconomyTransaction) + EconomyRepository + SqlEconomyRepository + DB schema + EconomyService (transfer, daily, deposit/withdraw, stat upgrades) + FishingService (fish grid with difficulty levels, speed bonus) + BlackjackService (dealer stands on 16, ties lose) + SlotService (weighted combos up to x50) + JobService (6 jobs with level reqs and efficiency stat) + 11 commands: balance, baltop, pay, daily, bank, rob, fish, blackjack, slot, job, work + Tests for SqlEconomyRepository + EconomyModule + EconomyCommandRegistrar wired into BotModule
280 lines
9.6 KiB
Markdown
280 lines
9.6 KiB
Markdown
# 🤖 Loki Discord Bot - Функции
|
||
|
||
## 📋 Описание
|
||
|
||
Многофункциональный Discord бот с системой уровней, личными голосовыми каналами, модерацией и развлекательными командами. **Все команды — префиксные** (ниже для краткости префикс `!`; реальный префикс задаётся в конфиге бота).
|
||
|
||
**Технологии:**
|
||
- Java 21
|
||
- JDA 5.0.0
|
||
- SQLite + автомиграция
|
||
- Google Guice (DI)
|
||
|
||
---
|
||
|
||
## ⭐ Основные функции
|
||
|
||
### 🎯 Система уровней и опыта
|
||
- **Формула:** 200 XP × уровень
|
||
- **Получение XP:**
|
||
- 10 XP за сообщение (cooldown 60 сек)
|
||
- 1 XP за минуту в войсе
|
||
- **Команды:**
|
||
- `!rank [@user]` — карточка ранга
|
||
- `!leaderboard` — топ по уровням/сообщениям/войсу
|
||
- **Уведомления:** Красивые embed при повышении уровня
|
||
- **Награды:** Роли за достижение уровней (5, 10, 20, 30, 50)
|
||
|
||
### 🎤 Личные голосовые каналы
|
||
- **Автосоздание:** Зайди в канал-триггер → создастся личный канал
|
||
- **Управление через кнопки:**
|
||
- 🔒 Закрыть/Открыть
|
||
- 👥 Лимит пользователей
|
||
- ✏️ Переименовать
|
||
- 🎨 Битрейт
|
||
- 🚫 Удалить
|
||
- **Автоудаление:** Пустые каналы удаляются автоматически
|
||
- **Настройка:** `!voice-setup`
|
||
|
||
### 📊 Счетчик участников
|
||
- **Автообновление:** Название канала с количеством участников
|
||
- **Формат:** `【👥】Участники: 123`
|
||
- **Статистика:** Присоединения/выходы за день
|
||
- **История:** 30 дней
|
||
- **Настройка:** `!counter-setup`
|
||
|
||
### 📝 Логи модерации
|
||
- **Что логируется:**
|
||
- 🗑️ Удаление сообщений
|
||
- 🔨 Баны/разбаны
|
||
- 👢 Кики
|
||
- 🔇 Муты/размуты
|
||
- 🎤 Отключение микрофона/звука
|
||
- **Настройка:** `!log-setup moderation` / `!log-setup levelup`
|
||
|
||
### 🎮 Развлекательные команды
|
||
|
||
**Игры:**
|
||
- `!coin` — подбросить монетку
|
||
- `!dice` — бросить кубик
|
||
- `!8ball` — магический шар
|
||
- `!ship @user1 @user2` — совместимость
|
||
- `!rate` — оценить что-то
|
||
- `!gay`, `!fat`, `!iq`, `!pp` — процентомеры
|
||
|
||
**GIF-интерактив (nekos.life):**
|
||
- `!hug`, `!kiss`, `!poke`, `!slap`, `!tickle`, `!cuddle`, `!feed`
|
||
|
||
**Развлечения (текст):**
|
||
- `!pat` — погладить (без GIF, несколько pat-pat)
|
||
- `!compliment`, `!roast` — комплимент / жарка
|
||
|
||
### 🛡️ Модерация
|
||
- `!ban`, `!kick` — бан / кик пользователя
|
||
- `!clear <amount>` — очистить сообщения
|
||
- Автологирование всех действий
|
||
|
||
### 🎨 Кастомные роли
|
||
- `!createrole` — создать роль
|
||
- `!deleterole` — удалить роль
|
||
- `!editrole` — редактировать роль
|
||
- `!myroles` — мои роли
|
||
|
||
### 📈 Статистика
|
||
- `!stats` — статистика сервера
|
||
- `!rep`, `!minusrep` — репутация
|
||
- `!reptop` — топ по репутации
|
||
|
||
### 🔧 Утилиты
|
||
- `!avatar [@user]` — аватар пользователя
|
||
- `!info [@user]` — информация о пользователе
|
||
- `!poll` — создать голосование
|
||
- `!ping` — пинг бота
|
||
- `!help` — справка
|
||
|
||
---
|
||
|
||
## ⚙️ Команды настройки (только админы)
|
||
|
||
### Личные войс-каналы
|
||
```
|
||
!voice-setup trigger <channel> - канал-триггер
|
||
!voice-setup category <category> - категория для каналов
|
||
!voice-setup text-channel <channel> - текстовый канал для панелей
|
||
!voice-setup info - показать настройки
|
||
```
|
||
|
||
### Счетчик участников
|
||
```
|
||
!counter-setup channel <channel> - установить канал
|
||
!counter-setup format <format> - формат ({count})
|
||
!counter-setup info - показать настройки
|
||
```
|
||
|
||
### Логирование
|
||
```
|
||
!log-setup moderation <channel> - канал логов модерации
|
||
!log-setup levelup <channel> - канал уведомлений level up
|
||
!log-setup info - показать настройки
|
||
```
|
||
|
||
### Сброс уровней (одноразовая команда)
|
||
```
|
||
!resetlevels
|
||
```
|
||
**Описание:** Сбрасывает уровни и XP всех пользователей на сервере.
|
||
|
||
**Требования:**
|
||
- Права администратора
|
||
- Команда работает только один раз
|
||
- Требует подтверждения через кнопки
|
||
|
||
**Что сбрасывается:**
|
||
- Уровень → 0
|
||
- XP → 0
|
||
|
||
**Что сохраняется:**
|
||
- Время в голосовых каналах
|
||
- Количество сообщений
|
||
- Репутация
|
||
|
||
---
|
||
|
||
## 🔐 Команды супер-админа
|
||
|
||
**Супер-админ ID:** `1414975197269987471`
|
||
|
||
### Генерация рейтингов
|
||
```
|
||
!generateratings
|
||
```
|
||
**Описание:** Генерирует все rating значения для всех участников сервера.
|
||
|
||
**Генерируемые рейтинги:**
|
||
- Ship (0-100%)
|
||
- Gay (0-100%)
|
||
- IQ (0-200)
|
||
- PP (0-30 см)
|
||
- Mustache (0-100, редко 1000-1500)
|
||
- Fat (0-100%)
|
||
- Boykisser (0-100%)
|
||
|
||
**Особенности:**
|
||
- Не перезаписывает существующие значения
|
||
- Пропускает ботов
|
||
- Генерирует для всех участников сервера
|
||
|
||
---
|
||
|
||
## 🗄️ База данных
|
||
|
||
**SQLite** с автоматической миграцией из JSON:
|
||
- `config` - конфигурация
|
||
- `user_stats` - статистика пользователей
|
||
- `reputation` - репутация
|
||
- `ship_pairs` - ship пары
|
||
- `custom_roles` - кастомные роли
|
||
- `voice_channels` - личные каналы
|
||
- `counter_stats` - статистика счетчика
|
||
|
||
---
|
||
|
||
## 🚀 Быстрый старт
|
||
|
||
1. **Запуск:**
|
||
```bash
|
||
gradle run
|
||
```
|
||
|
||
2. **Настройка:**
|
||
```
|
||
!voice-setup trigger #создать-канал
|
||
!voice-setup category Личные каналы
|
||
!voice-setup text-channel #управление
|
||
|
||
!counter-setup channel #счетчик
|
||
!counter-setup format 【👥】Участники: {count}
|
||
|
||
!log-setup moderation #логи
|
||
!log-setup levelup #level-up
|
||
```
|
||
|
||
3. **Готово!** Зайди в канал-триггер → создастся личный канал
|
||
|
||
---
|
||
|
||
## 📦 Структура проекта
|
||
|
||
```
|
||
src/main/java/creator/loki/
|
||
├── audio/ # TTS и аудио
|
||
├── command/ # Команды
|
||
│ └── impl/
|
||
│ ├── entertainment/ # Игры и взаимодействия
|
||
│ ├── moderation/ # Модерация
|
||
│ ├── roles/ # Кастомные роли
|
||
│ ├── setup/ # Настройка
|
||
│ ├── stats/ # Статистика
|
||
│ └── utility/ # Утилиты
|
||
├── config/ # Конфигурация
|
||
├── core/ # Ядро бота
|
||
├── counter/ # Счетчик участников
|
||
├── data/ # JSON хранилище
|
||
├── database/ # SQLite + миграция
|
||
├── level/ # Система уровней
|
||
├── listener/ # Event listeners
|
||
├── voice/ # Личные каналы
|
||
└── util/ # Утилиты
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 Особенности
|
||
|
||
✅ **Dependency Injection** (Google Guice)
|
||
✅ **SQLite** с автомиграцией из JSON
|
||
✅ **Graceful shutdown** всех компонентов
|
||
✅ **Логирование** (SLF4J + Logback)
|
||
✅ **Кэширование** (Caffeine)
|
||
✅ **Rate limiting** и cooldowns
|
||
✅ **Метрики** производительности
|
||
✅ **Модульная архитектура**
|
||
|
||
---
|
||
|
||
## 📝 Права бота
|
||
|
||
Необходимые права:
|
||
- ✅ `MANAGE_CHANNELS` - создание/удаление каналов
|
||
- ✅ `MOVE_MEMBERS` - перемещение пользователей
|
||
- ✅ `MANAGE_PERMISSIONS` - выдача прав
|
||
- ✅ `MANAGE_ROLES` - управление ролями
|
||
- ✅ `BAN_MEMBERS` - баны
|
||
- ✅ `KICK_MEMBERS` - кики
|
||
- ✅ `MANAGE_MESSAGES` - удаление сообщений
|
||
- ✅ `VIEW_AUDIT_LOG` - просмотр логов
|
||
|
||
---
|
||
|
||
## 🔄 Обновления
|
||
|
||
### v2.0 (2026-05-11)
|
||
- ✅ SQLite база данных
|
||
- ✅ Автомиграция из JSON
|
||
- ✅ Личные голосовые каналы
|
||
- ✅ Счетчик участников
|
||
- ✅ Логи модерации
|
||
- ✅ Уведомления level up
|
||
- ✅ Обработчик кнопок для войс-каналов
|
||
|
||
### v1.0
|
||
- Базовая система уровней
|
||
- Команды развлечений
|
||
- Модерация
|
||
- Кастомные роли
|
||
|
||
---
|
||
|
||
**Версия:** 2.0
|
||
**Дата:** 2026-05-11
|
||
**Автор:** Loki Bot Team
|