根据对嵌入的反应,为新用户添加经过验证的角色

时间:2019-03-04 06:49:01

标签: bots discord discord.js

我正在尝试为加入我的服务器的用户创建一个验证系统。他们必须对正确的表情符号做出反应,才能获得成员角色。我花了大约14个小时以上的时间阅读文档,甚至尝试使用集合和try-catch块。如何获取事件处理程序以识别成员和消息属性,以便该事件可以相应地起作用?

client.on('guildMemberAdd', member => {
  member.guild.channels.get('549387603773828971').send(embed).then(async embedMessage => {
    await embedMessage.react('✔️');
    await embedMessage.react('❌');
  });

  client.on('messageReactionAdd', (reaction, user) => {
    if (reaction.emoji.name === "✔️") {
      //assign role to new user   
    } else if (reaction.emoji.name === "❌")
    // tell user to react to the correct emote
  });
});

1 个答案:

答案 0 :(得分:0)

首先,我使用guildMember获取了reaction.message,以获取所有消息属性和方法。之后,我使用reaction.message.guild属性和方法按角色名称获取了角色。

对于您的消息,我还使用了reaction.message.channel方法。

尝试使用以下代码:

client.on('guildMemberAdd', member => {
  member.guild.channels.get('549387603773828971').send(embed).then(async embedMessage => {
    await embedMessage.react('✔️');
    await embedMessage.react('❌');
  });

  client.on('messageReactionAdd', async (reaction, user) => {
    if (reaction.emoji.name === "✔️") {
        const guildMember = reaction.message.guild.members.get(user.id);
        if (!guildMember) throw 'Couldn\'t get guildMember!'

        const roleToAssign = reaction.message.guild.roles.find(r => r.name === 'NAME OF THE ROLE')
        if (!roleToAssign) throw 'Couldn\'t get roleToAssign!'

        await guildMember.addRole(roleToAssign)
    } else if (reaction.emoji.name === "❌")
        reaction.message.channel.send('Tell user to react to the correct emote');
  });
});