Discord.js ForEach函数在V12中不起作用



如果成员从集成中分配了一个角色,我有一个V11代码函数来添加一个角色。在这种情况下,当他们获得自动抽动子角色时,给他们一个角色。

在V12中,我无法让它工作,感谢提前提供的帮助

附言:这只是一个服务器,所以我为什么不清除哪个公会。

V11代码:

client.on('ready', () => {
function autosub() {
userss = client.guilds.get("358851471435104256").members;
userss.forEach(element => {
if ((element.roles.has("359382759434616832")) || (element.roles.has("463817515856822283")) || (element.roles.has("642181346197766165")) || (element.roles.has("526192023556980736")) || (element.roles.has("684173233754341552"))) {
element.addRole("463821375061360640");
} else {
element.removeRole("463821375061360640");
}
}
)
setTimeout(autosub, 900000);
}
autosub();
});

新的V12代码:

client.on('ready', () => {
function autosub() {
client.guild.members.cache.forEach(element => {
if ((element.roles.cache.find(r => r.id === "359382759434616832")) || (element.roles.cache.find(r => r.id === "463817515856822283")) || (element.roles.cache.find(r => r.id === "642181346197766165")) || (element.roles.cache.find(r => r.id === "526192023556980736")) || (element.roles.cache.find(r => r.id === "684173233754341552"))) {
element.addRole("463821375061360640");
} else {
element.removeRole("463821375061360640");
}
}
)
setTimeout(autosub, 900000);
}
autosub();
});

client.guild.members.cache.forEach(…

可能是因为你叫的是"公会"而不是"行会"吗?

[edit]顺便说一句,在我看来,v12中的"公会"返回的是GuildManager,而不是v11中的Collection,所以在使用"会员"之前,可能还需要进行额外的解包。这让我觉得你可能应该在"成员"之前叫"缓存",不是吗?

[编辑]。。。和"缓存"返回一个集合,你可能需要使用一个合适的"get(…("来获得公会。

discord.js

最新更新