如何修复AFK通道的“空”输出

时间:2019-07-04 00:49:45

标签: javascript discord.js commando

我遇到一个问题,当我启动我的机器人并运行此命令时,它的输出为“ undefined”或“ null”。我该如何解决?

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

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

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

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)

预期结果:将显示“无AFK VC” 实际结果:显示未定义或为空。

2 个答案:

答案 0 :(得分:0)

首先,您要检查是否存在频道。 然后,您要将变量afk设置为No AFK Channel。 最后,如果有afk频道,则会说是AFK频道。

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

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

现在您需要做的就是找出摆脱#号的方法。享受吧!

答案 1 :(得分: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.afkChannel将为undefined。任何东西都不应返回 string 'null'。话虽如此,当您将serv.afkChannel`null`进行比较时,布尔值将永远不会为真。由于您的链中没有else,因此afk不会被定义。


在声明afk变量时,可以使用logical OR operator||)来替换if / else语句并防止出现问题:< / p>

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

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