繁体   English   中英

谁能解释我如何 ReactionCollector function?

[英]Someone who can explain me how ReactionCollector function?

嘿,我是 js 和 discord js 的新手,遇到了问题,我不明白反应收集器的工作原理,也许这里有人可以解释并帮助我处理该代码。 如果需要其他代码,它的票务系统将发送它:

.then(async (channel, message) => {
        
          let sent = await channel.send(`<@${user.id}>`, new Discord.MessageEmbed()
            .setTitle("Welcome to your ticket!")
            .setDescription("We will be with you shortly")
            .setColor("00ff00")

          );
          sent.react('📪');
          
            const filter = (reaction, user) => {

              if (reaction.emoji.name === "📪"){
                
              
                reaction.users.remove(user);
                reaction.message.channel.delete();
              }


            return reaction.emoji.name === '📪' && user.id === message.author.id;  
          }
          const collector = message.createReactionCollector(filter, { time: 15000 });

          collector.on('collect', (reaction, user) => {
            console.log(`Collected ${reaction.emoji.name} from ${user.tag}`);
          });

          collector.on('end', collected => {
            console.log(`Collected ${collected.size} items`);
          });
              


          });
  
        
        }
      }
    }
)

您需要使用正确的过滤器。 如我所见,您只想检测消息作者的反应。 因此,将这些限制放入过滤器中,然后收集器收集的每个反应都会尊重这些条件。

现在你有了这个,只要执行你想要的任何东西,一旦一切完成就停止收集器,这样你就不会听到任何其他反应。

let sent = await channel.send(`<@${user.id}>`, new Discord.MessageEmbed()
  .setTitle("Welcome to your ticket!")
  .setDescription("We will be with you shortly")
  .setColor("00ff00")
);
sent.react('📪');

const filter = (reaction, user) => {
  //We filter the collector to only listen to 📪 reaction added by the author of the message.
  return reaction.emoji.name === '📪' && user.id === message.author.id;  
}
const collector = message.createReactionCollector(filter, { time: 15000 });

collector.on('collect', (reaction, user) => {
  console.log(`Collected ${reaction.emoji.name} from ${user.tag}`);
  reaction.users.remove(user);
  reaction.message.channel.delete();
  //Then we stop the collector.
  collector.stop()
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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