检测成员是否有角色
Detect if member has a role
我正在构建一个 Discord 机器人,更具体地说,是一个 rolecolor 命令。我制作了此命令的一个版本,该版本有效。唯一的问题是它的效率极低,它需要 5 分钟才能响应。这是因为机器人在执行任何事情之前必须检查很多 'if' 语句和其他内容。该文件有 129K+ 行,我的整个编辑程序都滞后了。我现在有一个新的计划,可能会更有效率:
机器人检查成员是否有任何以“SRC -”开头的角色。 SRC 表示服务器角色颜色,只是每个角色都有的一个名称,专门用于装饰。我所有的 colorrole 名称都以“SRC - name”开头,如果它检测到任何名称,请将其删除。等待这个过程,然后添加新颜色。我有 205 个颜色角色。我可以做到:
message.guild.members.cache
.get(user.id)
.roles.remove(roleone);
message.guild.members.cache
.get(user.id)
.roles.remove(roletwo);
这行得通,但又一次,效率低下。 Discord 在删除和添加角色方面并不那么快。当我 运行 测试时,它没有给我任何错误。尽管如此,我还是认为出了什么问题,因为我的角色没有改变。当我 运行 进行调试并再次检查时,角色终于更新了。更新前只需要一段时间。我想让这个更有效率。以下是一些代码示例:
添加角色,删除角色后:
if (args[0] === "1") {
message.guild.members.cache
.get(user.id)
.roles.add(roleone);
message.channel.send(errmsg);
console.log(logmsg);
else if (args[0] === "2") //etc
所以我的问题是,有人知道如何检测成员是否有任何以 name
开头的角色,以便只能删除这些角色吗?
.remove()
takes either a RoleResolvable
,RoleResolvable
的数组,或 RoleResolvable
的 Collection
。您可以过滤角色并将其传递给
const member = message.guild.members.resolve(user.id)
const roles = member.roles.cache.filter(r => r.name.startsWith(`SRC -`))
await member.roles.remove(roles) // remove all roles from the member that start with "SRC -"
我正在构建一个 Discord 机器人,更具体地说,是一个 rolecolor 命令。我制作了此命令的一个版本,该版本有效。唯一的问题是它的效率极低,它需要 5 分钟才能响应。这是因为机器人在执行任何事情之前必须检查很多 'if' 语句和其他内容。该文件有 129K+ 行,我的整个编辑程序都滞后了。我现在有一个新的计划,可能会更有效率:
机器人检查成员是否有任何以“SRC -”开头的角色。 SRC 表示服务器角色颜色,只是每个角色都有的一个名称,专门用于装饰。我所有的 colorrole 名称都以“SRC - name”开头,如果它检测到任何名称,请将其删除。等待这个过程,然后添加新颜色。我有 205 个颜色角色。我可以做到:
message.guild.members.cache
.get(user.id)
.roles.remove(roleone);
message.guild.members.cache
.get(user.id)
.roles.remove(roletwo);
这行得通,但又一次,效率低下。 Discord 在删除和添加角色方面并不那么快。当我 运行 测试时,它没有给我任何错误。尽管如此,我还是认为出了什么问题,因为我的角色没有改变。当我 运行 进行调试并再次检查时,角色终于更新了。更新前只需要一段时间。我想让这个更有效率。以下是一些代码示例:
添加角色,删除角色后:
if (args[0] === "1") {
message.guild.members.cache
.get(user.id)
.roles.add(roleone);
message.channel.send(errmsg);
console.log(logmsg);
else if (args[0] === "2") //etc
所以我的问题是,有人知道如何检测成员是否有任何以 name
开头的角色,以便只能删除这些角色吗?
.remove()
takes either a RoleResolvable
,RoleResolvable
的数组,或 RoleResolvable
的 Collection
。您可以过滤角色并将其传递给
const member = message.guild.members.resolve(user.id)
const roles = member.roles.cache.filter(r => r.name.startsWith(`SRC -`))
await member.roles.remove(roles) // remove all roles from the member that start with "SRC -"