做出具有反应的验证系统

时间:2018-11-25 20:15:53

标签: javascript bots discord discord.js

我发现了一些有关同一主题的帖子,但不是确切的问题。 我还提到了javascript不和谐,他们无法解决我的问题。

因此,通知您, 此验证系统的目的是确保用户理解规则,并在添加检查标记反应后继续解锁其他不和谐状态。

我已经制作了一个具有命令消息的机器人,并且它可以正常运行,但是我随后希望该机器人对自己发送的消息做出反应,然后等待用户也添加一个响应,这将在这种情况下,触发一个功能。触发机器人向用户发送PM并给他一个等级。

该机器人很好地添加了他的反应,并且以我的反应为例,它向我发送了PM,但是在我与机器人之间的PM中,该机器人再次对他的消息做出了反应。这可能是因为代码检查了消息作者是否是机器人。

在JS Discord中,我被告知messageReactionAdd函数具有Message属性,但是在搜索时,我找不到在我的代码中实现此功能的方法。我该怎么办?尝试给用户一个等级也可能导致错误,而我只是陷入理解和使工作正常之间。我对自己的代码感到困惑,并且对自己的工作了解得很少,因此,我说:有人可以协助我进行此更改,这样我就可以掌握吗?向我提供指向discord.js文档的链接只会使我更加困惑,而我学习的唯一方法就是创建并成功使之工作。任何帮助,我们当然感激。

因此,这是messageReactionAdd的代码:

bot.on('messageReactionAdd', (reaction, user) => {
  if(reaction.emoji.name === "✅") {
    if(user === bot.user) return;
    // if(bot.channel === "dm") return;
    // let role = bot.guild.roles.find("name", "C - Verified");
    // let role1 = bot.guild.roles.find("name", "C - Unverified");

    //if(user.roles.has(role.id));
    //await(user.addRole(role.id) && user.removeRole(role1.id));
    user.send("Thank you for being apart of the community! As a thanks for accepting the rules, you have been awarded the verified role!");
    return;
}
});

这是react函数本身的代码:

  

513769507907567628是漫游器的ID。

bot.on("message", async message => {
if(message.author.id != "513769507907567628") return;
message.react("✅");
});

因此,如果您有任何建议,那就太好了!如果您可以加入不和谐通话,请给我发消息,那将是最简单,最快的。

  

关于,马吕斯。

1 个答案:

答案 0 :(得分:2)

如果您的问题出现在这里:

  await(user.addRole(role.id) && user.removeRole(role1.id));

那是因为:

1)await仅存在于async函数内部。

2)您不能只将承诺与&&链接在一起,a && b将产生b,然后等待,因此,在您的情况下,您仅等待删除。


 bot.on('messageReactionAdd', async (reaction, user) => {
   if(reaction.emoji.name === "✅") return;
   if(user === bot.user) return;

   let role = bot.guild.roles.find("name", "C - Verified");
   let role1 = bot.guild.roles.find("name", "C - Unverified");

   await user.addRole(role.id);
   await user.removeRole(role1.id);
 });