设置获取的用户discord js的昵称

时间:2021-02-22 21:19:57

标签: node.js discord fetch undefined

我正在尝试将不和谐用户的昵称设置为我从数据库中获取的名称

client.guilds.cache.forEach((guild) => {
        console.log(guild.name + " - " + guild.id);
        if (guild.name == "SERVER.COM") {
                variableguild = guild;
        }
});
variableguild.members.fetch().then(r => {
        r.forEach(r => {
                let userid = r.user
                database.query("SELECT nick FROM relacje WHERE user = " + r.user.id, (err, row) => {
                        if (err) return console.log("Crit error: " + err);
                        if (row[0]) {
                                if (row[0].nick !== "XEX") {
                                        var pobranygosczdc = client.users.fetch(r.user.id);
                                        pobranygosczdc.member.setNickname(row[0].nick);
                                }
                        }
                })

        })
});

以上代码在 client.on('ready', () => { 中运行

我正在尝试找出问题所在。我收到此错误:

TypeError: Cannot read property 'setNickname' of undefined

不和谐 js 12.5.1

提前致谢

1 个答案:

答案 0 :(得分:0)

第一个 client.users.fetch() 返回一个承诺。所以你应该使用 await.then()

Documentation for .fetch()


第二个问题是用户没有成员属性,因为他们总是必须与服务器(公会)相关。所以你可以做的是

    variableguild.members.fetch().then(guildMembers => {
    guildMembers.forEach(guildMember => {
        let memberId = guildMember.id;

        database.query("SELECT nick FROM relacje WHERE user = " + memberId, (err, row) => {
            if (err) return console.log("Crit error: " + err);
            if (row[0]) {
                    if (row[0].nick !== "XEX") {
                            guildMember.setNickname(row[0].nick);
                    }
            }
        });
    });
});

User class Properties/methods