如何使用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
相关产品推荐
相关产品推荐

