使用表情赋予角色 Discord.js

Using emotes to give roles Discord.js

在我的 discord 服务器中,作为一种验证方法,我希望我的机器人让所有用户对消息做出反应,然后获得经过验证的角色,并删除旧角色。我的当前代码不会授予或删除角色,但不会出错。

client.on("messageReactionAdd", function(users) {
users.addRole(users.guild.roles.find("name", setup.verify));
users.removeRole(users.guild.roles.find("name", setup.default));
});

这样的东西行得通吗? 我不确定我还没有测试过。如果他们反应的消息包含单词 "role1" ,这应该添加角色,如果他们对不同的消息作出反应,它将删除角色。我不知道这是否是您想要的,但理论上这应该可行。

 client.on("MessageReactionAdd", function(users) {
if (message.content === "role1") {
  users.addRole(users.guild.roles.find("name", setup.verify))
} else if (!message.content === "role1") {
  user.removeRole(users.guild.role.find("name", setup.default))
}
});

当前代码有问题。 messageReactionAdd 事件 returns 一个 User 对象,它不包含您尝试访问的 属性 .guildsusers.guilds.r-

也许您应该 User 对象的 id 并将其插入 message.guild.members.get("id here") 而不是这个。然后将返回的 Member 对象与您当前的代码一起使用。那应该有用!

参考文献:

Guild Member , Message Reaction Event, User Object

是角色的名字; setup.verify & setup.default?
如果没有,那就是它不起作用的原因。

尝试:

client.on("messageReactionAdd", function(users) {
users.addRole(users.guild.roles.find("id", ROLEIDHERE));
users.removeRole(users.guild.roles.find("id", ROLEIDHERE));
});

在 ROLEIDHERE 中放置 role id 以查找角色 ID 只需标记角色,然后在您点击发送之前将 \ 放在标记之前,它将提供 ID