如何在JavaScript编写的Discord机器人中提取消息内匹配的违禁词列表
违禁词匹配功能实现方案
你需要的功能可以直接用JavaScript数组的filter方法实现,和你之前用的Python列表推导逻辑完全一致:遍历违禁词列表,筛选出所有在消息内容中存在的词汇即可。
修改后的完整代码如下:
bot.on('messageCreate', message => { const bannedwords = ['word1', 'word2']; // 筛选所有命中的违禁词,返回结果就是你需要的匹配数组 const matchedWords = bannedwords.filter(term => message.content.includes(term)); if (matchedWords.length > 0) { message.delete(); // 可选择把命中的违禁词拼接进警告内容里 message.author.send(`Woah there buddy! You can't say that. You used the banned words: ${matchedWords.join(', ')}`) } });
补充说明
- 把你原来用的
some()方法替换为filter(),就能直接返回所有符合匹配条件的违禁词数组,你举的示例场景下返回结果就是['person1', 'person3'] - 如果需要避免子串误判(比如违禁词是
aa,不会误匹配到消息里的aab),可以把匹配逻辑改成带单词边界的正则匹配:const matchedWords = bannedwords.filter(term => new RegExp(`\\b${term}\\b`).test(message.content));
内容的提问来源于stack exchange,提问作者user15114419
相关产品推荐
相关产品推荐

