Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
505 views
in Technique[技术] by (71.8m points)

Cannot read property 'members' of undefined (discord.js)

I'm trying to create a DM verification system where if a member sends DM to the bot, he gets accepted.

....

const respectrumServer = client.guilds.cache.get('782347082362912768');

client.on('message', message => {   
    if (message.author.equals(client.user)) return;

    var authorid = message.author.id;

    if (message.toString().toLowerCase() === "lonely guy is the best") {
    
        if (message.channel.type == "dm") {

                if(respectrumServer.members.cache.has(authorid)){
                   //error is here ^
                    var verifiedrole = member.respectrumServer.roles.cache.find(role => role.id === '782348009362161714');
                    var notverifiedrole = member.respectrumServer.roles.cache.find(role => role.id === '797218539563122688');

                    member.roles.add(verifiedrole);
                    member.roles.remove(notverifiedrole);
                    authorid.send('You have been verified');

                }
                else{
                    authorid.send('You are not a member of Respectrum');
                }

        }
        else{
            message.channel.send('I know, right?');
        }
    }
    else{
        return;
    }
    
});


I changed many things like message.author to message.author.id and members.cache.find(authorid) to members.cache.has(authorid)

I don't know what the problem is.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

This is because you're trying to get the respectrumServer server before the bot is ready. Use the following code instead to define it when you receive a new message:

client.on('message', async message => {  
    if (message.author.equals(client.user)) return;

    const respectrumServer = client.guilds.cache.get('782347082362912768');
    var authorid = message.author.id;

    if (message.toString().toLowerCase() === "lonely guy is the best") {
    
        if (message.channel.type == "dm") {
                const member = await respectrumServer.members.fetch(authorid).catch(() => {});
                if(member){
                   //error is here ^
                    var verifiedrole = member.respectrumServer.roles.cache.find(role => role.id === '782348009362161714');
                    var notverifiedrole = member.respectrumServer.roles.cache.find(role => role.id === '797218539563122688');

                    member.roles.add(verifiedrole);
                    member.roles.remove(notverifiedrole);
                    authorid.send('You have been verified');

                }
                else{
                    authorid.send('You are not a member of Respectrum');
                }

        }
        else{
            message.channel.send('I know, right?');
        }
    }
    else{
        return;
    }
    
});

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...