javascript - 强制更新 Discord API 角色信息 (Discord.js)
问题描述
嘿,所以我是一名业余 JavaScript 程序员,我正在为我正在开发的机器人创建一个“临时静音”命令。但是,我遇到了一个我不知道如何解决的错误。
该错误并非专门出现在我的代码中,但经过数小时的测试,我相信我已经弄清楚了:discord.js 会在发送命令后立即存储 API 信息,例如角色。问题在于 tempmute 命令使用 setTimeout() 在静音时间到期后执行操作。其中一项操作是通过检查用户是否具有“静音”角色来检查用户是否已手动取消静音。这就是问题发生的地方。发送命令时存储的数据与真实数据不同,导致 if 语句每次都返回 false,即使它应该返回 true。
这是我的问题:是否有任何简单的方法可以使数据更新和存储真实数据。
例子:
你从 3 个苹果和 0 个橘子开始
该数据存储在 API 中
当您运行该命令时,该数据会在命令执行期间本地存储在某处。
然后命令拿走你的苹果,给你一个橙子
它存储了你原来有多少苹果和橙子供以后使用
5 秒后,程序将开始把那个橙子拿走,把你的苹果还给你
但在它这样做之前,它会检查你的橙子是否已经被其他人拿走了,所以它会询问 API
但是 API 说你有 3 个苹果和 0 个橙子,而实际上你有 0 个苹果和 1 个橙子
所以你不会拿回你的苹果
有没有办法让程序更新它的数据并意识到你有 1 个橙色?
解决方案
要从 API 更新最新数据,请等待<Manager>.fetch()
。在这种情况下,您想要await <Member>.fetch()
访问它的角色属性。(注意这需要在async function
.)
推荐阅读
- ios - XD 和 Swift 中的行距映射
- php - 如何通过 Laravel 后端将身份验证令牌从 Firebase 代理到客户端
- javascript - 使用javascript合并排序数组的问题
- javascript - 如何填充地图
使用输入值 - python - 只返回python中的唯一元素
- php - 警告:get_headers(): SSL operation failed with code 1 on online free subdomaine,解决方案?
- c# - 两条路线的比较
- r - 根据来自 df 的值过滤行 +/- R 中的另一个值
- powerbi - 根据 Power BI 中的卷,将所选客户端与除所选客户端之外的 TOP N 客户端进行比较
- flutter - 如何在 FutureBuilder 中正确使用 setState?