我正试图获得XP/级别的排行榜和运行(与存储在mongoDB中的数据),并不断获得这种类型的错误(排行榜。map不是一个函数)。
我可以使用!rank命令检查级别,但使用!leaderboard命令会遇到问题。
我的排行榜代码是:
if(command === "leaderboard" || command === "lb") {
const rawLeaderboard = await Levels.fetchLeaderboard(message.guild.id, 5);
if (rawLeaderboard.length < 1) return reply("PandaBot says nobody's in leaderboard yet! 🐼");
const leaderboard = Levels.computeLeaderboard(client, rawLeaderboard);
const lb = leaderboard.map(e => `${e.position}. ${e.username}#${e.discriminator}nLevel: ${e.level}nXP: ${e.xp.toLocaleString()}`);
message.channel.send(`${lb.join("nn")}}`)
}
我能想到的就是把它改成await leaderboard.map
,但是我暂时不能用电脑来测试它。
任何帮助,这将是非常感激!
Levels.computeLeaderboard(client, rawLeaderboard)
返回一个承诺,所以你要么需要使用.then()
或await
来获得结果:
const leaderboard = await Levels.computeLeaderboard(client, rawLeaderboard);
const lb = leaderboard.map(
(e) =>
`${e.position}. ${e.username}#${e.discriminator}nLevel: ${
e.level
}nXP: ${e.xp.toLocaleString()}`,
);
message.channel.send(lb.join('nn'));
没关系。添加了await Levels.computeLeaderboard,它工作了😊