简体   繁体   English

如何使用带有 switch 语句的反应处理程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM