Home > database >  Discord vs bot 13 not able to assign roles giving error Cannot read properties of undefined (reading
Discord vs bot 13 not able to assign roles giving error Cannot read properties of undefined (reading

Time:03-29

I am using discord js v13.6. I have written in my code where after using a slash command user is assigned many roles which are stored in a array named rolenumber. The problem is I am getting this error every time

 await client.users.fetch(memberId).then((user,interaction) => {
            user.send("Give me a few moments while I verify your details");
            (async function(user){

            
            let RoleArray = rolenumber.split(","); 
            //let guild = client.guilds.cache.get(guildNumber);
            //let member = await client.users.fetch(msg);   
            
            for(let num of RoleArray) {
                //console.log("Roles Inside a for loop",num);
                let role = interaction.guild.roles.cache.get(num);
                let data = await user.roles.add(role).catch(console.error);
                //user.roles.add(num).catch(console.error);            
            }   
            
           
            let welcomeMessage = 'Welcome <@'  user.id  '>, you are now officially part of channel.';
            const channelMessage = await client.channels.cache.get(channelNumber);
            channelMessage.send(welcomeMessage);
        })();

here the guildNumber is a guild Number which is hidden for security reason from the question. I am getting this as error message:

let role = interaction.guild.roles.cache.get(num);
                                       ^

TypeError: Cannot read properties of undefined (reading 'guild')

at E:\OutscalGit\DiscordBot\index.js:200:44
at processTicksAndRejections (node:internal/process/task_queues:96:5)

CodePudding user response:

interaction is undefined Are you sure, interaction is passed to here?

you can use it but it not perfect

let role = interaction?.guild?.roles?.cache?.get(num);

CodePudding user response:

Promise.prototype.then's fulfillment callback only takes 1 argument.

await client.users.fetch(memberId).then((user) => {
            user.send("Give me a few moments while I verify your details")
            // ...
})

Assuming interaction is already defined above, it should work

  • Related