如何修复 AFK 通道的“空”输出
Posted
技术标签:
【中文标题】如何修复 AFK 通道的“空”输出【英文标题】:How to fix "Null" output for AFK Channel 【发布时间】:2019-11-14 16:40:03 【问题描述】:我遇到了一个问题,当我启动我的机器人并运行此命令时,它显示“未定义”或“空”作为输出。我该如何解决这个问题?
我已尝试使用与所有其他选项相同的方法。
if (serv.verified == false)
var veri = "No.";
它在哪里检查布尔值、字符串或数字。它似乎不起作用。它将我的变量设置为 null 或 undefined。
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.afkTimeouts`,true)
.addField(`Channels`,`$serv.channels.size`,true)
.addField(`Creation of Guild`,`$serv.createdAt`,true)
.addField(`Default Notification`, defn,true)
预期结果:它会说 No AFK VC 实际结果:显示未定义或为空。
【问题讨论】:
【参考方案1】:首先,您要检查是否有频道。
然后,您要将变量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 通道,则。
如果你想的话,你现在需要的只是找出如何去掉#。享受吧!
【讨论】:
【参考方案2】:除了...,'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
语句并防止您的问题:
var afk = serv.afkChannel || 'No AFK Channel';
如果serv.afkChannel
是falsy,则变量将被声明为'No AFK Channel'
。
【讨论】:
以上是关于如何修复 AFK 通道的“空”输出的主要内容,如果未能解决你的问题,请参考以下文章