你好,我想知道为什么这段代码不起作用

问题描述

我想知道为什么这段代码不起作用,它根本不通知任何输入if并直接进入else

let user = message.mentions.users.first() || message.author;

if(user.presence.activities !== null && user.presence.activities.type === 2 && user.presence.activities.name === 'Spotify' && user.presence.activities.assets !== null) {

    let trackIMG = `https://i.scdn.co/image/${user.presence.game.assets.largeImage.slice(8)}`;
    let trackURL = `https://open.spotify.com/track/${user.presence.game.syncID}`;
    let trackName = user.presence.activities.details;
    let trackAuthor = user.presence.activities.state;
    let trackAlbum = user.presence.activities.assets.largeText;

    const embed = new MessageEmbed()
        .setAuthor('Spotify Track Info','https://cdn.discordapp.com/emojis/653135129870336031.png?v=1')
        .setColor("GREEN")
        .setThumbnail(trackIMG)
        .addField('Song Name',trackName,true)
        .addField('Album',trackAlbum,true)
        .addField('Author',trackAuthor,false)
        .addField('Listen to Track',`${trackURL}`,false)
        .setFooter(message.member.displayName,message.author.displayAvatarURL())
        .setTimestamp()

    message.channel.send(embed);
} else {
    message.channel.send('**Este usuário não está ouvindo o Spotify!**');
  }
}

解决方法

常见陷阱

您应该记住的一件事是,您所引用的变量有可能总是不为null。它可能是未定义的,'':空字符串,[]:空数组等。

null:通常由用户设置此类型。

未定义:经验法则是,只要您手动设置,就永远不要将其设置为undefined但为null。类型“未定义”通常由应用程序/系统设置。因此,如果您手动设置未定义,则可能不知道它是由系统设置还是由用户设置。

// not recommended..
test = undefined;

// recommended..
test = null;

现在,要问您的问题,请确保它是您指的类型。

user.presence.activities.assets和user.presence.activities的类型均为null且未定义,例如”,[]等。

验证为布尔值

!!user.presence.activities.assets

这将验证

user.presence.activities.assets !== null
user.presence.activities.assets !== undefined
user.presence.activities.assets !== ''

如果是数组,请使用JSON.stringify进行验证。

JSON.stringify(user.presence.activities.assets) !== '[]'

如果它是一个空对象,请使用相同的对象进行验证。

JSON.stringify(user.presence.activities.assets) !== '{}'

也就是说,首先控制台值并编写相关事件条件。例如:

const { presence: { activities } } = user;

if(!!activities && activities.type === 2 && 
activities.name === 'Spotify' && !!activities.assets) {
 // code..
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...