设置获取的用户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

thanks in advance

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

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

用户类属性/方法

最新更新