设置获取用户discord js的昵称

set nickname of fetched user discord js

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

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

discord js 12.5.1

提前致谢

首先client.users.fetch()returns一个承诺。所以你应该使用 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