Node.js 如何检查消息内容而不包括用户';目录中的姓名

Node.js 如何检查消息内容而不包括用户';目录中的姓名,node.js,discord,discord.js,Node.js,Discord,Discord.js,我得到了一个命令im测试,使机器人发送给我一个消息时,一个特定的字符串被传递到一个通道 我的命令运行良好,但bot似乎也将用户名包含在内容中 我是通过将我的名字作为机器人运行if语句的字符串进行测试发现这一点的,并且发现即使只键入Hi或任何其他消息也会触发if语句,因为我的名字“Jerseyetr”包含在消息的内容中 if (message.content.includes('jersey') || ('jerseyetr')) { try{

我得到了一个命令im测试,使机器人发送给我一个消息时,一个特定的字符串被传递到一个通道

我的命令运行良好,但bot似乎也将用户名包含在内容中

我是通过将我的名字作为机器人运行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');
                }
}

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

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

为什么?因为您的情况。OR条件
|
将首先测试
消息.content.includes('jersey')
。如果它是
true
它将进入If,如果它是false它将测试第二个条件。但是你的第二个条件总是true,因为字符串
'jerseyetr'
不是空的,JavaScriptps认为它是true。
列出所有被认为是错误的内容。所有其他值都被认为是
true

我猜你想这么做:

if(message.content.includes('jersey')| | message.content.includes('jerseyetr')){
...
}
但是,不需要第二个表达式,因为
jersey
包含在
jerseyetr
中,因此如果消息包含
jerseyetr
,它也将包含
jersey

您将看到,Discord在
message.content
中不包括用户名,而只包括消息的文本

旁注:如果您想在消息中测试类似的内容,可以使用regexp:

/jersey/.test(message.content)

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

为什么?因为您的情况。OR条件
|
将首先测试
消息.content.includes('jersey')
。如果它是
true
它将进入If,如果它是false它将测试第二个条件。但是你的第二个条件总是true,因为字符串
'jerseyetr'
不是空的,JavaScriptps认为它是true。
列出所有被认为是错误的内容。所有其他值都被认为是
true

我猜你想这么做:

if(message.content.includes('jersey')| | message.content.includes('jerseyetr')){
...
}
但是,不需要第二个表达式,因为
jersey
包含在
jerseyetr
中,因此如果消息包含
jerseyetr
,它也将包含
jersey

您将看到,Discord在
message.content
中不包括用户名,而只包括消息的文本

旁注:如果您想在消息中测试类似的内容,可以使用regexp:

/jersey/.test(message.content)

调用GET route时的响应是什么?您是否也可以更新它?调用GET route时的响应是什么?您是否也可以更新它?实际上不需要第二个表达式;
jerseyetr
本身包含
jersey
,因此第一个表达式的计算结果无论如何都是
true
。@slothiful如果消息中包含jersey,是的,你是对的。我会添加一条关于这一点的注释,很好。谢谢你,我完全是因为精力不足而疏忽了。谢谢你指出了修复方法。实际上不需要第二个表达式;
jersey
本身包含
jersey
,因此第一个表达式的计算结果将为
>不管怎样,这都是真的。@slothiful如果邮件中包含jersey,那么你是对的。我会就此添加一条注释,很好。谢谢你,我完全是因为精力不足而疏忽了。谢谢你指出了解决方法。