Javascript 说明设置和查看问题

Javascript 说明设置和查看问题,javascript,github,heroku,discord.js,Javascript,Github,Heroku,Discord.js,我一直在尝试为我的个人资料命令嵌入设置一个Bio,人们可以更改。我认为它应该可以工作,但我的代码似乎有问题 以下是相关代码: const PREFIX = '!'; var bio = {}; client.on('message', async message => { let args = message.content.substring(PREFIX.length).split(" "); switch (args[0]) { case 'setBio':

我一直在尝试为我的个人资料命令嵌入设置一个Bio,人们可以更改。我认为它应该可以工作,但我的代码似乎有问题

以下是相关代码:

const PREFIX = '!';
var bio = {};
client.on('message', async message => {
  let args = message.content.substring(PREFIX.length).split(" ");
  switch (args[0]) {
    case 'setBio':
      bio[message.author.id] = args[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
        message.channel.send('Your bio has been changed!')
            .then(msg => msg.delete(3000)); 
        break;
    case 'profile':
      const embed = new Discord.RichEmbed()
        .setTitle('__' + message.author.username + '\'s Profile__')
        .addField('Bio: ', bio[message.author.id])
        .setColor(message.member.colorRole.color)
        .setThumbnail(message.author.avatarURL)
      message.channel.send(embed);
     break;
    }
});

这两个命令现在都显示了,但是现在当我尝试更改Bio并显示配置文件时,Bio没有更改。我检查了控制台,但没有显示任何错误。现在它非常烦人。

问题是运行args[1,2,3,…,20]只会返回您传递给它的最后一个索引,而不会返回包含每个索引的整个数组。您可以将该行替换为:

bio[message.author.id] = args.slice(1) 
它将返回数组减去其中的第一项

至于嵌入此数组,您只能将字符串值传递到.addField方法中,因此,您应该将数组连接到一个连贯的字符串中,如下所示:

.addField('Bio: ', bio[message.author.id].join(" "))

我不认为args[1,2,3,…,20]在做你认为它在做的事情…你是什么意思?如果我做一个数组,让a=[1,2,3,4]并调用a[0,1],我得到的输出是2,这意味着只有第20个参数会出现?我必须做什么才能让它看到所有args 1-20?谢谢。我得到它也做了一个错误,当你试图查看你的个人资料,而不设置个人简历。现在只需为Bios设置一个数据库。。我考虑的是JSON,但我不知道如果您希望以JSON格式存储数据,我建议您研究MongoDB。您可以使用mongooseOk从discord服务器与MongoDB交互,但我会小心一点,因为我想我不知道它的安全性是多久前听到的消息。每个数据库都有安全问题,防止对它的无效访问由您来决定,即清理输入。如果,我记得不是MongoDB本身,只是一些数据库攻击-