[英]How do I use a reaction handler with a switch statement
I'm making a discord.js bot, and I'm creating a function that allows a user to react to a given message, then the bot will edit the message depending on the reaction.我正在制作一个 discord.js 机器人,我正在创建一个函数,允许用户对给定的消息做出反应,然后机器人将根据反应编辑消息。
What I made works, however, I want the user to be able to press the reaction more than once before it ends.然而,我所做的工作,我希望用户能够在它结束之前不止一次按下反应。 Here is my code:这是我的代码:
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();
});
You'll probably want to listen for reactions instead of awaiting them.您可能想要倾听反应而不是等待它们。
Here's an example:下面是一个例子:
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;
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.