无法读取未定义的属性“成员”(discord.js)

时间:2021-01-11 15:57:20

标签: discord.js

我正在尝试创建一个 DM 验证系统,如果成员将 DM 发送给机器人,他就会被接受。

....

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;
    }
    
});


我把很多东西都改了,比如 message.authormessage.author.idmembers.cache.find(authorid)members.cache.has(authorid)

我不知道是什么问题。

1 个答案:

答案 0 :(得分:0)

这是因为您试图在机器人准备就绪之前获取 respectrumServer 服务器。 当您收到新消息时,请改用以下代码来定义它:

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;
    }
    
});