【发布时间】:2022-01-12 17:15:00
【问题描述】:
我正在创建一个不和谐的机器人命令,它会在问题的消息上给出一个问题和两个表情符号,供用户做出反应。如果您选择了错误的表情符号,机器人会告诉您“错误”,再次对消息做出反应,然后等待用户做出反应。我想把它放到一个无限循环中,只有当用户选择正确的表情符号时才会停止。这是我迄今为止所做的工作:
message.channel.send(`Question?`).then(sentMessage => {
sentMessage.react('✅');
sentMessage.react('❌');
const filter = (reaction, user) => {
return ['✅', '❌'].includes(reaction.emoji.name) && user.id != `${bid}`; // bid = bot's id
};
sentMessage.awaitReactions({ filter, max: 1, time: 60000, errors: ['time'] }).then(collected => {
var reaction = collected.first();
if (reaction.emoji.name === '❌') {
var check = true;
while (check) {
console.log('?');
message.channel.send('Wrong').then(sentMessage => {
sentMessage.react('✅');
sentMessage.react('❌');
const filter = (reaction, user) => {
return ['✅', '❌'].includes(reaction.emoji.name) && user.id != `${bid}`;
};
sentMessage.awaitReactions({ filter, max: 1, time: 60000, errors: ['time'] }).then(collected => {
var reaction = collected.first();
if (reaction.emoji.name == '✅') check = false;
});
});
}
}
});
});
这个想法是当用户在第一次反应一些❌后最终反应✅时,check将变为false并且循环将停止。然而,在第一次选择 ❌ 之后,while 循环除了循环 console.log('?') 之外没有运行任何代码。谁能指出我哪里做错了?
【问题讨论】:
-
你不会想要一个阻止你的事件循环过程这样做的循环。
-
这是否意味着我不应该在
then中放置无限循环?
标签: javascript node.js discord.js