【问题标题】:Discord.js putting space between inventory itemsDiscord.js 在库存项目之间放置空间
【发布时间】:2026-02-22 00:05:02
【问题描述】:

我正在使用 quick.db 我想在每个项目之间留一点空间,因为如果用户购买了两个项目,这些项目会像“item1,item2”一样彼此相邻有没有办法在它们之间放置空间?

库存命令的代码

 let hats = db.get(`${message.author.id}.userHats`)
        if(hats === undefined) hats = "none"
        let outfits = db.get(`${message.author.id}.userOutfits`)
        if(outfits === undefined) outfits = "none"
        let pets = db.get(`${message.author.id}.userPets`)
        if(pets === undefined) pets = "none"

        const embed = new Discord.MessageEmbed()
        .setTitle(`${message.author.tag}\'s inventory`)
        .addField(`Hats`, `${hats}` || "none")
        .addField(`Outfits`, `${outfits}` || "none")
        .addField(`Pets`, `${pets}` || "none")
        .setTimestamp()
        .setColor('#00ffff')
        .setFooter(message.member.user.tag, message.author.avatarURL());
        message.channel.send(embed)

我如何将项目推送到“userHats”中

db.push(`${message.author.id}.userHats`, args[1])

args[1] 是项目名称

在 inv 命令中的项目之间放置空格是否需要不同的存储方式?

编辑:我将数据存储在 sqlite 文件中,如下所示:

{
  balance: 2558,
  bank: 1898,
  skin: 'cyan',
  userHats: [ 'plaguedoctor', 'egg' ]
}

我尝试使用 .join() 并发现它并给出错误“TypeError: suits.join is not a function”,因为“outfits”用户没有任何它,他有“帽子”删除“服装”和“宠物”使命令有效,因为他只有帽子,有没有办法让它忽略空的或未定义的?我试过if(outfits === undefined) outfits = "none",但它似乎不起作用并给出了同样的错误 更新代码:

let hats = db.get(`${message.author.id}.userHats`)
        if(hats === undefined) hats = "none"
        let hats2 = hats.join(", ")
        
        let outfits = db.get(`${message.author.id}.userOutfits`)
        if(outfits === undefined) outfits = "none"
        let outfits2 = outfits.join(", ")
        
        let pets = db.get(`${message.author.id}.userPets`)
        if(pets === undefined) pets = "none"
        let pets2 = pets.join(", ")

【问题讨论】:

    标签: node.js discord.js quick.db


    【解决方案1】:

    如果项目存储为数组,例如:

    outfits = [ outfit1, outfit2]
    

    然后您可以使用outfits.join(', ') 将数组的项目与每个项目之间的, 连接起来。

    或者,如果您的数据库将其存储为字符串,您可以这样做:

    outfits.replace(',', ', ')
    

    这会将字符串中, 的第一个实例替换为, 。 但是,由于可能有很多项目,您需要使用正则表达式替换逗号的 all 实例,因此看起来像:

    outfits.replace(/,/g, ', ')
    

    无论哪种方式,都无需担心重组所有数据,因为有多种方法可以让它按照您想要的方式显示!

    【讨论】:

    • 尝试了其中三个,他们给了我错误“outfits.replace 不是函数”和“outfits.join 不是函数”的 join() 之一,我还用数据的存储方式