Discord.js错误地表示没有用户具有该角色

时间:2020-11-04 04:32:55

标签: javascript discord.js

我有一个机器人(使用discord.js 12.2.0),该机器人可以让人们通过创建角色“ color_ [hexcode]”并赋予他们该角色来选择自己的个人资料颜色。由于人们可以改变主意,因此以下代码在有人选择新颜色后几秒钟运行:

var rolesToDelete = [];
for (var i = 0; i < guild.roles.cache.size; i++) {
  var currentRole = guild.roles.cache.array()[i];
  if (currentRole.name.startsWith("color_") && currentRole.members.size === 0) {
    rolesToDelete.push(currentRole);
  }
}
for (var i = 0; i < rolesToDelete.length; i++) {
  rolesToDelete[i].delete();
}

这种方法已经运行了好几年,但是前一天有人改变了颜色,我的机器人随后删除了当前正在使用的中的十几个角色。奇怪的是,频道中最活跃的发布者并没有受到影响,但是一些没聊了一段时间的人被取消了职位。

问题:这里发生了什么,或者我应该做些什么不同的事情? discord.js documentation for Role.members提到它返回缓存的用户。我的漫游器已在大约3天前重新启动,我想知道也许被删除角色的人是大约3天没有在行会上谈论过的人吗?如果是这个问题,在运行此清理代码之前如何强制更新缓存?

非常感谢!

0 个答案:

没有答案