feat: economy system with minigames, bank, rob, jobs, fishing, blackjack, slots

+ 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
This commit is contained in:
loki5512344 2026-06-20 00:23:15 +02:00
parent fcb5cd7207
commit fe121c8546
270 changed files with 18632 additions and 11656 deletions

View file

@ -2,7 +2,7 @@
## 📋 Описание
Многофункциональный Discord бот с системой уровней, личными голосовыми каналами, модерацией и развлекательными командами.
Многофункциональный Discord бот с системой уровней, личными голосовыми каналами, модерацией и развлекательными командами. **Все команды — префиксные** (ниже для краткости префикс `!`; реальный префикс задаётся в конфиге бота).
**Технологии:**
- Java 21
@ -20,8 +20,8 @@
- 10 XP за сообщение (cooldown 60 сек)
- 1 XP за минуту в войсе
- **Команды:**
- `/rank [@user]` - карточка ранга
- `/leaderboard` - топ по уровням/сообщениям/войсу
- `!rank [@user]` — карточка ранга
- `!leaderboard` — топ по уровням/сообщениям/войсу
- **Уведомления:** Красивые embed при повышении уровня
- **Награды:** Роли за достижение уровней (5, 10, 20, 30, 50)
@ -34,14 +34,14 @@
- 🎨 Битрейт
- 🚫 Удалить
- **Автоудаление:** Пустые каналы удаляются автоматически
- **Настройка:** `/voice-setup`
- **Настройка:** `!voice-setup`
### 📊 Счетчик участников
- **Автообновление:** Название канала с количеством участников
- **Формат:** `【👥】Участники: 123`
- **Статистика:** Присоединения/выходы за день
- **История:** 30 дней
- **Настройка:** `/counter-setup`
- **Настройка:** `!counter-setup`
### 📝 Логи модерации
- **Что логируется:**
@ -50,48 +50,47 @@
- 👢 Кики
- 🔇 Муты/размуты
- 🎤 Отключение микрофона/звука
- **Настройка:** `/log-setup moderation`
- **Настройка:** `!log-setup moderation` / `!log-setup levelup`
### 🎮 Развлекательные команды
**Игры:**
- `/coin` - подбросить монетку
- `/dice` - бросить кубик
- `/8ball` - магический шар
- `/ship @user1 @user2` - совместимость
- `/rate` - оценить что-то
- `/gay/@fat/@iq/@pp` - процентомеры
- `!coin` — подбросить монетку
- `!dice` — бросить кубик
- `!8ball` — магический шар
- `!ship @user1 @user2` — совместимость
- `!rate` — оценить что-то
- `!gay`, `!fat`, `!iq`, `!pp` — процентомеры
**Взаимодействия:**
- `/hug/@kiss/@pat/@poke` - обнять/поцеловать/погладить/ткнуть
- `/slap/@tickle/@cuddle` - шлепнуть/пощекотать/обнять
- `/compliment/@roast` - комплимент/жарка
- `/feed` - покормить
**GIF-интерактив (nekos.life):**
- `!hug`, `!kiss`, `!poke`, `!slap`, `!tickle`, `!cuddle`, `!feed`
**Развлечения (текст):**
- `!pat` — погладить (без GIF, несколько pat-pat)
- `!compliment`, `!roast` — комплимент / жарка
### 🛡️ Модерация
- `/ban/@kick` - бан/кик пользователя
- `/clear <amount>` - очистить сообщения
- `!ban`, `!kick` — бан / кик пользователя
- `!clear <amount>` — очистить сообщения
- Автологирование всех действий
### 🎨 Кастомные роли
- `/createrole` - создать роль
- `/deleterole` - удалить роль
- `/editrole` - редактировать роль
- `/myroles` - мои роли
- `!createrole` — создать роль
- `!deleterole` — удалить роль
- `!editrole` — редактировать роль
- `!myroles` — мои роли
### 📈 Статистика
- `/stats [@user]` - статистика пользователя
- `/rep/@minusrep` - репутация
- `/reptop` - топ по репутации
- `/serverstats` - статистика сервера
- `!stats` — статистика сервера
- `!rep`, `!minusrep` — репутация
- `!reptop` — топ по репутации
### 🔧 Утилиты
- `/avatar [@user]` - аватар пользователя
- `/info [@user]` - информация о пользователе
- `/poll` - создать голосование
- `/ping` - пинг бота
- `/help` - справка
- `/tts <text>` - озвучить текст
- `!avatar [@user]` — аватар пользователя
- `!info [@user]` — информация о пользователе
- `!poll` — создать голосование
- `!ping` — пинг бота
- `!help` — справка
---
@ -99,26 +98,72 @@
### Личные войс-каналы
```
/voice-setup trigger <channel> - канал-триггер
/voice-setup category <category> - категория для каналов
/voice-setup text-channel <channel> - текстовый канал для панелей
/voice-setup info - показать настройки
!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 - показать настройки
!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 - показать настройки
!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%)
**Особенности:**
- Не перезаписывает существующие значения
- Пропускает ботов
- Генерирует для всех участников сервера
---
## 🗄️ База данных
@ -143,15 +188,15 @@ gradle run
2. **Настройка:**
```
/voice-setup trigger #создать-канал
/voice-setup category Личные каналы
/voice-setup text-channel #управление
!voice-setup trigger #создать-канал
!voice-setup category Личные каналы
!voice-setup text-channel #управление
/counter-setup channel #счетчик
/counter-setup format 【👥】Участники: {count}
!counter-setup channel #счетчик
!counter-setup format 【👥】Участники: {count}
/log-setup moderation #логи
/log-setup levelup #level-up
!log-setup moderation #логи
!log-setup levelup #level-up
```
3. **Готово!** Зайди в канал-триггер → создастся личный канал