我正在尝试为不和谐的bot分配代码,以便在有人进入服务器时赋予其角色。这是我现在的代码:
client.on('guildMemberAdd', (member) => {
let role = guild.roles.cache.find(r => r.name === "Admin");
console.log(role);
if(!role){
console.log("Role doesen't exist.");
}
member.roles.add(role);
});
我尝试运行它,并执行以下行:console.log("Role doesen't exist.");
。然后,我继续打印角色变量,但该变量未定义。有什么问题吗?
答案 0 :(得分:1)
缓存中可能无法提供所有内容,因此您需要提取它,唯一的问题是您需要通过ID提取。
let role = guild.roles.cache.find(r => r.name === 'ADMIN') || await guild.roles.fetch('ROLEID');
来源:https://discord.js.org/#/docs/main/stable/class/RoleManager?scrollTo=fetch
这是一个非常棘手的解决方案,但是您可以在就绪事件中获取所有角色。
client.guilds.cache.forEach(g => {
g.roles.fetch();
});