Discord.js client.addMemberToRole无效

时间:2017-04-17 07:32:25

标签: javascript discord discord.js

所以,我正在编写一个Discord机器人,我希望它做的一件事就是在给定条件的情况下为成员分配角色。在查看了文档后,特别是here,我认为bot.addMemberToRole是一个很好的命令。但是,当我运行它时,我收到此错误消息:

TypeError:bot.addMemberToRole不是函数

我很难理解,因为文档明确说明这是一个功能。我尝试过做bot.addMemberToRole(成员,角色);,addMemberToRole(成员,角色);以及其他几个迭代。这是我最近的尝试:

const Discord = require('discord.js'); 
const bot = new Discord.Client();

bot.addMemberToRole(member, role, function(err){
    if(err){
        console.log(err);
    }
});

我也是这样做的:

bot.addMemberToRole(member, role);

两者都给出了与上面相同的TypeError。

我不知道它为什么不起作用。我完全按照文档,我传递给它的成员和角色变量是正确的类型,其他Discord.js命令在我的机器人中工作得很好。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您正在使用旧版本的文档,因此该功能不再存在。他们应该真的摆脱那些。您正在寻找GuildMember.addRole(Role or String)

要将成员添加到角色,您需要GuildMember和Role对象(或角色的名称)。假设您拥有User对象和Guild对象(您的机器人有一个已加入的公会/服务器列表,大多数事件都将与他们关联的公会),您可以使用Guild.fetchMember(User)获得Guild会员。从那里,您可以使用基于字符串或基于对象的addRole版本在GuildMember上添加角色。

这是一个如何在收到来自用户的消息时这样做的例子,这个消息很容易,因为消息中有一个GuildMember与之关联。

const Discord = require('discord.js'); 
const bot = new Discord.Client();

bot.on('message', (message) => {
  const guildMember = message.member;
  guildMember.addRole('bot-added-role');
});