- 欢迎来到Minecraft插件百科!
- 对百科编辑一脸懵逼?帮助:快速入门带您快速熟悉百科编辑!
- 因近日遭受攻击,百科现已限制编辑,有意编辑请加入插件百科企鹅群:223812289
ChatControl Pro/WIKI/规则
规则系统是ChatControl最有用的系统: 你可以设置基于正则表达式的过滤器来捕获消息.
规则基于运算符 (想 'match', 'then deny'这样的东西, 这些运算符决定编程内容 - 你可以在 rules.txt 的顶部看到所有的运算符). 它们由两部分组成:规则和处理器. 规则可以使用正则表达式来捕获一条消息, 处理器则为一组行为.
任何添加新规则 / 过滤器?
打开你的 rules/ 文件夹,打开你想要编辑的规则文件 (rules.txt 应用于游戏的所有元素, 而 commands.txt 只对指令有效, chat.txt 只对聊天有效等.)然后用合适的文本编辑器进行编辑即可. 每条规则开头都要有 "match" ,结尾都有 "then" 运算符. 你可以查看已存在的规则,复制粘帖它们并进行修改.
制作有效的规则
以下示例为 "fuck" 的过滤器,它可以防止 f.u.c.k
甚至是 fuuu-ck
. 使其匹配并捕获这类词语很简单.
match \b(j+(\W|\d|_)*e+(\W|\d|_)*r+(\W|\d|_)*k+(\W|\d|_)*) handle as swear
'match' 运算符保护了正则表达式来检测玩家的消息.如果匹配成功则应用规则. 下一个运算符, 'handle as',告诉程序执行“swear”部分中handlers.yml
内所述的所有指令. 你可以手动给规则添加运算符,但是如果你想以同样的方式处理多调脏话的话,将指令存储在一个地方会更方便.
以上示例匹配了单词 'jerk' ,即使该单词被混淆成jeeerk
或 j.e-r_k
也都能检测到, 并且这条消息会被视为 'swear'处理 (你可以在handlers.yml 内配置这个).
禁止如 sh*t
和 shi*t
这样的单词
默认过滤器可以过滤如 shi*t, shi_t 和其他混淆形式的脏话, 但是过滤器无法捕获到中间的字母被替代的脏话.
你可以在 https://regex101.com/ 检测你的正则表达式是否能够成功地屏蔽脏话
白名单/允许的链接或IP
想要忽略你的服务器的IP地址被捕获, 请打开 rules/rules.txt并在 71 和 85行使用 'ignore string' 运算符,示例如下图.
a) 想要给一个IP白名单, 找到IP过滤器并添加到如上图所示位置即可.
b) 想要给一条指令白名单, 找到区域过滤器并用 | 添加指令. 如果地址是 "craftblock.com",你可以这样添加:"|craftblock.com"
白名单语法
如 "tits" 的规则可能会捕获到如"but its"或相似的无辜的消息. 有两种方法来修复这个问题:
a) 添加 \b 字符到匹配规则内. 这可以使规则只匹配没有空格的消息或是消息前无空格的消息 (需要把 \b 放在前面) 或是后面(把 \b 放到match的最后):
match \btits
这会匹配 "tits" 而不是 "but its".
b) 使用 "ignore string" 运算符.这是最佳的解决方案:
match anal
ignore string analog|an all
这可以阻止两个短语 'analog' 和 'an all' .
空格文字白名单
如果你想要阻止带有空格的消息 ("f u c k", or "come to m y s e r v e r . c o m"), 请使用 'before strip' 运算符. 在你想要使用的规则下面插件该运算符,然后所有的空格都会被删除:
match <your rule>
before strip \s*
[...]
防止像Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ 这样的 unicode字符
你可以找到禁止所有特殊字符的规则. 以下规则可能会被误用来绕过过滤器.请注意非英语环境的服务器须谨慎使用.
你可以复制该规则到 rules/rules.txt 内来使用.
match [^\u0000-\u007F]+
then warn 禁止使用非法字符
then deny