Home > Enterprise >  TypeError: Cannot read property 'add' of undefined Discord.js simple code
TypeError: Cannot read property 'add' of undefined Discord.js simple code

Time:02-04

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()
  •  Tags:  
  • Related