所以,我正在编写一个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命令在我的机器人中工作得很好。任何帮助将不胜感激。
答案 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');
});