So, I am making a bot and here's a part of my code what has a problem:
if(message.content.startsWith("$sudo make-mod ")) {
target = message.mentions.users.first();
let role = message.guild.roles.cache.find(r => r.id = "<@&938235657929773077>")
console.log(target)
target.roles.add(role.id)
}
and I get this error:
target.roles.add(role.id)
^
TypeError: Cannot read property 'add' of undefined
I don't know what's the problem. Can someone help???
CodePudding user response:
It would be better if you did it like this:
target = message.mentions.users.first();
let role = message.guild.roles.cache.find(r => r.id = "938235657929773077")
const user = message.guild.members.cache.get(target.id)
user.roles.add(role.id)
When you use message.mentions.users.first() which doesn't have any roles properties and it returns something like this when you do console.log(target) and it returns a User:
User {
id: 'user-id',
bot: false,
system: false,
flags: UserFlags { bitfield: 0 },
username: 'username'
}
More about Users in User | Discord.jsbut when you use message.guild.members.cache.get(target.id), it returns a GuildMember which has all the roles the user has in the specific guild. More about GuildMember in GuildMember | Discord.js
CodePudding user response:
You need to use members
target = message.mentions.members.first()
