1

几乎,我很难在用户的 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!')}
    }
4

0 回答 0