嘿,我是一名业余 JavaScript 程序员,我希望为我正在开发的机器人创建一个“临时静音”命令。但是,我遇到了一个我不知道如何解决的错误。
该错误不是我的代码中的特定错误,但经过数小时的测试,我相信我已经弄明白了: discord.js 会在命令发送后立即存储 API 信息,例如角色。问题在于 tempmute 命令使用 setTimeout() 在静音时间到期后执行操作。这些操作之一是通过检查用户是否具有“静音”角色来检查用户是否已被手动取消静音。这就是问题发生的地方。命令发送时存储的数据与实际数据不同,导致 if 语句每次都返回 false,即使它应该返回 true。
这是我的问题:是否有任何简单的方法可以使数据更新并存储真实数据。
示例:
你从 3 个苹果和 0 个橙子开始
该数据存储在 API 中
当您运行该命令时,该数据会在该命令的持续时间内存储在本地某处。
然后命令会拿走你的苹果,并给你一个橙子
它存储你原来有多少苹果和橙子供以后使用
5 秒后,程序会开始把那个橙子拿走,把你的苹果还给你
但在此之前,它会检查您的橙子是否已被其他人拿走,因此它会询问 API
但 API 说你有 3 个苹果和 0 个橙子,而实际上你有 0 个苹果和 1 个橙子
所以你没有拿回你的苹果
有什么办法可以让程序更新它的数据并意识到你有 1 个橙子吗?
答案 0 :(得分:0)
要从 API 更新最新数据,请等待 --verbose
。在这种情况下,您希望 <Manager>.fetch()
然后访问它的角色属性。 (请注意,这需要在 await <Member>.fetch()
中。)