You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用quick db列出已存储数据?现有Discord机器人代码无法实现列表功能

现有代码语法修复

你提供的add命令代码存在多余闭包符号的语法问题,修正后基础代码如下:

client.on("message", message => {
    if (!message.guild) return;
    // add 命令逻辑
    if (message.content.startsWith(prefix + "add")) {
        let user = message.mentions.users.first()
        if (!user) return message.channel.send('**:x: You have to mention someone first.**')
        if (db.fetch(`owner_${user.id}`)) return message.channel.send("**This user is already exists**")
        
        db.set(`owner_${user.id}`, true)
        message.channel.send(new Discord.MessageEmbed().setColor('#4C6E70').setDescription(`**${user} Done.**`)).then(async msg => {
            msg.react("✅")
        })
    }
    // list 命令逻辑插入到此处
});

list 命令实现

你存储的用户数据均以owner_为键前缀,直接筛选出所有符合格式的键拼接为列表输出即可,以下是适配quick.db等常用存储库的实现代码,插入到上述message事件回调内即可:

if (message.content.startsWith(prefix + "list")) {
    // 筛选所有已存储的owner数据
    const ownerEntries = db.all().filter(entry => entry.ID.startsWith('owner_'))
    if (ownerEntries.length === 0) {
        return message.channel.send('**:x: 暂无已存储的用户数据**')
    }
    // 转换为用户提及格式列表
    const userList = ownerEntries.map(entry => {
        const userId = entry.ID.split('_')[1]
        return `- <@${userId}> (ID: ${userId})`
    }).join('\n')
    // 嵌入消息输出
    message.channel.send(new Discord.MessageEmbed()
        .setColor('#4C6E70')
        .setTitle('已存储用户列表')
        .setDescription(userList)
    )
}

适配说明

  • 若使用非quick.db的存储方案,将db.all()替换为对应存储库获取全量键值对的方法即可
  • 无需@提及用户的话,删除<@${userId}>相关代码即可

内容的提问来源于stack exchange,提问作者Sarite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 03:30:01