我正在尝试将不和谐用户的昵称设置为我从数据库中获取的名称
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
提前致谢
答案 0 :(得分:0)
第一个 client.users.fetch()
返回一个承诺。所以你应该使用 await
或 .then()
。
第二个问题是用户没有成员属性,因为他们总是必须与服务器(公会)相关。所以你可以做的是
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);
}
}
});
});
});