0

我正在尝试创建一个clearinventory命令,以便它通过提及删除玩家库存,或者如果没有提及它会删除您自己的库存,但我不断收到一个名为RangeError: Too many parameter values were provided这是代码:

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!`)

  }


}

我试图在变量 items 中指定项目,我也尝试在变量中指定项目,db.delete(items, 'car')但没有奏效

4

1 回答 1

0

我正在看这个,没有任何关于哪条线导致问题的上下文。

db.delete第一个参数接受一个字符串,该字符串是您设置的数据的键(目标的用户 ID)。在这种情况下,您传递items的实际上是一个具有格式{ items: [/* items */] }而不是字符串的对象。我假设您正在尝试删除玩家库存中的项目,在这种情况下,您可以执行以下任何一项操作:

  1. 完全删除玩家信息。您可以通过删除数据库中的该条目来做到这一点。如果您打算向同一个条目添加更多信息,我建议您改用第二个选项。
    // target.id is a string, so you can just use that here directly.
    db.delete(target.id);
  1. items通过设置为空数组来清除玩家的库存(仅) 。这利用了 quick.db 使用点符号的能力。
    // <target.id>.items, e.g. 1234567890987543212.items
    db.set(`${target.id}.items`, []);
于 2020-10-17T15:03:17.410 回答