Discord.js 如何摆脱;“未定义”;不和谐嵌入

Discord.js 如何摆脱;“未定义”;不和谐嵌入,discord.js,commando,Discord.js,Commando,我正试图使这个Discord嵌入的输出不会被嵌入的Bot、Mute和Deafen部分“未定义” 我试图将一些变量更改为“let”或“const” 我篡改了aboutuser的部分,将其更改为其他内容。 我搞乱了代码的if部分 这是密码 async run(message, args){ if (message.channel instanceof discord.DMChannel) return message.channel.send('This command cannot be

我正试图使这个Discord嵌入的输出不会被嵌入的
Bot、Mute和Deafen部分“未定义”

我试图将一些变量更改为“let”或“const” 我篡改了aboutuser的
部分,将其更改为其他内容。
我搞乱了代码的
if
部分

这是密码

async run(message, args){
    if (message.channel instanceof discord.DMChannel) return message.channel.send('This command cannot be executed here.')
    else
    var serv = message.guild

    if (serv.explicitContentFilter == 0) {
        var eFC = "Don't Scan Any messages";
    }
    if (serv.explicitContentFilter == 1) {
        var eFC = "Scan for users without a role.";
    }
    if (serv.explicitContentFilter == 2) {
        var eFC = "Scan every message";
    }
///////////////////////////////////////////////////////////////////////////////////////////////////
    if (serv.verificationLevel == 4) {
        var verL = "Intense (Verified Account & Verified Phone linked)";
    } 

    if (serv.verificationLevel == 3) {
        var verL = "Secure (Verified Account & Guild member for 10+ minutes)";
    } 
    if (serv.verificationLevel == 2) {
        var verL = "Medium (Verified Account for 5 minutes+)";
    }    
    if (serv.verificationLevel == 1) {
        var verL = "Low (Verified Account)";
    } 
    if (serv.verificationLevel == 0) {
        var verL = "None (No Restriction)";
    }  
//////////////

if (serv.region == `brazil`) {
    var regio = "Brazil";
}  

if (serv.region == `eu-central`) {
    var regio = "Central Europe";
}  

if (serv.region == `hongkong`) {
    var regio = "Hong Kong";
}  

if (serv.region == `japan`) {
    var regio = "Japan";
}  

if (serv.region == `russia`) {
    var regio = "Russia";
}  

if (serv.region == `singapore`) {
    var regio = "Singapore";
}  

if (serv.region == `southafrica`) {
    var regio = "South Africa";
}  

if (serv.region == `sydney`) {
    var regio = "Sydney";
} 

if (serv.region == `us-central`) {
    var regio = "Central US";
}  

if (serv.region == `us-east`) {
    var regio = "East US";
}  

if (serv.region == `us-south`) {
    var regio = "South US";
}  

if (serv.region == `us-west`) {
    var regio = "West US";
}  

if (serv.region == `eu-west`) {
    var regio = "West Europe";
}  
//
if (serv.defaultMessageNotifications == `ALL`) {
    var defn = "Send all Messages";
}  

if (serv.defaultMessageNotifications == `MENTIONS`) {
    var defn = "Only @everyone";
} 

    var myInfo = new discord.RichEmbed()
        .setAuthor(`${serv.name}'s guild info`,`${message.guild.iconURL}`)
        .addField(`AFK Channel`,`${serv.afkChannel}`,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)
        .addField(`Explicit Content Filter Level`, eFC,true)
        .addField(`Guild ID`,`${serv.id}`,true)
        .addField(`How much members`,`${serv.memberCount}`,true)
        .addField(`Owner`,`${serv.owner}`,true)
        .addField(`Region`, regio,true)
        .addField('Roles', `Please do s!roles to find server roles!`, true)
        /* serv.roles.map(r => `${r}`).join(' | ') */
        .addField(`Verification Level`, verL,true)
        .setColor(0x511fdd)
        .setFooter('Aboutserver command')
        .setThumbnail(`${message.guild.iconURL}`)
        message.channel.sendEmbed(myInfo);

}

}
预期结果:bot将说Yes或No,而不是undefined,或true或false。
实际结果:bot的输出没有定义。

这里发生了一些事情,但让我们关注主要问题;如何声明变量

简单地说,只能在声明变量的范围内访问变量(范围是
{}
之间的所有代码)

我将根据您的代码用一个简短的示例来解释它。在
if
语句中声明变量,这意味着它们可以在
if
语句的范围内使用。稍后,您希望在
if
语句之外和嵌入语句中使用这些相同的变量。因为这些变量不在该范围内,所以它们是未定义的

。。。
//此时没有可用的变量“eFC”。
if(serv.explicitContentFilter==0){
//这里您创建了变量“eFC”,但它只能在此范围内使用,这意味着不能在“if”语句之外访问它。
var eFC=“不扫描任何邮件”;
}
if(serv.explicitContentFilter==1){
//在这里,您创建了另一个同名的变量,但它最终将是一个不同的变量。
var eFC=“扫描没有角色的用户。”;
}
//这里仍然没有变量“eFC”可供我们使用。
...
简单的解决方案是:在另一个作用域中声明变量,然后分配值。下面您可以看到一个示例:

。。。
//在这里,我们创建了一个名为“eFC”的新变量,它可以在这个范围内使用
var-eFC;
if(serv.explicitContentFilter==0){
//在这里,我们为先前定义的变量赋值
eFC=“不扫描任何邮件”;
}
if(serv.explicitContentFilter==1){
//在这里,我们为先前定义的变量赋值
eFC=“扫描没有角色的用户。”;
}
//这里我们可以使用变量“eFC”,它将有一个值
控制台日志(eFC);
...
如果对所有使用的变量都这样做,代码应该可以正常工作

最后,我想给你一些额外的帮助。我发现您已经创建了很多很多
if
语句来检查服务器区域或服务器验证级别。Javascript(在许多其他编程语言中)有一个思想,叫做a,它基本上与所有那些
if
语句做相同的事情,但是以更简洁的方式。查看链接,我认为它将帮助您使代码看起来更具可读性