我已经执行了一个命令测试,该命令可以使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');
}
}
过滤掉用户名的正确方法是什么?
答案 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)