javascript - 无法读取未定义、discord.js 经济的属性“标签”
问题描述
我的代码有问题,我收到以下错误:Cannot read property 'tag' of undefined
. 我希望你能帮助我。:)
if(message.content.toLowerCase() === `${prefix}rich` || message.content.toLowerCase() === `${prefix}lb` || message.content.toLowerCase() === `${prefix}leaderboard`) {
let money = db.all().filter(data => data.ID.startsWith(`wallet`)).sort((a, b) => b.data - a.data)
money.length = 10
var finalLb = ""
for(var i in money) {
finalLb += `**${money.indexOf(money[i])+1})** ${client.users.cache.get(money[i].ID.slice(6)).tag} :- \`$${money[i].data.toLocaleString()}\`\n`
}
const embed = new Discord.MessageEmbed()
.setAuthor(`Global LeaderBoard`, client.user.displayAvatarURL({ dynamic: true }))
.setTimestamp()
.setColor('RANDOM')
.setDescription(`
${finalLb}
`)
message.channel.send(embed)
}
解决方案
我认为正在发生的事情是您正在寻找的用户尚未被缓存,因此您正在获取undefined
而不是用户。
这可以通过替换${client.users.cache.get(money[i].ID.slice(6)).tag}
为以下内容来解决,这将从所有可用用户中获取用户:
${(await client.users.fetch(money[i].ID.slice(6))).tag}
请注意,您必须在异步函数(带有关键字的函数async
)中执行此操作,或者,如果您愿意,也可以在函数返回的.then()
函数上使用该函数。Promise
fetch
我还建议您添加某种错误处理,以防此操作仍然失败,因为它仍然可以但是我相信我上面提到的是您的代码无法正常工作的主要原因。
推荐阅读
- sql - 如何从 $this->db->insert('history', $data) 获取 SQL 字符串正在构建并发送到 db codeigniter?
- regex - 用正则表达式替换结尾随机并添加字符
- java - java.lang.ClassCastException 在休眠中调用 session.getUniqueResult 或 session.get
- java - 我想添加 switch 语句来打开多活动(意图)
- python - 解析当前页面时如何正确调用另一个函数?
- c++ - 使用 cin 时如何使用 clock() 测量时间?
- ruby-on-rails - 如何发送带有图像背景的电子邮件而不将此图像附加为文件以供下载?
- mysql - 将 SSRS 报告中的小数四舍五入
- php - 删除查询不成功后变量不显示
- assembly - 汇编 - 如果用于检查有效数字输入的语句未正确执行