[英]Having issue assigning roles on guildMemberUpdate discord.js
I'm currently working on a discord bot for a server with third-party age verification, after their update with the verified role being added.我目前正在为具有第三方年龄验证的服务器开发 discord 机器人,在他们更新后添加了经过验证的角色。
I wanted to then apply another role depending on a separate identifying role.然后,我想根据单独的识别角色应用另一个角色。 But I keep getting problems with parts of the code being undefined or not a function, so I'm really stuck.
但是我一直遇到部分代码未定义或不是 function 的问题,所以我真的被卡住了。
bot.on('guildMemberUpdate', (oldMember, newMember) => {
if(oldMember.roles !== newMember.roles) {
if(newMember.roles.cache.some(r => r.name === "Verified")) {
if(newMember.roles.cache.some(r => r.name === "Workshop Devotee")) {
let role1 = newMember.guild.roles.cache.some(role => role.name === "Verified Workshop Devotee");
newMember.guild.cache.get(newMember.author.id).roles.add(role1);
}
else if (newMember.roles.cache.some(r => r.name === "Workshop Helpers")) {
let role2 = newMember.guild.roles.cache.some(role => role.name === "Verified Workshop Helpers");
newMember.guild.cache.get(newMember.author.id).roles.add(role2);
}
else if (newMember.roles.cache.some(r => r.name === "Workshop Supporters")) {
let role3 = newMember.guild.roles.cache.some(role => role.name === "Verified Workshop Supporters");
newMember.guild.cache.get(newMember.author.id).roles.add(role3);
}
else{
return;
}
There are two major errors with this code which is why it isn't working.此代码有两个主要错误,这就是它不起作用的原因。
First of all, you are using the .some()
method to fetch a role
object, however .some()
only checks to see if an item exists in a list, and returns true or false.首先,您使用
.some()
方法获取role
object,但是.some()
仅检查列表中是否存在项目,并返回 true 或 false。 Instead, you should use the .get()
method to fetch the role.相反,您应该使用
.get()
方法来获取角色。
let role1 = newMember.guild.roles.cache.get(role => role.name === "Verified Workshop Devotee");
The other error I can see, is where you are getting the member
object to add the role.我可以看到的另一个错误是您让
member
object 添加角色。 You are for some reason trying to fetch a guild
object using newMember.author.id
which is the ID of a member, so this will return an error.您出于某种原因尝试使用成员 ID 的
newMember.author.id
获取guild
object,因此这将返回错误。 Instead you can write相反,你可以写
newMember.guild.members.cache.get(newMember.author.id).roles.add(role1);
However, this code is also redundent as you already have the member
object of the member you are adding roles to - its newMember
.但是,此代码也是多余的,因为您已经拥有要添加角色的成员的
member
object - 它的newMember
。 Therefore, you can instead write因此,您可以改为编写
newMember.roles.add(role1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.