【问题标题】: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
}
        

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案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 的文档并从那里开始工作,谢谢
    • 如果我的回答解决了您的问题,请点击计票附近的复选标记,以帮助将来遇到同样问题的人!
    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 2011-07-09
    • 2019-04-02
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多