- Поддерживаемые версии
- 1.16
- 1.17
- 1.18
- 1.19
- 1.20
- 1.21
pnChatFilter — Документация
Описание
pnChatFilter — комплексный фильтр чата для Paper-серверов. Блокирует рекламу (IP-адреса, ссылки), капслок, нестандартные UTF-символы и запрещённые слова. Умеет фильтровать не только обычный чат, но и личные сообщения, команды и таблички. Модераторы получают уведомления о каждом нарушении в реальном времени.Команды
| Команда | Описание | Право |
|---|---|---|
/chatfilter | Показать версию и текущий режим | pnchatfilter.admin |
/chatfilter reload | Перезагрузить конфигурацию | pnchatfilter.admin |
/cf, /pcfПрава
| Право | Описание | По умолчанию |
|---|---|---|
pnchatfilter.admin | Доступ к командам плагина | op |
pnchatfilter.moder | Получать уведомления о нарушениях | false |
pnchatfilter.bypass.all | Обход всех фильтров | false |
pnchatfilter.bypass.ads | Обход фильтра IP/рекламы | false |
pnchatfilter.bypass.caps | Обход фильтра капса | false |
pnchatfilter.bypass.utf | Обход фильтра UTF-символов | false |
pnchatfilter.bypass.words | Обход фильтра слов | false |
Конфигурация
settings — Основной режим работы
Код:
settings:
mode: "replacement" # replacement — заменить, delete — удалить сообщение
replacement: "*" # символ замены для lowTarget слов
| Параметр | Тип | Описание |
|---|---|---|
mode | replacement / delete | Что делать с lowTarget словами: заменить символом или удалить всё сообщение |
replacement | строка | Символ, которым заменяется каждый символ запрещённого слова |
blockIpAddress — Антипиар (IP-адреса)
Код:
blockIpAddress:
enable: true
allowedIps:
- "127.0.0.1"
- "127 0 0 1"
- "127,0,0,1"
1.2.3.4, 1,2,3,4, 1 2 3 4.| Параметр | Тип | Описание |
|---|---|---|
enable | boolean | Включить/выключить блокировку IP |
allowedIps | список | IP-адреса, которые разрешено упоминать (белый список) |
checkedCommands — Фильтрация команд
Код:
checkedCommands:
- "/msg $arg"
- "/tell $arg"
- "/broadcast"
$arg указывает, что фильтруется всё после первого аргумента (имени игрока). Если $arg не указан — фильтруется вся строка после команды.Пример:
/msg Steve купи на mc.example.com — проверится текст купи на mc.example.com.antiCaps — Антикапс
Код:
antiCaps:
enable: true
minLength: 4
maxCapsPercent: 30
| Параметр | Тип | Описание |
|---|---|---|
enable | boolean | Включить/выключить антикапс |
minLength | число | Минимальная длина сообщения для проверки |
maxCapsPercent | число (0–100) | Максимальный процент заглавных букв |
blockUtf — Блокировка нестандартных символов
Код:
blockUtf:
enable: true
allowedChars: "abcdefghijklmnopqrstuvwxyz..."
allowedLanguages:
- "russian"
- "english"
- "european"
- "numbers"
- "punctuation"
| Параметр | Тип | Описание |
|---|---|---|
enable | boolean | Включить/выключить UTF-фильтр |
allowedChars | строка | Явно разрешённые символы |
allowedLanguages | список | Разрешённые языковые группы |
| Группа | Unicode-диапазон | Описание |
|---|---|---|
russian | U+0400–U+04FF | Кириллица |
english | a–z, A–Z | Латиница |
european | U+00C0–U+024F | Расширенная латиница |
numbers | 0–9 | Цифры |
punctuation | спецсимволы | .,!?@#$%^&*()-_=+ и др. |
replacers — Таблица замен символов
Код:
replacers:
1:
in: "с" # русская буква
out: "c" # английский аналог
хуй через кириллицу, где у — русская, а остальные — английские.Также автоматически нормализуются:
0→o, 3→e, 4→a, @→a, $→s, 1→i.bannedWords — Запрещённые слова
Код:
bannedWords:
lowTarget:
- "блин"
highTarget:
- ".com"
- "хуй"
| Список | Поведение при нарушении |
|---|---|
lowTarget | Слово заменяется *** или сообщение удаляется (зависит от settings.mode) |
highTarget | Сообщение всегда полностью блокируется, независимо от settings.mode |
allowedWords — Белый список слов
Код:
allowedWords:
highTarget:
- "play.yourserver.ru"
- "https://vk.com/yourpage"
highTarget. Используется для разрешения ссылок на собственный сервер.moder-notify — Уведомления для модераторов
Код:
moder-notify:
enabled: true
format:
- "§8§m "
- "§c§l⚠ §fНарушение §8| §7{source}"
- "§7Игрок: §e{player}"
- "§7Тип: §c{type}"
- "§7Сообщение: §f{message}"
- "§8§m "
pnchatfilter.moder увидят это уведомление при каждом нарушении.Плейсхолдеры:
| Плейсхолдер | Значение |
|---|---|
{player} | Ник нарушителя |
{type} | Тип нарушения |
{message} | Исходное сообщение (до 50 символов) |
{source} | Источник: чат, команда, табличка |
{world} | Мир, в котором находится нарушитель |
actions — Действия при нарушениях
Код:
actions:
highTargetDetected:
- "[Message] &cЗапрещённые слова!"
- "[Sound] ENTITY_VILLAGER_NO"
lowTargetDeleted:
- "[Message] &cСообщение удалено."
lowTargetReplacement:
- "[Message] &eЧасть сообщения заменена."
utfSymbolsDetected:
- "[Message] &cЗапрещённые символы!"
capsDetected:
- "[Message] &eНе пиши капсом!"
ipAddressDetected:
- "[Message] &cIP-адрес запрещён!"
signDetected:
- "[Sound] ENTITY_VILLAGER_NO"
| Ключ | Когда срабатывает |
|---|---|
highTargetDetected | Найдено highTarget слово |
lowTargetDeleted | Найдено lowTarget слово, режим delete |
lowTargetReplacement | Найдено lowTarget слово, режим replacement |
utfSymbolsDetected | Найден запрещённый UTF-символ |
capsDetected | Превышен лимит капса |
ipAddressDetected | Найден IP-адрес |
signDetected | Нарушение на табличке |
| Тип | Пример | Описание |
|---|---|---|
[Message] | [Message] &cТекст | Отправить сообщение нарушителю (поддерживает & цвета) |
[Sound] | [Sound] ENTITY_VILLAGER_NO | Проиграть звук нарушителю |
[Command] | [Command] ban {player} реклама | Выполнить команду от консоли |
[PlayerCommand] | [PlayerCommand] spawn | Выполнить команду от имени игрока |
[Title] | [Title] &cНарушение;&fНе рекламируй; | Показать title (title;subtitle) |
Порядок применения фильтров
При каждом сообщении фильтры применяются строго в следующем порядке. При первом срабатывании проверка останавливается.
Код:
1. blockIpAddress → IP-адрес в сообщении?
2. blockUtf → Есть недопустимые символы?
3. antiCaps → Превышен лимит капса?
4. bannedWords → Есть запрещённые слова?
FAQ
Q: Игрок пишетх у й с пробелами — фильтр не срабатывает.A: Добавьте
"х у й" в bannedWords.highTarget. Нормализатор убирает пробелы при проверке, но только между стандартными вариантами. Разбитые пробелами слова лучше добавлять явно.Q: Хочу разрешить свою ссылку, но она содержит
.ru.A: Добавьте полный адрес в
allowedWords.highTarget. Белый список проверяется до блокировки.Q: Как добавить свои команды на проверку?
A: В
checkedCommands добавьте строку вида /команда $arg. Если команда не принимает имя игрока первым аргументом — просто /команда без $arg.Q: Модераторы не получают уведомления.
A: Убедитесь, что у них есть право
pnchatfilter.moder и moder-notify.enabled: true в конфиге.Q: Как полностью отключить один из фильтров?
A: Установите
enable: false в соответствующей секции (antiCaps, blockUtf, blockIpAddress) или оставьте списки bannedWords пустыми.