Discord.js :将特定服务器上的角色添加到 DM 机器人的用户

Posted

技术标签:

【中文标题】Discord.js :将特定服务器上的角色添加到 DM 机器人的用户【英文标题】:Discord.js : Add a role on a specific server to a user that DM the bot 【发布时间】:2020-09-21 23:23:22 【问题描述】:

我目前正在开发一个不和谐的机器人,我想在我的服务器上将角色“成员”添加到 DM 机器人的任何用户。但是我无法使 addRole 工作。我不断收到以下错误:

TypeError: member.guild.roles.cache.addRole 不是函数

这是我的代码:

let server = client.guilds.cache.get('myserverID')
var memberRole= server.roles.cache.find(role => role.name === "Member")
let member = server.members.cache.get(msg.author.id);
member.guild.roles.cache.addRole(memberRole)

有人可以帮我吗?

【问题讨论】:

【参考方案1】:

试试member.guild.roles.cache.roles.add(memberRole);而不是member.roles.add(memberRole);

【讨论】:

不幸的是,这似乎不起作用,我明白了:TypeError: Cannot read property 'add' of undefined. 不,不是这样:您是从缓存集合而不是角色管理器中调用 add 方法。 Docs【参考方案2】:

那是因为该方法不存在:您需要使用的方法是GuildMember.roles.add()。 以下是如何将其应用到代码中:

let server = client.guilds.cache.get('myserverID')
var memberRole= server.roles.cache.find(role => role.name === "Member")
let member = server.members.cache.get(msg.author.id)

member.roles.add(memberRole)

【讨论】:

【参考方案3】:

这是

 member.guild.roles.cache.add(memberRole)

不是

member.guild.roles.cache.addRole(memberRole)

【讨论】:

不,不是这样:您是从缓存集合而不是角色管理器中调用 add 方法。 Docs 不幸的是它不起作用,因为我收到此错误:TypeError: member.guild.roles.cache.add is not a function 我没有测试它,我什至在 discord.js 服务器上问过,他们告诉我没问题。哦,好吧

以上是关于Discord.js :将特定服务器上的角色添加到 DM 机器人的用户的主要内容,如果未能解决你的问题,请参考以下文章

使用 Discord.js 检测到添加的特定角色时删除另一个角色

无法添加角色,Discord.js

Discord.js v12 角色添加到提到的用户问题

使用参数 Discord.JS 按名称将用户添加到角色

如何检查我的机器人是不是可以在 discord.js v12 中添加角色?

Discord.js 获取所有具有特定角色的成员