我正在检查我的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;