[英]Having issue assigning roles on guildMemberUpdate discord.js
我目前正在為具有第三方年齡驗證的服務器開發 discord 機器人,在他們更新后添加了經過驗證的角色。
然后,我想根據單獨的識別角色應用另一個角色。 但是我一直遇到部分代碼未定義或不是 function 的問題,所以我真的被卡住了。
bot.on('guildMemberUpdate', (oldMember, newMember) => {
if(oldMember.roles !== newMember.roles) {
if(newMember.roles.cache.some(r => r.name === "Verified")) {
if(newMember.roles.cache.some(r => r.name === "Workshop Devotee")) {
let role1 = newMember.guild.roles.cache.some(role => role.name === "Verified Workshop Devotee");
newMember.guild.cache.get(newMember.author.id).roles.add(role1);
}
else if (newMember.roles.cache.some(r => r.name === "Workshop Helpers")) {
let role2 = newMember.guild.roles.cache.some(role => role.name === "Verified Workshop Helpers");
newMember.guild.cache.get(newMember.author.id).roles.add(role2);
}
else if (newMember.roles.cache.some(r => r.name === "Workshop Supporters")) {
let role3 = newMember.guild.roles.cache.some(role => role.name === "Verified Workshop Supporters");
newMember.guild.cache.get(newMember.author.id).roles.add(role3);
}
else{
return;
}
此代碼有兩個主要錯誤,這就是它不起作用的原因。
首先,您使用.some()
方法獲取role
object,但是.some()
僅檢查列表中是否存在項目,並返回 true 或 false。 相反,您應該使用.get()
方法來獲取角色。
let role1 = newMember.guild.roles.cache.get(role => role.name === "Verified Workshop Devotee");
我可以看到的另一個錯誤是您讓member
object 添加角色。 您出於某種原因嘗試使用成員 ID 的newMember.author.id
獲取guild
object,因此這將返回錯誤。 相反,你可以寫
newMember.guild.members.cache.get(newMember.author.id).roles.add(role1);
但是,此代碼也是多余的,因為您已經擁有要添加角色的成員的member
object - 它的newMember
。 因此,您可以改為編寫
newMember.roles.add(role1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.