我正在尝试使用 Client.on("ready") 使我的机器人的角色为当前服务器的粉红色,但是每当我使用当前的控制台返回运行机器人时:
(node:6504) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'cache' of undefined
这是我目前使用的代码。我知道我需要在每个公会上使用 for 循环,但我不确定我会怎么做,我可以使用 for 或仅使用 .forEach 但是我找不到正确的方法来做到这一点。
const role = client.guild.roles.cache.get('Aiz Basic+');
role.edit({ name: 'Aiz Basic+', color: '#FFC0CB' });
在此先感谢任何回复并帮助我传达信息的人。
答案 0 :(得分:2)
Client#Guild
不存在。只有1个}}。您可以使用以下命令遍历所有公会的缓存来解决此问题:
Client#Guilds
在循环内部,您可以在修复 .get 函数后使用您的代码,因为 get 函数需要角色 ID 而不是角色名称。您可以通过以下方式通过名称找到角色:
client.guilds.cache.forEach((g) => { })
确保将 const role = <Guild>.roles.cache.find((r) => r.name === /* The role name */);
替换为公会变量。
答案 1 :(得分:1)
如果 client.guild
未定义,请尝试此代码,也可能是因为您使用的是 bot
而不是 client
let role = message.guild.roles.cache.find(role => role.name === "Aiz Basic+");