问题描述
我知道很多问题已经得到解答,但无论我尝试什么,它都无法如我所愿。
我正在尝试在我的 discord bot 上制作一种排行榜,这部分工作正常,但是如果您熟悉 minecraft 游戏,您就会知道每个用户都有一个 UUID,并且我有玩家的 UUID我的数据,在继续代码之前,我需要 ASYNC/AWAIT 将 de UUID 转换为玩家的用户名。然而,ASYNC/AWAIT 在 forEach 循环中根本不起作用。
这是我的代码:
const { MessageEmbed } = require("discord.js");
const mcapi = require('mcapi');
const { blue_light,red_light } = require(`../../colours.json`);
const eventogxp = require(`../../models/eventogxpModel`)
run: async (client,message,args) => {
var data = await eventogxp.find({
__v: 0
}).sort([[
'quantiagxp','descending'
]])
const generateEmbed = start => {
const current = data.slice(start,start + 10)
leaderboard = ""
var i = start+1;
current.forEach(async g => {
var ign = await mcapi.uuidToUsername(g.uuid) //This converts the UUID to UserName
leaderboard += "`" + `#${i}` + "` " + "`" + `${ign}` + "`" + ` - **${g.quantiagxp}**` + `\n`
i += 1
});
const embed = new MessageEmbed()
.setTitle(`EVENTOGXP TOP ${start + 1}-${start + current.length} de ${data.length}`)
.setDescription(`${leaderboard}`)
.setColor(blue_light)
return embed
}
const author = message.author
message.channel.send(generateEmbed(0)).then(message => {
if (data.length <= 10) return
message.react('➡️')
const collector = message.createReactionCollector(
(reaction,user) => ['⬅️','➡️'].includes(reaction.emoji.name) && user.id === author.id,{time: 6000000}
)
let currentIndex = 0
collector.on('collect',reaction => {
message.reactions.removeAll().then(async () => {
reaction.emoji.name === '⬅️' ? currentIndex -= 10 : currentIndex += 10
message.edit(generateEmbed(currentIndex))
if (currentIndex !== 0) await message.react('⬅️')
if (currentIndex + 10 < data.length) message.react('➡️')
})
})
})
}
这是我得到的结果: object Promise error
预期的输出将是玩家的游戏内名称(用户名),而不是对象 Promise。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)