Discord Bot嵌入变量返回为未定义

时间:2018-11-07 05:00:39

标签: javascript bots embed discord

这是我的代码,值始终未定义 https://cdn.discordapp.com/attachments/501784044649054231/509529437419732994/unknown.png

该代码应该是

!rebirth 1 1 1 

它应该回复嵌入

集体现金1
生命币1
令牌1

exports.run = (_client, message, args) => {
let {Cash} = args[0]; // Remember arrays are 0-based!.
let {Tokens} = args[1];
let {LifeCoins} = args[2];
const Discord = require('discord.js')

var embed = new Discord.RichEmbed()
    .setTitle("Rebirth")
    .setAuthor("Author Name", `${message.author.avatarURL}`)
    .setTimestamp()
    .addField("Collective Cash", `${Cash}`)
    .addField("Lifecoins", `${LifeCoins}`)
    .addField("Tokens", `${Tokens}`)
    .addBlankField(true)

message.channel.send({
    embed
})
}

2 个答案:

答案 0 :(得分:1)

exports.run = (_client, message, args) => {
    let rest_of_the_string = message.content.slice('embed'.length); //removes the first part
    let array_of_arguments = rest_of_the_string.split(' '); //[Cash LifeCoints Tokens]
    const Discord = require('discord.js')

    var embed = new Discord.RichEmbed()
        .setTitle("Rebirth")
        .setAuthor("Author Name", `${message.author.avatarURL}`)
        .setTimestamp()
        .addField("Collective Cash", array_of_arguments[0])
        .addField("Lifecoins", array_of_arguments[1])
        .addField("Tokens", array_of_arguments[2])
        .addBlankField(true)

    message.channel.send({
        embed
    })
    }

尝试

答案 1 :(得分:0)

2 个问题:

第一个问题是最后一行:

message.channel.send({embed});

在JS中, {embed} 与 {embed:undefined} 相同,因为您没有指定任何值。

在 discord.js 中,只需执行 message.channel.send(embed) 即可。

第二个问题:

您在变量中使用了对象解构, 在您的代码中:

let {Cash} = args[0]; // Remember arrays are 0-based!.
let {Tokens} = args[1];
let {LifeCoins} = args[2];

等于

let Cash = args[0].Cash; // Remember arrays are 0-based!.
let Tokens = args[1].Tokens;
let LifeCoins = args[2].LifeCoins;

显然返回 undefined(没有“现金”属性)

相反,你应该这样做:

let Cash = args[0]; // Remember arrays are 0-based!.
let Tokens = args[1];
let LifeCoins = args[2];

代码现在应该是这样的:

exports.run = (_client, message, args) => {
let Cash = args[0]; // Remember arrays are 0-based!.
let Tokens = args[1];
let LifeCoins = args[2];
const Discord = require('discord.js')

var embed = new Discord.RichEmbed()
    .setTitle("Rebirth")
    .setAuthor("Author Name", `${message.author.avatarURL}`)
    .setTimestamp()
    .addField("Collective Cash", `${Cash}`)
    .addField("Lifecoins", `${LifeCoins}`)
    .addField("Tokens", `${Tokens}`)
    .addBlankField(true)

message.channel.send(embed)