当我运行命令时,我正在尝试获得XP/levels的领导板并运行(使用存储在mongoDB中的数据),并继续获得这个typeError (leaderboard.map不是一个函数)。
我可以使用一个!秩命令检查级别,但是遇到了!领导板命令的问题。
我的主板代码是:
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("\n\n")}}`)
}我所能想到的就是将它更改为await leaderboard.map,但我暂时无法访问计算机来测试它。
任何帮助,这将是非常感谢!
发布于 2021-02-15 08:33:28
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('\n\n'));发布于 2021-02-15 08:33:13
不要紧。增加了等待Levels.computeLeaderboard,它起了作用
https://stackoverflow.com/questions/66203741
复制相似问题