提问者:小点点

建立具有反应的验证系统


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

因此,告诉您,这个验证系统的目的是确保用户理解规则,并且在添加复选标记反应后,可以继续让其余的不和谐解锁。

我已经制作了一个具有命令消息的bot,它工作得很好,但我希望bot在发送消息后对自己的消息作出反应,然后等待用户也添加反应,在这种情况下,这将触发一个函数。触发机器人发送一个PM给用户,并给他一个等级。

机器人很好地添加了他的反应,作为一个例子,当我做出反应时,它会向我发送一个PM,但是在我和机器人之间的PM中,机器人会再次对他的消息做出反应。这可能是因为代码检查消息作者是否是bot。

在JS Discord中,我被告知messageReactionAdd函数有一个消息属性,但是在搜索之后,我找不到将其实现到代码中的方法。我该怎么做呢?此外,试图给用户一个排名也吐出了一个错误,我只是在理解和使东西工作之间卡住了。我对我自己的代码感到困惑,而且我对我正在做的事情只有很少的理解,所以说,有没有人可以帮助我做这个更改,这样我就可以在我的头脑中得到它?给我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个答案

匿名用户

如果您的问题发生在此处:

  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);
 });