机器人无法正确检查开关大小写 |不和谐.js v12



我正在检查我的discord bot,试图对我的代码进行一点重构,我有一个开关案例,它与if/else完美配合,但它不在开关中运行。有什么想法吗?我尝试了很多东西,但都无法发挥作用。。。我也很确定这是我犯的一个愚蠢的错误。。所讨论的情况是";自我;没有运行的案例。所以在正常情况下是

if (getTag == self) {
// code
}

这是代码。提前感谢!

var getTag = message.mentions.users.first(); 
var self = message.author.id;
switch (getTag) {
case undefined: 
// sample
break;
case self:
// sample
break;
case client.user: 
// sample 
break;
default: 
// sample
break;
}

message.mentions.users.first()返回一个User对象。这意味着,不能简单地将它与其他对象或字符串进行比较。

您的第一种情况,undefined将起作用,因为如果没有提及,message.mentions.users.first()将返回undefined。

第二种方法不起作用,因为您试图将对象与字符串(用户ID(进行比较。

第三种方法也不起作用,因为您正在尝试将User对象与另一个User对象进行比较。

尽量只比较其id属性,甚至更好,去掉switch语句,改用if语句:

const getTag = message.mentions.users.first();
const self = message.author;
if (!getTag) {
// same as case: undefined
return;
}
if (getTag.id === self.id) {
// same as case: self
return;
}
if (getTag.id === client.user.id) {
// same as case: client.user
return;
}
// same as default case

您将用户对象与用户ID进行比较,因此需要将getTag更改为以下代码:

var getTag = message.mentions.users.first() ? message.mentions.users.first().id : undefined; 

最新更新