0

我遇到了一个问题,当我启动我的机器人并运行此命令时,它显示“未定义”或“空”作为输出。我该如何解决?

我尝试使用与所有其他选项相同的方法。

if (serv.verified == false) {
    var veri = "No.";
} 

它检查布尔值、字符串或数字的位置。它似乎不起作用。它将我的变量设置为空或未定义。

if (serv.afkChannel == `null`) {
    var afk = "No AFK VC.";
}

if (serv.verified == true) {
    var veri = "Yes.";
} 

if (serv.verified == false) {
    var veri = "No.";
} 

        var myInfo2 = new discord.RichEmbed()
        .setAuthor(`${serv.name}'s guild info`)
        .addField(`AFK Channel`,`${afk}`,true)
        .addField(`AFK Timeout`,`${serv.afkTimeout}s`,true)
        .addField(`Channels`,`${serv.channels.size}`,true)
        .addField(`Creation of Guild`,`${serv.createdAt}`,true)
        .addField(`Default Notification`, defn,true)

预期结果:它会说 No AFK VC 实际结果:它说 undefined 或 null。

4

2 回答 2

0

首先,您要检查是否有频道。然后,您要将变量设置afk为无 AFK 通道。最后,如果有一个 afk 频道,它会说 AFK 频道。

if (!serv.afkChannel)
    var afk = `No AFK Channel`
    else var afk = `${serv.afkChannel}`

这 ”!” 基本上使以下代码相反。下一个代码会发出the variable afk is already defined错误,但它基本上是一个“或”。如果没有 AFK 通道,则,或 如果有 AFK 通道,则。

您现在需要做的就是找出如何摆脱 # 如果您想的话。享受!

于 2019-07-04T00:53:07.547 回答
0

'null'除了......好吧,没有什么会匹配文字字符串'null'。这里只是一个简单的例子:

console.log(null == 'null');       // The identity operator (==) even does type
console.log(undefined == 'null');  // conversions and these aren't the same.

console.log(null == null);         // These are both true, because null is not a string.
console.log(undefined == null);    // <-- Watch out: this is only true using the twins.

console.log('null' == 'null');     // The only match is the string compared to itself.

Guild.afkChannelundefined如果通道未定义,将是。什么都不应该返回一个字符串 'null'。话虽如此,当您与 比较serv.afkChannel`null`,布尔值永远不会为真。由于您没有else链中的一个,afk因此不会被定义。


声明afk变量时,您可以使用逻辑 OR 运算符( ||) 替换if/else语句并防止出现问题:

var afk = serv.afkChannel || 'No AFK Channel';

如果serv.afkChannelfalsy,则变量将被声明为'No AFK Channel'

于 2019-07-04T02:51:59.957 回答