如何在用户的 Quick.db Inventory 中搜索特定项目

问题描述

几乎,我很难在用户的 Quick.db 清单中找到一个角色。我想这样做是为了:允许他们只购买一次角色;允许他们仅在 在他们的库存中找到拥有的角色时才装备它。问题是用户可以多次购买角色,并且即使角色没有被拥有也可以装备。我相信我遇到的问题是 if(db.has(message.author.id + '.items' + 'hot rod red'))(可能是因为我正在搜索角色而不是纯文本项目?),但也可能是其他内容

此时我完全迷失了想法,没有任何想法,感谢您的帮助!

装备角色的代码

    let user = message.guild.members.cache.get(message.author.id)
    let items = await db.fetch(message.author.id);
    if(items === null) items = "nothing"
    let author = db.get(`items_${message.guild.id}_${user.id}`)


  if (args[0] == 'red') {
    let rejectEmbed = new discord.MessageEmbed()
    .setDescription('You do not own this role!');
    
    if(db.has(message.author.id + '.items' + 'hot rod red')){
      if (message.member.roles.cache.some(role => role.name === 'hot rod red')) {
        let embed = new discord.MessageEmbed().setDescription('You already have this role!');
        return message.channel.send(embed); }
       
    else {
        await message.guild.members.cache.get(user.id).roles.add('733373020491481219');
          let embed = new discord.MessageEmbed().setDescription(`You Now have the ${message.guild.roles.cache.get('733373020491481219')} role!`);
          message.channel.send(embed);
          user.roles.remove(user.roles.highest); 
        } 
      
      } else return message.channel.send(rejectEmbed)            
}


购买命令代码

        let Embed = new discord.MessageEmbed()
            .setColor("#FFFFFF")
            .setDescription(`> :no_entry_sign:  You need 20,000 credits to purchase ${message.guild.roles.cache.get('733373020491481219')}`);
            if (message.member.roles.cache.some(role => role.name === "level 25") ||(message.member.roles.cache.some(role => role.name === "frequent flyers"))){
     
        if (console.log(db.has(message.author.id,'hot rod red'))){
        let EmbedError = new discord.MessageEmbed()     
        .setColor('#FFFFFF')
        .setDescription(`:no_entry_sign: You already own ${message.guild.roles.cache.get('733373020491481219')} !`);
               return message.channel.send(EmbedError)
    
            }else
                if (amount < 20000) return message.channel.send(Embed)
                let Embed3 = new discord.MessageEmbed()
                .setColor("#FFFFFF")
                .setDescription(`:white_check_mark: You bought ${message.guild.roles.cache.get('733373020491481219')} for 20,000 credits!`);
                message.channel.send(Embed3)
                db.subtract(`money_${message.guild.id}_${user.id}`,20000)

        db.push(message.author.id,`${message.guild.roles.cache.get('733373020491481219')}`);
        db.fetch(`hot_rod_red${message.guild.id}_${user.id}`);
        db.set(`hot_rod_red_${message.guild.id}_${user.id}`,true)
        
        }else {return message.channel.send('You do not have the required level to buy this role!')}
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)