单词过滤器停止工作-Discord.JS 12

时间:2020-08-25 19:45:24

标签: javascript node.js discord discord.js

你好!

所以我当前正在将我的机器人更新到DiscordJS的12.3.1版本。不幸的是,我陷入了一个我无法真正找到解决方法的问题。因此,我的机器人程序有一个模块,可以过滤掉所有亵渎词,例如亵渎,种族歧视等等。

目前在11.4上可以正常使用,但无法在12.3.1上使用。 由于某种原因,该漫游器完全不响应给定的消息。

我有两个“过滤器”,一个过滤单词,一个过滤邀请。他们两个都停止工作。

bot.on('message', async message => {

// Events Listeners

if (message.author.bot) return;
if (message.channel.type === 'dm') return;

let messageArray = message.content.split(' ');
let command = messageArray[0];
let args = messageArray.slice(1);

if (!command.startsWith(prefix)) return;

let cmd = bot.commands.get(command.slice(prefix.length)) || bot.aliases.get(command.slice(prefix.length));
if (cmd) cmd.run(bot, message, args);

// First filter
var array = ['testing', 'yes', 'no'];

    if (array.includes(message.content.toLocaleLowerCase())) {

        message.channel.send('test')
    
    }



// Second filter
    if (message.content.includes('discord.gg/') { 

      message.delete()

    }

}

这是我在2个月前从另一个StackOverflow帖子中发现的最新帖子。 Discord.js V12 Rude words filter not working

如果可以的话,我真的很想得到一些帮助,因为我找不到任何原因使该功能停止工作。

谢谢!:)

1 个答案:

答案 0 :(得分:3)

您的过滤器位于命令处理逻辑之后。

您所在的行:

if (!command.startsWith(prefix)) return;

在您的代码的早期,这会导致消息处理在不是命令的任何消息上立即终止。因此,除非消息以机器人的前缀开头,否则代码将永远不会到达过滤器,此时消息内容可能无法与任何单词相等,并且极不可能包含discord.gg/

只需将过滤器移动到消息处理程序的开头。或者,也可以将命令处理和过滤器处理分成单独的函数,以便上面的return语句仅退出命令处理,并且过滤器处理仍将运行。