SylonSylon
所有功能消息规则

消息规则

针对消息形态而非含义的限制——表情、行数、大写、提及、zalgo。免费,且在任何语言里都一样。

概述

这里其他读取消息的部分,问的都是“它说了什么”。词语过滤匹配你列出的词条;分析器判断意图,代价是一次模型调用。消息规则完全不问含义:有几个表情、几行、多少是大写、提及了多少人。正因如此,它运行不花钱、不需要 AI,并且在任何语言里表现完全一致——数数不是一种语言行为。

它是如何运作的

1

九项上限,各自独立关闭

表情、行数、字符、大写、提及成员、提及身份组、附件、贴纸,以及一个 zalgo 开关。上限为 0 表示“不检查这一项”,所以在你决定服务器认为多少算过分之前,整项功能都不动。
2

先删除,反复出现才处罚

消息一定会被删除,并告知成员违反了哪条规则。处罚是另一回事,按违规次数累计,默认什么都不做——把格式弄错的是兴奋的人,不是搞破坏的人。
3

它也读编辑

先发一句正常的话,再编辑成一堵表情墙没有用:同样的规则会在编辑后的消息上再跑一遍。两条路径共用同一份实现,因此不可能对同一条消息给出不同判断。

关键能力

表情上限,把 Unicode 表情与自定义表情合并计数
针对那种把频道挤出屏幕的文字墙的行数与长度上限
大写比例,只在有大小写之分的字母上统计
提及成员与提及身份组分别设限,按不同对象各计一次
附件与贴纸上限
按组合字符比例识别 zalgo,正常的带音标书写永远不受影响
豁免身份组、成员与频道,以及独立的日志频道
超过阈值后可选升级为禁言、踢出或封禁

安装设置

1.打开面板,进入消息规则标签页,启用它,然后选择一个日志频道。
2.只设置服务器真正需要的上限。留在 0 的都保持关闭。
3.先把处罚保持在“仅删除”几天并读日志——它会准确地告诉你哪些消息会被删掉。
4.为那些确实需要发长消息或大量表情的管理组和机器人添加豁免身份组。

详细工作方式

数数在任何语言里都一样,判断则不然

这就是这项功能与词语过滤、分析器并列而不是嵌在它们里面的全部原因。词表要按语言分别撰写并永远维护;模型要花钱,而且可能出错。但十个表情在土耳其语、泰语和日语里同样是十个表情,而答案的代价只是把消息遍历一遍——正因如此,这些规则才能在没有预算的情况下跑在每个服务器的每条消息上。

规则可能变得不公平的地方,都被收窄了

其中两条本可能仅仅因为一种语言的存在就悄悄惩罚它,所以两条都加了约束。大写规则忽略没有大小写之分的字母,而那正是世界上大多数文字。zalgo 依据组合字符与基字符的比例来判断,而不是看它们是否存在,因为越南语、土耳其语、希腊语以及所有带音标的字母系统都会正常使用它们:每个字母一个记号是书写,十个则是对排版的攻击。

一次删除,一条提示,一行日志

一条消息可能同时违反多条规则。Sylon 会把它们全部列出,只删除一次,只计一次违规,在频道里发一条几秒后自动消失的提示,并在日志频道写下一条记录,逐条列明命中的规则及其数值与上限。

设置

表情上限Unicode 表情与自定义表情合并计算。填 0 关闭该规则。
行数上限单条消息中的换行数——那种把频道挤出屏幕的文字墙。填 0 关闭该规则。
字符数上限按人眼看到的字符计数,所以一个表情算一个。填 0 关闭该规则。
大写上限(%)大写字母所占比例。只统计有大小写之分的字母,因此阿拉伯语、泰语、中文和韩语永远不会触发该规则。填 0 关闭。
忽略短于此长度的消息短于此长度的消息完全不做大写判定。没有它,“OK!”就是 100% 大写,服务器里每一句应答都会被删。
提及成员上限单条消息中被提及的不同成员数;同一个人提及两次只算一次。填 0 关闭该规则。
提及身份组上限被提及的不同身份组数量。@everyone 和 @here 不计入此处——那是权限问题,其滥用由服务器卫士处理。
附件上限单条消息上的文件与图片数量。填 0 关闭该规则。
贴纸上限单条消息上的贴纸数量。填 0 关闭该规则。
拦截 zalgo 文本把组合字符层层堆叠、溢出到周围行的文本。用开关而非数字,是因为这个阈值是 Unicode 本身的事实,正常的带音标书写永远达不到。
惩罚达到限制时对用户采取的操作。超时暂时限制,Kick 从服务器中删除,Ban 永久禁止。
日志通道机器人将为此功能发送日志消息的通道。
豁免身份组拥有其中任一身份组的成员将不受此保护。
豁免成员除豁免身份组外,此系统完全忽略的特定成员。
豁免渠道此保护不会检查这些通道中的消息。

须知事项

Sylon 需要“管理消息”权限来删除,再加上你所选处罚各自要求的权限。
拥有管理员或管理服务器权限的成员永远不会被判定,豁免名单里的人同样如此。
工单被排除在外:其内容本就保存在工单自己的记录里。
每条规则按消息计数,而不是按分钟——速率限制是垃圾信息防护的职责。

常见问题

为什么每项上限默认是 0?

因为服务器没有填写的数字字段必须是不生效的。如果 0 表示“什么都不允许”,那么在配置之前打开这项功能就会删掉服务器里的每一条消息。0 表示这条规则不被检查——这是唯一能让“先打开、后配置”变得安全的解读。

大写规则会不会惩罚那些没有大写的语言?

不会,也做不到。比例只在有大小写之分的字母上统计,所以阿拉伯语、泰语、中文、韩语和希伯来语都得 0 分,永远不可能触发。此外还有最小长度,因为“OK!”是 100% 大写,但那并不是在吼。

这能抓住滥用 @everyone 的行为吗?

不能,而且是有意如此。@everyone 和 @here 是权限而不是数量:有权使用的人就可以用。它们的滥用由服务器卫士处理,那才是它该待的地方。

相关功能