如何在guildMemberAdd中使用awaitReactions

时间:2018-04-27 08:10:12

标签: javascript node.js discord discord.js

我在连接到我的服务器时向用户发送消息,我想通过点击反应继续授权 我该如何创建呢?我使用以下代码:

robot.on("guildMemberAdd", (gMembAdd) =>
{ 
      gMembAdd.send(`Hi ${gMembAdd.toString()} welcome to the server Test`).then(msg => {
       msg.react('✅')
      .then(() => msg.react('❎'));  
//--------------------Developmend-------------------------------------
  let filter = (reaction, user) => reaction.emoji.name === '✅' || reaction.emoji.name === '❎'; 

  let col = msg.createReactionCollector(filter); 

  col.on('collect', r => 
  {
      if (r.users.last().id !== msg.author.id)
      {
      gMembAdd.addRole(gMembAdd.guild.roles.find("name", "Autorize")).catch(console.error)

      r.remove(r.users.last().id); 

     console.log(` ${gMembAdd.user.id} и ${gMembAdd.user.username} and ${r.emoji}`);
      }
  });         

  //--------------------------------------------------------------------
  });

如果答案是肯定的,我需要进行反应检查和角色分配,如果没有,我需要踢。我不明白如何继续。

这段代码会正确使用吗?

1 个答案:

答案 0 :(得分:0)

要检查反应,可以像上面一样使用MesssageReaction.emoji.name
另一方面,您可以使用GuildMember.addRole()GuildMember.kick()
您可以查看以下示例:

robot.on('guildMemberAdd', async member => {
  let msg = await member.send(`Hi ${member} welcome to the server Test`);
  await msg.react('✅');
  await msg.react('❎');

  msg.createReactionCollection(r => ['✅', '❎'].includes(r.emoji.name))
    .on('collect', r => { 
      if (r.emoji.name == '✅') 
        member.addRole(member.guild.roles.find("name", "Authorize"))
          .then(() => { console.log(`Added ${member.user.username} (${member.id}).`); })
          .catch(console.error);
      else if (r.emoji.name == '❎') member.kick("You got rejected.");

      r.remove(r.users.last());
    });
});

您还可以使用Message.awaitReactions(),因为它在添加反应后不会继续运行,所以效果更好:

robot.on('guildMemberAdd', async member => {
  let msg = await member.send(`Hi ${member} welcome to the server Test`);
  await msg.react('✅');
  await msg.react('❎');

  msg.awaitReactions(r => ['✅', '❎'].includes(r.emoji.name), {max: 1})
    .then(collected => {
      let r = collected.first();

      if (r.emoji.name == '✅') 
        member.addRole(member.guild.roles.find("name", "Authorize"))
          .then(() => { console.log(`Added ${member.user.username} (${member.id}).`); })
          .catch(console.error);
      else if (r.emoji.name == '❎') member.kick("You got rejected.");

      r.remove(r.users.last())
    });
});