聊天消息不会使用过滤器发送

Chat Messages Will Not Send With Filter

我和我的朋友正在为我们学校的学生制作一个聊天室,供他们在空闲时间使用。我正在尝试添加一个过滤器,以使其保持 SFW。我是 JavaScript 的新手,所以当我添加过滤器时,您无法再在聊天中发送消息。但是,当我将过滤器脚本作为评论并禁用它时,消息发送得很好。

过滤代码:

    var array = array.js
message.replace(array, "****");

消息代码:

        if (message && connected) {
  $inputMessage.val("");
  addChatMessage({
    username: username,
    message: message
  });

  socket.emit("new message", message);
}}

我的朋友负责消息代码,因为他在 JavaScript 方面更有经验,但他很忙,现在无法添加,所以我正在尝试。

假设您有一个要过滤的数组 array,您可以将 message 拆分为白色 space,然后检查每个单词是否包含错误单词。

两种方法(仅供参考,两者都不是完美的。这两种解决方案都有很多优势cases/loopholes:我推荐一个考虑得更多的js包npm: bad-words, npm: censor-sensor, or npm: swearjar

两者都拆分消息 message.split(' '),然后遍历每个单词以查看是否需要替换 .map。第一个检查当前单词是否在 array 中,第二个检查 array 个单词是否包含当前单词,如果包含则替换为 ****

const array = ['badword', 'nsfw']

let message = 'my message is full of badwords which may be nsfw'

message = message.split(' ').map(word => array.includes(word.toLowerCase()) ? '*****' : word).join(' ')

console.log(message)

message = 'my message is full of badwords which may be nsfw'

message = message.split(' ').map(word => array.some(nsfword=>word.toLowerCase().includes(nsfword)) ? '*****' : word).join(' ')

console.log(message)