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

Discord(JavaScript)机器人违禁词检测:删除含违禁词整句问题

解决Discord机器人检测违禁词并删除整条消息的问题

嘿,我明白你的需求啦!你现在的代码只能匹配和违禁词完全一模一样的消息,自然没法处理包含违禁词的完整句子——问题就出在===这个严格相等运算符上,它只会在内容完全匹配时才触发逻辑。

下面给你两种实用的解决方案,你可以根据需求选择:

方案1:用includes()检测包含关系(简单直接)

适合你有固定违禁词列表的情况,只需要判断消息内容里是否包含任意一个违禁词就行:

// 先定义你的违禁词列表
const forbiddenWords = ['BAD WORD EXAMPLE', '另一个违禁词', '再一个'];

client.on('message', message => {
  // 检查消息是否包含任何一个违禁词
  const hasForbiddenWord = forbiddenWords.some(word => message.content.includes(word));
  
  if (hasForbiddenWord) {
    message.delete({ timeout: 1, reason: 'Mensaje eliminado, contenido inapropiado.' });
    message.channel.send('Mensaje eliminado por contenido inapropiado');
  }
});

方案2:用正则表达式(更灵活,支持大小写不敏感等)

如果需要忽略大小写(比如用户发“bad word example”也能检测到),或者避免误匹配(比如不想把“badly”当成包含“bad”的违禁词),正则会更靠谱:

// 创建正则表达式,i表示忽略大小写,\b表示单词边界(避免部分匹配)
const forbiddenRegex = /\b(BAD WORD EXAMPLE|另一个违禁词)\b/i;

client.on('message', message => {
  if (forbiddenRegex.test(message.content)) {
    message.delete({ timeout: 1, reason: 'Mensaje eliminado, contenido inapropiado.' });
    message.channel.send('Mensaje eliminado por contenido inapropiado');
  }
});

小提醒

如果你的Discord.js是v14及以上版本,message事件已经被替换成了messageCreate,记得把代码里的client.on('message', ...)改成client.on('messageCreate', ...)哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:27:33