如何获取项目的参考,以便我可以在 clearinventory 命令中删除它们

Posted

技术标签:

【中文标题】如何获取项目的参考,以便我可以在 clearinventory 命令中删除它们【英文标题】:How do I get reference the items so I can delete them in a clearinventory command 【发布时间】:2021-01-31 16:37:43 【问题描述】:

我正在尝试执行 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!`)

  



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

【问题讨论】:

【参考方案1】:

我正在查看此问题,但没有任何关于哪条线路导致问题的上下文。

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 命令中删除它们的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 UIPickerView 中组件的位置?

在接收端获取 Chromecast 中的队列项目

在 Xcode 中,如何创建一个新工作区并向其中添加 1 个项目,以便我可以看到该项目及其文件?

如何在 Android 中获取用户的家庭/工作位置

如何设置 sbt 以便在联机时获取所有必要的依赖项,然后让我脱机工作?

如何对齐框项目以便按钮[重复]