使用表情给角色Discord.js

时间:2017-12-30 12:26:03

标签: 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));
});

3 个答案:

答案 0 :(得分:3)

当前代码存在问题。 messageReactionAdd事件返回User对象,该对象不包含您尝试访问的属性.guildsusers.guilds.r-

也许您应该使用id对象的User并将其插入message.guild.members.get("id here")。然后使用返回的Member对象和当前代码。这应该有效!

参考文献:

Guild MemberMessage Reaction EventUser Object

答案 1 :(得分:2)

这样的事情会起作用吗? 我不确定它是否会对它进行测试。如果他们反应的消息包含单词" 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))
}
});

答案 2 :(得分:-1)

是角色的名称; 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,只需在角色上加上标签,然后在您点击send put \标签之前,它将提供ID