- Поддерживаемые версии
- 1.16
- 1.17
- 1.18
- 1.19
- 1.20
- 1.21
- Ядра и Прокси
- Bukkit
- Spigot
- Paper
- Минимальная версия Java
- 17
hChatFilter
Продвинутая модерация чата, команд, табличек, книг, наковальни и текста предметов
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Продвинутая модерация чата, команд, табличек, книг, наковальни и текста предметов
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
hChatFilter — это продвинутый плагин модерации, который фильтрует текст сразу в нескольких системах сервера.
Плагин может проверять обычный чат, настроенные команды, таблички, книги, текст переименования в наковальне и текст предметов. Он объединяет локальную фильтрацию по правилам, антиспам, антикапс, детект IP, нормализацию текста, профили наказаний, хранилище нарушений и опциональную AI-модерацию.
AI-модерация полностью опциональна. Локальные правила могут работать без AI, а подозрительные случаи можно отправлять на проверку через OpenRouter, Ollama или custom OpenAI-compatible HTTP provider.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Основные возможности
- Проверка сообщений в чате.
- Проверка текста в настроенных командах.
- Проверка текста табличек.
- Проверка названия, автора и страниц книг.
- Проверка текста переименования в наковальне.
- Проверка display name и lore предметов.
- Фильтрация по правилам через rules.yml.
- Режимы replacement, delete и block для правил.
- Антиспам с несколькими методами обнаружения.
- Антикапс с настраиваемым поведением.
- Детект IP-адресов и рекламы.
- Продвинутая нормализация текста для защиты от обходов.
- Опциональная AI-модерация.
- Хранилище нарушений SQLite и MySQL.
- Профили наказаний с этапами.
- Поддержка DiscordSRV.
- API для разработчиков и события модерации.
- Поддержка Folia.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Как работает
Когда игрок отправляет или создаёт текст, hChatFilter обрабатывает его через включённые модули.
Плагин нормализует текст, проверяет его по локальным правилам, применяет антиспам и антикапс, ищет IP-адреса и решает, нужно ли разрешить сообщение, изменить его, заблокировать или отправить на AI-проверку.
Если найдено нарушение, плагин может выполнить настроенные actions, сохранить нарушение и применить профиль наказаний с учётом категории и истории игрока.
────────────────────────────────────────
Источники текста
Плагин может проверять следующие источники:
- Сообщения в чате.
- Личные сообщения и другие настроенные команды.
- Broadcast-команды.
- Таблички.
- Книги.
- Названия предметов в наковальне.
- Display name и lore предметов.
Текст команд можно извлекать через command rules. Например, для личных сообщений можно пропускать аргумент с ником игрока и проверять только само сообщение.
────────────────────────────────────────
Нормализация текста
Перед проверкой правил плагин может нормализовать текст, чтобы находить попытки обхода.
Поддерживаемые возможности:
- Unicode NFKC-нормализация.
- Удаление zero-width символов.
- Удаление control-символов.
- Приведение к нижнему регистру.
- Замена похожих символов.
- Удаление разделителей для compact-проверки.
- Сжатие повторяющихся символов.
- Транслитерация русского текста в латиницу.
- Транслитерация латиницы в русский текст.
- Кеш нормализации.
Это помогает обнаруживать сообщения со смешанными алфавитами, скрытыми символами, лишними разделителями и повторяющимися буквами.
────────────────────────────────────────
Проверка правил
Правила настраиваются в rules.yml.
Каждое правило может определять:
- Состояние включения.
- Категорию.
- Severity.
- Источники, где правило работает.
- AI-режим.
- Поведение правила.
- Режим поиска.
- Список слов или regex-паттерны.
Поддерживаемая логика поиска:
- contains
- compact
- regex
- advertising
- fuzzy matching
В зависимости от режима правило может заменять текст, удалять содержимое или полностью блокировать сообщение.
────────────────────────────────────────
Антиспам
hChatFilter включает несколько антиспам-проверок.
- Cooldown между сообщениями.
- Burst-детект.
- Проверка повторяющихся сообщений.
- Проверка похожих сообщений.
- Детект character flood.
- Опциональная проверка команд на спам.
Спам-предупреждения могут спадать со временем, а разные стадии спама могут запускать разные actions.
────────────────────────────────────────
Антикапс
Модуль антикапса может находить чрезмерное использование заглавных букв.
Настраиваемые параметры:
- Минимальная длина сообщения.
- Максимальный процент заглавных букв.
- Игнорируемые слова.
- Режим реакции.
- Категория нарушения.
- Severity.
Режим реакции может переводить сообщение в нижний регистр, блокировать его или только предупреждать игрока.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
AI-модерация
AI-модерацию можно включить для подозрительных сообщений.
Поддерживаемые провайдеры:
- OpenRouter.
- Ollama.
- Custom OpenAI-compatible HTTP API.
AI-модуль поддерживает:
- Лимит очереди запросов.
- Лимит запросов в секунду.
- Лимит параллельных запросов.
- Настройку timeout.
- Circuit breaker.
- Кеш AI-вердиктов.
- Fallback-поведение при ошибках.
- Fallback-поведение при переполнении очереди.
- Публикацию одобренных сообщений.
Настройки AI-провайдера и API-ключи указываются прямо в ai.yml.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Наказания и actions
hChatFilter использует профили наказаний с этапами.
Примеры стандартных профилей:
- toxic
- advertising
- server-insult
Каждый этап может выполнять свои actions. Это позволяет выдавать предупреждения, уведомления, муты или запускать консольные команды в зависимости от типа нарушения и истории игрока.
Плагин также может выполнять actions при разных событиях модерации:
- Обнаружено запрещённое слово.
- Сообщение заблокировано.
- Применена замена текста.
- Обнаружены UTF-символы.
- Обнаружен капс.
- Обнаружен спам.
- Сообщение поставлено в AI-очередь.
- AI одобрил сообщение.
- AI отклонил сообщение.
- Ошибка AI-модерации.
- Обнаружен IP-адрес.
- Сработал фильтр таблички, книги, наковальни или предмета.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Хранилище
Данные о нарушениях можно хранить через:
- SQLite.
- MySQL.
Сохранённые нарушения используются для lookup, статистики и отслеживания наказаний.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
DiscordSRV
Если установлен DiscordSRV, hChatFilter может проверять сообщения Discord -> Minecraft до их появления в игровом чате.
Это поведение можно включить или выключить в конфигурации.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
API для разработчиков
hChatFilter включает публичный API и события модерации.
Доступные области API:
- Кастомные правила.
- Контекст сообщения.
- Профиль нарушений игрока.
- Результаты фильтрации.
- Событие AI-модерации.
- Pre-filter событие.
- Post-filter событие.
- Pre-punishment событие.
Это позволяет другим плагинам взаимодействовать с системой модерации.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Конфигурация
Основные файлы конфигурации:
Код:
config.yml
rules.yml
ai.yml
────────────────────────────────────────
Файлы
Код:
config.yml
Основные модули, нормализация, антиспам, антикапс, хранилище, хуки и actions.
rules.yml
Локальные правила фильтрации, категории, источники, настройки поиска и поведение правил.
ai.yml
Настройки AI-модерации, настройки провайдера, модели и API-ключи.
────────────────────────────────────────
Модули
Основные модули можно включать и выключать отдельно:
Код:
settings:
modules:
chatFilter: true
signFilter: true
bookFilter: true
anvilFilter: true
itemFilter: true
────────────────────────────────────────
Хранилище
Тип хранилища выбирается в config.yml:
Код:
settings:
storage:
type: "sqlite"
MySQL также можно настроить, если требуется внешнее хранилище.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Команды
Код:
/hchatfilter
/hchatfilter reload
/hchatfilter test <text>
/hchatfilter lookup <player>
/hchatfilter stats [player]
/hchatfilter rules
/hchatfilter ai status
/hchatfilter cache clear
────────────────────────────────────────
Описание команд
Код:
/hchatfilter
Показывает help-меню.
/hchatfilter reload
Перезагружает конфигурационные файлы.
/hchatfilter test <text>
Проверяет текст через фильтр и показывает debug-информацию.
/hchatfilter lookup <player>
Показывает сохранённые нарушения игрока.
/hchatfilter stats [player]
Показывает статистику модерации.
/hchatfilter rules
Показывает информацию о загруженных правилах.
/hchatfilter ai status
Показывает статус AI-модерации.
/hchatfilter cache clear
Очищает кеш AI-вердиктов.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Права
Код:
hchatfilter.admin
Доступ к административным командам.
hchatfilter.bypass.*
Обход всех проверок фильтра.
hchatfilter.bypass.chat.*
Обход всех проверок чата.
hchatfilter.bypass.command.*
Обход всех проверок команд.
hchatfilter.bypass.sign.*
Обход всех проверок табличек.
hchatfilter.bypass.book.*
Обход всех проверок книг.
hchatfilter.bypass.anvil.*
Обход всех проверок наковальни.
hchatfilter.bypass.item.*
Обход всех проверок предметов.
────────────────────────────────────────
Примеры отдельных bypass-прав
Код:
hchatfilter.bypass.chat.utf8
hchatfilter.bypass.chat.ip
hchatfilter.bypass.chat.words
hchatfilter.bypass.chat.caps
hchatfilter.bypass.chat.spam
hchatfilter.bypass.command.utf8
hchatfilter.bypass.command.ip
hchatfilter.bypass.command.words
hchatfilter.bypass.command.caps
hchatfilter.bypass.sign.utf8
hchatfilter.bypass.sign.ip
hchatfilter.bypass.sign.words
hchatfilter.bypass.sign.caps
hchatfilter.bypass.book.utf8
hchatfilter.bypass.book.ip
hchatfilter.bypass.book.words
hchatfilter.bypass.book.caps
hchatfilter.bypass.anvil.utf8
hchatfilter.bypass.anvil.ip
hchatfilter.bypass.anvil.words
hchatfilter.bypass.anvil.caps
hchatfilter.bypass.item.utf8
hchatfilter.bypass.item.ip
hchatfilter.bypass.item.words
hchatfilter.bypass.item.caps
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Требования
- Java 17 или новее.
- Minecraft 1.16 или новее.
- Spigot, Paper, Purpur или Folia.
Опциональные интеграции:
- DiscordSRV.
- MySQL.
- OpenRouter.
- Ollama.
- Custom OpenAI-compatible HTTP API.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Установка
- Поместите hChatFilter.jar в папку plugins.
- Перезапустите сервер.
- Откройте созданную папку плагина.
- Настройте config.yml и rules.yml.
- Настройте ai.yml, если нужна AI-модерация.
- Если AI-модерация включена, укажите API-ключ прямо в ai.yml.
- Перезапустите сервер или используйте /hchatfilter reload.
Папка конфигурации:
Код:
plugins/hChatFilter/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Примечания
- AI-модерация опциональна.
- Локальные правила могут работать без AI.
- DiscordSRV опционален.
- SQLite используется для локального хранения.
- MySQL доступен для внешнего хранения.
- Folia поддерживается.
- Зависимости
- PlaceholderAPI, Vault, DiscordSRV
- Команды и права
- Выше