允许用户“装备”拥有的角色

Posted

技术标签:

【中文标题】允许用户“装备”拥有的角色【英文标题】:Allowing a User to 'equip' an owned role 【发布时间】:2021-06-11 12:18:12 【问题描述】:

我在为我的 discord js 机器人创建命令时遇到问题。我希望允许用户装备他们购买的角色。例如,如果用户在他们的库存中有一个橙色角色和一个红色角色,并且当前装备了橙色角色,并且他们想要切换到红色角色,我希望这个命令来检查用户 是否有 他们库存中的红色角色,如果他们这样做,将橙色角色替换为红色作为他们的最高角色。我目前拥有的代码确实配备了所要求的角色,但不检查用户是否具有该角色,或删除最高角色。我不确定如何做到这一点,任何帮助都很好,谢谢! (数据库是quick.db)

代码:

    let user = message.author;
    let items = await db.fetch(message.author.id);
    let author = db.fetch(`items_$message.guild.id_$user.id`)

    if (args[0] == 'tan') 
   // if author has 'tan' role in inventory; equip this role, remove the current highest role  
    await message.guild.members.cache.get(user.id).roles.add('813153522760679444')
    message.guild.members.cache.get(user.id).roles.subtract(highest)
     //if not, send error

        

【问题讨论】:

【参考方案1】:

您可以使用MemberRoles#has 来检查成员是否具有特定角色。为此,您需要使用 message.member

let user = message.author;

// Same as let member = message.member
let  member   = message;

if (member.roles.cache.has('ROLE-ID-HERE'))
   // Code for member has the role
 else 
  // Code for member DOES NOT have the role

【讨论】:

啊,我明白了,这是否会检查数据库以查看用户是否具有角色?或者只是检查用户是否具有当前分配给他们的角色?抱歉,如果这是一个愚蠢的问题,我对此很陌生,哈哈 这会直接检查 Discord 成员的信息,如果他们分配了角色,则返回true,否则返回 false。 知道了,我应该可以检查 quick.db 的文档并从那里开始工作,谢谢 如果我的回答解决了您的问题,请点击计票附近的复选标记,以帮助将来遇到同样问题的人!

以上是关于允许用户“装备”拥有的角色的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress 用户角色只允许访问联系表 7

Oracle用户角色权限相关视图

多对多和自我参考表!获取用户拥有的所有角色。实体框架

请教Django的User/Group/Permission管理

查询oracl用户信息

Struts2 授权