javascript - bio[message.author.id].join(" ") 不是函数
问题描述
自从我上一个问题以来,我一直在尝试让它工作,但是当我profile
通过更新的命令成功获取过去的 Bio 后尝试执行命令时,现在会出现错误setBio
:
bio[message.author.id].join is not a function
我已经开始意识到这个问题,但我不知道如何正确解决它。
以下是发生错误的代码:
case 'setBio':
if(!bio[message.author.id]) {
let messages = message.channel.messages;
let authorMessages = messages.filter(m => m.author.id === message.author.id);
let setBioCommands = authorMessages.filter(m => m.content.startsWith('!setBio'));
let firstBio = setBioCommands.last();
message.channel.send('I found a Bio you have previously set. Do you want to confirm the change to that Bio?').then(r => r.delete(10000));
message.react('✅').then(() => message.react('❎'));
const filter = (reaction, user) => {
return ['✅', '❎'].includes(reaction.emoji.name) && user.id === message.author.id;
};
message.awaitReactions(filter, { max: 1, time: 10000, errors: ['time'] })
.then(collected => {
const reaction = collected.first();
if (reaction.emoji.name === '✅') {
bio[message.author.id] = firstBio
message.reply('Past Bio successfully restored!')
.then(msg => msg.delete(3000));
}
else {
message.reply('Okey, I\'ll delete this Bio.')
.then(msg => msg.delete(3000));
}
})
.catch(collected => {
message.channel.send('You didn\'t respond, so I\'ll throw this Bio into the abyss. *Buh-bye!*');
});
} else {
let newArr = args.slice(1)
bio[message.author.id] = newArr
message.channel.send('Your bio has been changed!')
.then(msg => msg.delete(3000));
}
break;
case 'profile':
if(!bio[message.author.id]) {
return message.channel.send('Sorry, please set a bio with `!setBio` to view your profile!')
.then(msg => msg.delete(3000));
} else {
const embed = new Discord.RichEmbed()
.setTitle('__' + message.author.username + '\'s Profile__')
.addField(`Bio:`, bio[message.author.id].join(" ")) /// this is where the error is
.setColor(message.member.colorRole.color)
.setThumbnail(message.author.avatarURL)
message.channel.send(embed);
}
break;
解决方案
该错误告诉您bio[message.author.id]
没有.join()
方法。.join()
通常用于具有这种方法的数组。您可能期望bio[message.author.id]
成为一个数组,但它可能是其他对象。
尝试记录bio[message.author.id]
以更好地了解后台发生的事情(调试过程),然后从那里继续。
推荐阅读
- reactjs - 将 fetch 与 Express、React、cors、cookie 一起使用 - “Access-Control-Allow-Origin”标头
- java - 文件名 openjdk-8-jdk-headless 有问题吗?
- c# - 带有 void 的 C# 8.0 switch 语句
- python - 如何关闭循环?
- c# - 如何访问对象类型c#的属性?
- laravel - 如何让 Laravel 再次读取 .env 文件?
- symfony - 教义:循环中的原子更新和异常
- discord.py - 当在类别下创建频道时,我如何让我的机器人说些什么?
- python - 类型错误:fit_generator() 得到了一个意外的关键字参数“samples_per_epoch”
- mysql - 选择相似的记录