如何在不包含用户名的情况下检查消息内容

时间:2019-07-22 03:19:11

标签: node.js discord discord.js

我已经执行了一个命令测试,该命令可以使Bot在将特定字符串传递到Channel中时向我发送消息。

我的命令运行正常,但该漫游器似乎也将用户名也包含在内容中。

我通过用我的名字作为机器人正在运行if语句的字符串进行测试发现了这一点,发现即使只键入Hi或任何其他消息也会触发if语句,因为我的名字为“ Jerseyetr”邮件的内容。

if (message.content.includes('jersey') || ('jerseyetr')) {
            try{
                console.log('it worked!');
                //jersey.send('testing!');
                //client.users.get("xxxxxx").send("test");
                return;
                //guild.member
            }
                catch (err){
                    console.log(err);
                    console.log('it did NOT work. Sad face');
                }
}

过滤掉用户名的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

这里的问题是,您总是输入if,而不要输入else(如果有的话)。

为什么?由于您的状况。 OR条件||将首先测试message.content.includes('jersey')。如果为true,则将输入if;如果为false,则将测试第二个条件。但是您的第二个条件始终为true,因为字符串'jerseyetr'不为空,并且Javascritps认为它为true。
This page列出所有被认为是“虚假”的东西。其他所有值都被视为true

我想你想这样做:

if (message.content.includes('jersey') || message.content.includes('jerseyetr')) {
  ...
}

但是,由于jersey包含在jerseyetr中,因此不需要第二个表达式,因此,如果消息包含jerseyetr,则它还将包含jersey

您会发现Discord在message.content中不包含用户名,而仅在消息文本中包含

旁注:如果您想在邮件中测试类似的内容,则可以使用正则表达式:

/jersey/.test(message.content)