【问题标题】:force update Discord API role info (Discord.js)强制更新 Discord API 角色信息 (Discord.js)
【发布时间】:2021-07-01 20:44:30
【问题描述】:

嘿,我是一名业余 JavaScript 程序员,我正在为我正在开发的机器人创建一个“临时静音”命令。但是,我遇到了一个我不知道如何解决的错误。

该错误并不是我的代码中的具体错误,但经过数小时的测试,我相信我已经弄清楚了: 发送命令后,discord.js 会立即存储 API 信息,例如角色。问题在于 tempmute 命令使用 setTimeout() 在静音时间到期后执行操作。其中一项操作是通过检查用户是否具有“静音”角色来检查用户是否已手动取消静音。这就是问题发生的地方。发送命令时存储的数据与真实数据不同,导致 if 语句每次都返回 false,即使它应该返回 true。

这是我的问题:是否有任何简单的方法可以使数据更新和存储真实数据。

例子:

你从 3 个苹果和 0 个橘子开始

该数据存储在 API 中

当您运行命令时,该数据会在命令执行期间存储在本地某处。

然后命令会拿走你的苹果,给你一个橙子

它存储了你原来有多少苹果和橙子供以后使用

5 秒后,程序将开始拿走那个橙子,并把你的苹果还给你

但在此之前,它会检查您的橙子是否已被其他人拿走,因此它会询问 API

但是 API 说你有 3 个苹果和 0 个橙子,而实际上你有 0 个苹果和 1 个橙子

所以你不会拿回你的苹果

有没有办法让程序更新它的数据并意识到你有 1 个橙色?

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    要从 API 更新最新数据,请等待 <Manager>.fetch()。在这种情况下,您想要 await <Member>.fetch() 然后访问它的角色属性。 (注意这需要在async function 中。)

    【讨论】:

    • 谢谢!我只需将其中的强制选项设置为 true 即可解决问题。
    猜你喜欢
    • 2021-11-16
    • 2020-11-23
    • 1970-01-01
    • 2020-07-30
    • 2020-11-02
    • 2021-03-14
    • 2021-06-05
    • 1970-01-01
    • 2021-02-06
    相关资源
    最近更新 更多