You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.js v13实现不良词过滤无法识别非独立违规词的解决方法

不良词过滤逻辑问题排查

现有代码存在3个直接导致功能异常的错误:

  • 条件判断写为赋值语句:message.guild.id = 'GUILD_ID' 是赋值操作而非相等校验,会直接覆写当前服务器ID值,判断逻辑完全不生效
  • 匹配范围仅覆盖消息第一个词:拆分消息后仅取args[0](即消息第一个空格前的片段)做校验,只有违规词出现在消息最开头时才会触发匹配,带前后缀的消息自然无法命中
  • 无效方法调用:args[0]是字符串类型,不存在.join(' ')数组方法,代码运行到该行会直接抛出类型错误
修正后可运行代码

实现全消息任意位置违规词识别,同时补充大小写绕过防护、权限错误捕获,代码如下:

// 消息内容统一转小写,规避大小写混写绕过(如WorD1、WORD1)
const lowerCaseContent = message.content.toLowerCase();
// 严格相等判断校验当前服务器ID,注意是===不是=
if (message.guild.id === '替换为你的实际服务器ID') {
  const badWordList = ['word1', 'word2'];
  // 只要消息任意位置包含任意一个违规词,就命中过滤规则
  const hitFilter = badWordList.some(word => lowerCaseContent.includes(word.toLowerCase()));
  if (hitFilter) {
    // 加catch捕获权限不足等异常,避免机器人进程崩溃
    message.delete().catch(err => console.error('删除违规消息失败:', err));
  }
}
可选优化方向
  • 若需要避免子串误判(比如匹配word1时误删正常词word1test),可使用正则\b边界符做全词匹配
  • 可补充形近字、特殊符号插入的匹配规则,降低用户绕过过滤的概率
  • 命中过滤后可发送临时违规提示,明确告知用户消息被删除的原因

内容的提问来源于stack exchange,提问作者Pooyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 01:27:33