我仍在研究 Node.js Discord 机器人,我想知道是否真的有可能:我有一个玩家列表,我在 for 循环中随机选择一个,如下所示:let players=['foo', 'bar'];for (let round = 0; round < players.length; round++) { let randPlayer = players[Math.floor(Math.random() * players.length)]; // Events}之后,我正在等待使用 Discord.js 的收集器对发送的消息做出反应:// Eventslet msg = await message.channel.send('Message Here');await msg.react('✔'); await msg.react('❌');const filter = (reaction, user) => (user.id === randPlayer);const ansCollector = await msg.createReactionCollector(filter, { time: 15000 });await ansCollector.on('collect', async (reaction) => { // Do something});问题是,收集器永远无法收集,因为在触发“收集”事件之前,for 循环会跳到另一个玩家。你有这个代码的替代品吗?祝你有美好的一天 :D
1 回答
森林海
TA贡献2011条经验 获得超2个赞
将您的 EventEmitter 侦听器包装在once每个玩家解析的 Promise 中,并等待承诺。
for (let round = 0; round < players.length; round++) {
let randPlayer = players[Math.floor(Math.random() * players.length)];
await new Promise(resolve => ansCollector.once('collect', async (reaction) => {
resolve(reaction);
});
// Events
}
添加回答
举报
0/150
提交
取消