refactor: split god classes, fix OCP/ISP/SRP, migrate commands to BaseCommand hierarchy

This commit is contained in:
loki5512344 2026-07-05 13:22:48 +02:00
parent 793924c9ba
commit 90c3cac5cf
244 changed files with 1677 additions and 1570 deletions

View file

@ -1,290 +1,212 @@
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ LoChat Mute Configuration ║
# ║ Конфигурация мутов ║
# ║ Версия: 1.5.5-1.20.1 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
# LoChat mute system configuration
# Controls mute durations, automatic mutes, escalation, and notifications.
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОСНОВНЫЕ НАСТРОЙКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ── General Settings ───────────────────────────────────────────────────────────
settings:
# Причина мута по умолчанию
default-reason: "Нарушение правил чата"
# Длительность мута по умолчанию
default-reason: "Chat rule violation"
default-duration: "1h"
# Максимальная длина причины мута
max-reason-length: 100
# Показывать причину мута игроку
show-reason: true
# Показывать оставшееся время мута
show-remaining-time: true
# Автоматически размучивать при истечении времени
auto-unmute: true
# Сохранять историю мутов
save-history: true
# Максимальное количество записей в истории на игрока
max-history-entries: 50
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ДОСТУПНЫЕ ДЛИТЕЛЬНОСТИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ── Available Durations ────────────────────────────────────────────────────────
# Each duration requires a permission. Empty permission = no restriction.
durations:
# Формат: "время": "право для использования"
"5m":
permission: "lochat.mute.dur.5m"
display: "5 минут"
display: "5 minutes"
"10m":
permission: "lochat.mute.dur.10m"
display: "10 минут"
display: "10 minutes"
"30m":
permission: "lochat.mute.dur.30m"
display: "30 минут"
display: "30 minutes"
"1h":
permission: "lochat.mute.dur.1h"
display: "1 час"
display: "1 hour"
"3h":
permission: "lochat.mute.dur.3h"
display: "3 часа"
display: "3 hours"
"6h":
permission: "lochat.mute.dur.6h"
display: "6 часов"
display: "6 hours"
"12h":
permission: "lochat.mute.dur.12h"
display: "12 часов"
display: "12 hours"
"1d":
permission: "lochat.mute.dur.1d"
display: "1 день"
display: "1 day"
"3d":
permission: "lochat.mute.dur.3d"
display: "3 дня"
display: "3 days"
"7d":
permission: "lochat.mute.dur.7d"
display: "7 дней"
display: "7 days"
"14d":
permission: "lochat.mute.dur.14d"
display: "14 дней"
display: "14 days"
"30d":
permission: "lochat.mute.dur.30d"
display: "30 дней"
display: "30 days"
"perm":
permission: "lochat.mute.dur.perm"
display: "Навсегда"
display: "Permanent"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ГОТОВЫЕ ПРИЧИНЫ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ── Preset Reasons ─────────────────────────────────────────────────────────────
reasons:
spam:
text: "Спам в чате"
text: "Spam"
duration: "30m"
permission: "lochat.mute.reason.spam"
caps:
text: "Злоупотребление заглавными буквами"
text: "Excessive caps"
duration: "15m"
permission: "lochat.mute.reason.caps"
swear:
text: "Использование нецензурной лексики"
text: "Inappropriate language"
duration: "1h"
permission: "lochat.mute.reason.swear"
flood:
text: "Флуд в чате"
text: "Flood"
duration: "20m"
permission: "lochat.mute.reason.flood"
advertising:
text: "Реклама"
text: "Advertising"
duration: "3h"
permission: "lochat.mute.reason.advertising"
insult:
text: "Оскорбления игроков"
text: "Insulting players"
duration: "2h"
permission: "lochat.mute.reason.insult"
toxicity:
text: "Токсичное поведение"
duration: "6h"
permission: "lochat.mute.reason.toxicity"
politics:
text: "Обсуждение политики"
duration: "1h"
permission: "lochat.mute.reason.politics"
religion:
text: "Религиозные споры"
duration: "1h"
permission: "lochat.mute.reason.religion"
begging:
text: "Попрошайничество"
duration: "30m"
permission: "lochat.mute.reason.begging"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ АВТОМАТИЧЕСКИЕ МУТЫ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ── Auto-Mute ──────────────────────────────────────────────────────────────────
auto-mute:
# Включить автоматические муты
enabled: true
# Мут за спам
spam:
enabled: true
threshold: 5 # Количество сообщений
time-window: 10 # За какое время (секунды)
threshold: 5
time-window: 10
duration: "10m"
reason: "Автомут: спам в чате"
# Мут за мат
reason: "Auto-mute: spam"
swear:
enabled: true
threshold: 3 # Количество нарушений
threshold: 3
duration: "30m"
reason: "Автомут: использование мата"
# Мут за заглавные буквы
reason: "Auto-mute: inappropriate language"
caps:
enabled: true
threshold: 5 # Количество нарушений
threshold: 5
duration: "5m"
reason: "Автомут: злоупотребление CAPS"
# Мут за рекламу
reason: "Auto-mute: excessive caps"
advertising:
enabled: true
threshold: 1 # Одно нарушение
threshold: 1
duration: "1h"
reason: "Автомут: реклама"
reason: "Auto-mute: advertising"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ЭСКАЛАЦИЯ НАКАЗАНИЙ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ── Punishment Escalation ──────────────────────────────────────────────────────
escalation:
# Включить эскалацию наказаний
enabled: true
# Период для подсчета нарушений (дни)
period: 30
# Уровни наказаний
levels:
1:
duration: "30m"
reason: "Первое нарушение"
reason: "First offense"
2:
duration: "2h"
reason: "Повторное нарушение"
reason: "Second offense"
3:
duration: "12h"
reason: "Третье нарушение"
reason: "Third offense"
4:
duration: "3d"
reason: "Четвертое нарушение"
reason: "Fourth offense"
5:
duration: "7d"
reason: "Пятое нарушение"
reason: "Fifth offense"
6:
duration: "perm"
reason: "Систематические нарушения"
reason: "Systematic violations"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ УВЕДОМЛЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ── Notifications ──────────────────────────────────────────────────────────────
notifications:
# Уведомлять администраторов о мутах
notify-staff: true
# Право для получения уведомлений
staff-permission: "lochat.mute.notify"
# Публичные уведомления о мутах
public-mute: false
# Публичные уведомления о размутах
public-unmute: false
# Скрытые муты (с флагом -s)
silent-mute:
enabled: true
permission: "lochat.mute.silent"
notify-permission: "lochat.mute.see-silent"
# Формат уведомлений
formats:
mute: "&#FF6B6B{moderator} замутил {player} на {duration}. Причина: {reason}"
unmute: "&#6BCB77{moderator} размутил {player}"
silent-mute: "&#FFA726[ТИХО] {moderator} замутил {player} на {duration}. Причина: {reason}"
auto-mute: "&#FF6B6B[АВТО] {player} замучен на {duration}. Причина: {reason}"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ИНТЕГРАЦИИ │
# └─────────────────────────────────────────────────────────────────────────────┘
formats:
mute: "&c{moderator} &7muted &f{player} &7for &f{duration}&7. Reason: &f{reason}"
unmute: "&a{moderator} &7unmuted &f{player}"
silent-mute: "&6[SILENT] &f{moderator} &7muted &f{player} &7for &f{duration}"
auto-mute: "&c[AUTO] &f{player} &7muted for &f{duration}&7. Reason: &f{reason}"
# ── Integrations ───────────────────────────────────────────────────────────────
integrations:
# LibertyBans
libertybans:
enabled: false
sync-mutes: true
# AdvancedBan
advancedban:
enabled: false
sync-mutes: true
# LiteBans
litebans:
enabled: false
sync-mutes: true
# Discord уведомления
discord:
enabled: false
webhook-url: ""
format: "**{moderator}** замутил **{player}** на **{duration}**\nПричина: {reason}"
format: "**{moderator}** muted **{player}** for **{duration}**\nReason: {reason}"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ХРАНЕНИЕ ДАННЫХ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ── Storage ────────────────────────────────────────────────────────────────────
storage:
# Тип хранения: file, mysql, sqlite
type: "file"
# Настройки MySQL
type: file
mysql:
host: "localhost"
port: 3306
@ -292,45 +214,36 @@ storage:
username: "root"
password: "password"
table-prefix: "lochat_"
# Настройки SQLite
sqlite:
file: "plugins/LoChat/mutes.db"
# Автоматическая очистка старых записей
cleanup:
enabled: true
days: 90 # Удалять записи старше N дней
days: 90
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ДОПОЛНИТЕЛЬНЫЕ ФУНКЦИИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ── Extra Features ─────────────────────────────────────────────────────────────
features:
# Временные муты (автоматически снимаются)
temporary-mutes: true
# IP муты (мутить по IP адресу)
ip-mutes:
enabled: false
permission: "lochat.mute.ip"
# Мут команд (блокировать определенные команды)
command-mute:
enabled: false
blocked-commands:
- "me"
- "say"
- "tell"
# Предупреждения перед мутом
warnings:
enabled: true
max-warnings: 3
reset-time: 3600 # Сброс предупреждений (секунды)
# Апелляции на муты
reset-time: 3600
appeals:
enabled: false
command: "/appeal"
permission: "lochat.appeal"
permission: "lochat.appeal"