如何将反应处理程序与switch语句一起使用



我正在制作一个discord.js机器人,我正在创建一个函数,允许用户对给定的消息做出反应,然后机器人会根据反应编辑消息。

然而,我所做的工作,我希望用户能够在反应结束前按下不止一次。这是我的代码:

const filter = (reaction, user) =>
['🇨', '🇶', '🇪', '🇽'].includes(reaction.emoji.name) &&
user.id === message.author.id;
r.awaitReactions(filter, {
max: 3,
time: 30000,
errors: ['time'],
})
.then((collected) => {
const reaction = collected.first();
switch (reaction.emoji.name) {
case '🇨':
message.util.send(cAbility);
break;
case '🇶':
message.util.send(qAbility);
break;
case '🇪':
message.util.send(eAbility);
break;
case '🇽':
message.util.send(ultAbility);
break;
}
})
.catch((collected) => {
return console.log();
});

您可能想要倾听反应,而不是等待它们。

这里有一个例子:

client.on('messageReactionAdd', async (reaction, user) => {
if (reaction.partial) {
// The message the reaction belongs to might have been deleted.
try {
await reaction.fetch();
} catch (error) {
console.error('Error: ', error);
return;
}
}
switch (reaction.emoji.name) {
case '🇨':
message.util.send(cAbility);
break;
case '🇶':
message.util.send(qAbility);
break;
case '🇪':
message.util.send(eAbility);
break;
case '🇽':
message.util.send(ultAbility);
break;
}
})

最新更新