const { MessageEmbed } = require('discord.js');
const fs = require('fs');
const db = require('quick.db');
const bot = ('Discord.Client')
module.exports = {
name: 'leaderboard',
description: "idk something",
execute(message, args) {
let money = db.all().filter(data => data.ID.startsWith(`money_`)).sort((a, b) => b.data - a.data);
console.log(money)
if (!money.length) {
let noEmbed = new MessageEmbed()
.setAuthor(message.member.displayName, message.author.displayAvatarURL())
.setColor("BLUE")
.setFooter("No leaderboard")
return message.channel.send(noEmbed)
};
money.length = 10;
var finalLb = "";
for (var i in money) {
let currency1;
let fetched = db.fetch(`money_${message.guild.id}`);
if (fetched == null) {
currency1 = '?'
} else {
currency1 = fetched
}
if (money[i].data === null) {money[i].data = 0}
finalLb += `**${money.indexOf(money[i]) + 1}.${message.guild.members.fetch(money.ID.split('_')[1]) ? message.guild.members.fetch(money.ID.split('_')[1]).tag : ""}** - ${money.data} ${currency1}\n`;
};
const embed = new MessageEmbed()
.setTitle(message.guild.name)
.setColor("BLUE")
.setDescription(finalLb)
.setTimestamp()
.setFooter('Command: !help for currency commands')
message.channel.send(embed);
}
}
尝试创建排行榜命令并收到此错误类型错误:无法读取未定义的属性“拆分”。我一直在寻找答案,但到目前为止我还没有看到任何特定于我的情况。有人可以帮忙吗?
答案 0 :(得分:0)
您似乎在函数中进行了大量异步调用。可能发生的情况是您调用 split 函数的字符串值不存在,因为来自服务器的数据尚未到达客户端。
要解决此问题,请在函数名称(执行)之前添加关键字“async”,并在对 db 的所有函数调用之前添加关键字“await”
async execute(message, args){
...
}
和
let money = await db.all().filter(data => data.ID.startsWith(`money_`)).sort((a, b) => b.data - a.data);
let fetched = await db.fetch(`money_${message.guild.id}`);
我还建议您阅读 JavaScript 中的异步函数