2017-04-17 46 views
1

所以,我正在编写一个Discord bot,我希望它做的事情之一就是在给定的条件下为成员分配角色。看完文档后,特别是here,我认为bot.addMemberToRole是一个很好的命令。然而,当我跑了,我得到这个错误信息:Discord.js client.addMemberToRole无法正常工作

类型错误: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); 

都给出了相同的类型错误如上。

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

回答

1

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

要将成员添加到角色,您需要一个GuildMember和一个角色对象(或角色的名称)。假设你有User对象和Guild对象(你的bot有一个加入的公会/服务器列表,并且大多数事件会有他们关联的公会),你可以通过使用Guild.fetchMember(User)来获得GuildMember。从那里,您可以使用字符串或基于对象的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'); 
}); 
+1

非常感谢您的帮助! –