簡體   English   中英

條件角色 Discord.js

[英]Conditional Role Discord.js

基本上,我想做的是擁有它,這樣如果我的服務器中的成員發送消息,他們就會獲得“活動”角色。 我已經有另一個機器人這樣做了。 問題是,我想為尚未發送消息的任何人分配“非活動”角色。 我設置它的方式(我認為)是,當成員的角色發生變化時,它會檢查該成員是否具有“活動”角色並從中刪除“非活動”角色。 相反,如果“活動”角色被刪除,它應該添加“非活動”角色。

    client.on("guildMemberUpdate", (oldMember, newMember) => {
  //Has Acitve, remove Inactive.
  if (newMember.roles.cache.has(971885336680616007)) {
    newMember.roles.remove(971903053626241034);
  }
  //Doesn't have Active, add Inactive.
  elseif (!newMember.roles.cache.has(971885336680616007))
    newMember.roles.add(971903053626241034)
}) 

這是我正在使用的代碼,但我覺得我一定做錯了什么,因為我無法讓它工作

您可能無法添加角色以及可能出現錯誤的原因是,在檢查成員是否具有角色時,您傳遞的是一個數字,而不是傳遞一個字符串。 這樣做可能會導致一個錯誤: TypeError [INVALID_TYPE]: Supplied roles is not a Role, Snowflake or Array or Collection of Roles or Snowflakes. 因此,要修復您的錯誤,您所要做的就是將所有角色 ID 作為字符串傳遞,這樣您的最終代碼將如下所示:

client.on("guildMemberUpdate", (oldMember, newMember) => {
    // User has active role, remove inactive role
    if (newMember.roles.cache.has('971885336680616007')) {
        newMember.roles.remove('971903053626241034');
    }
    // User doesn't have active role, add inactive role
    else if (!newMember.roles.cache.has('971885336680616007')) {
        newMember.roles.add('971903053626241034')
    }
}) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM