Discord.js client.addMemberToRole 不工作

Posted

技术标签:

【中文标题】Discord.js client.addMemberToRole 不工作【英文标题】:Discord.js client.addMemberToRole not working 【发布时间】:2017-09-12 19:38:43 【问题描述】:

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

TypeError: bot.addMemberToRole 不是函数

我感到困惑是可以理解的,因为文档清楚地表明这是一个函数。我尝试过 bot.addMemberToRole(member, role);、addMemberToRole(member, role); 和其他几个迭代。这是我最近的尝试:

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】:

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

要将成员添加到角色,您需要 GuildMember 和 Role 对象(或角色的名称)。假设你有 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');
);

【讨论】:

非常感谢您的帮助!

以上是关于Discord.js client.addMemberToRole 不工作的主要内容,如果未能解决你的问题,请参考以下文章

Discord 错误错误 Discord.js 中的无效令牌

Discord 仅识别 discord.js 中的“ping”命令

错误“const Discord = require(discord.js) ^ ReferenceError: discord is not defined”

(Discord 机器人)当用户加入 Discord 服务器(discord.js)时,如何发送欢迎消息?

Discord.js 和 discord.js-commando 防止命令在特定通道中运行

使用 Discord 按钮的建议命令 Discord.JS