繁体   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