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
相关产品推荐
相关产品推荐

