如何获取项目的引用以便我可以在 clearinventory 命令中删除它们
How do I get reference the items so I can delete them in a clearinventory command
我正在尝试执行 clearinventory 命令,以便它通过提及删除玩家库存,或者如果没有提及,它会删除您自己的库存,但我一直收到一个名为RangeError:提供的参数值太多这是代码:
const db = require('quick.db');
const Discord = require('discord.js');
module.exports = {
name: "clearinventory",
descrition: "clear a players inventory",
async run(client, message, run) {
let target = message.mentions.users.first() || message.author;
let items = await db.fetch(target.id, {
items: []
});
if (!message.member.hasPermission("ADMINISTRATOR")) return message.channel.send('You can\'t use that!')
db.delete(items);
message.channel.send(`${target}\'s inventory was successfully cleared!`)
}
}
我试过在可变项目中指定项目,我也尝试在 db.delete(items, 'car')
中指定项目,但那没有用
我在没有任何上下文的情况下查看此问题是哪一行导致了问题。
db.delete
第一个参数是一个字符串,这个字符串是你设置的数据的键(目标的用户 ID)。在本例中,您传递的 items
实际上是一个格式为 { items: [/* items */] }
的对象,而不是字符串。我假设您正在尝试删除玩家物品栏中的物品,在这种情况下,您可以执行以下两种操作之一:
- 彻底删除玩家信息。您可以通过删除数据库中的该条目来做到这一点。如果您计划向同一条目添加更多信息,我建议您改用第二个选项。
// target.id is a string, so you can just use that here directly.
db.delete(target.id);
- 通过将
items
设置为空数组来(仅)清除玩家的物品栏。这利用了 quick.db 使用点符号的能力。
// <target.id>.items, e.g. 1234567890987543212.items
db.set(`${target.id}.items`, []);
我正在尝试执行 clearinventory 命令,以便它通过提及删除玩家库存,或者如果没有提及,它会删除您自己的库存,但我一直收到一个名为RangeError:提供的参数值太多这是代码:
const db = require('quick.db');
const Discord = require('discord.js');
module.exports = {
name: "clearinventory",
descrition: "clear a players inventory",
async run(client, message, run) {
let target = message.mentions.users.first() || message.author;
let items = await db.fetch(target.id, {
items: []
});
if (!message.member.hasPermission("ADMINISTRATOR")) return message.channel.send('You can\'t use that!')
db.delete(items);
message.channel.send(`${target}\'s inventory was successfully cleared!`)
}
}
我试过在可变项目中指定项目,我也尝试在 db.delete(items, 'car')
中指定项目,但那没有用
我在没有任何上下文的情况下查看此问题是哪一行导致了问题。
db.delete
第一个参数是一个字符串,这个字符串是你设置的数据的键(目标的用户 ID)。在本例中,您传递的 items
实际上是一个格式为 { items: [/* items */] }
的对象,而不是字符串。我假设您正在尝试删除玩家物品栏中的物品,在这种情况下,您可以执行以下两种操作之一:
- 彻底删除玩家信息。您可以通过删除数据库中的该条目来做到这一点。如果您计划向同一条目添加更多信息,我建议您改用第二个选项。
// target.id is a string, so you can just use that here directly.
db.delete(target.id);
- 通过将
items
设置为空数组来(仅)清除玩家的物品栏。这利用了 quick.db 使用点符号的能力。
// <target.id>.items, e.g. 1234567890987543212.items
db.set(`${target.id}.items`, []);