有没有一种简单的方法可以使用 Discord.JS 机器人批量删除用户的角色?



我有一个带有链接角色的服务器验证机器人。我目前已经让它一一手动删除所有角色,但这当然效率低下,它仅适用于大约 5/6 个角色,然后停止几秒钟并继续。我想尝试的是某种discUser.removeRole之类的东西,如果可能的话。

或者有没有办法只在人有角色时才尝试删除角色?我的代码只是为每个绑定的等级做discuser.removeRole。

更新

我收到了有关此问题的通知,因此想为发现此问题的其他人使用新的解决方案对其进行更新:

  • 创建角色 ID 表。(例如var giveThese = [](
  • guildMember.roles.add(giveThese,"Reason / Description"

要删除,您可以将角色.添加替换为角色.删除

根据我从这个问题中了解到的情况,你正在循环介绍公会的每个成员,并从他们每个人身上删除角色。

对我来说,最有效的方法是从角色中获取拥有它的成员列表(带有Role.members(,然后循环浏览该列表。

你可以做这样的事情:

let roleID = '1234...'
let role = guild.roles.fetch(roleID).then(role => {
role.members.forEach(member => member.roles.remove(roleID))
})

这是我能想到的最有效的方法,因为 Discord 目前无法从用户那里"批量删除"角色。

我能够通过循环访问保存所有角色数据的外部 json 文件来找出解决方案。

在尝试删除角色的主文件中,使用 for in 循环,该循环遍历包含所有角色名称的 json 文件。在循环中将删除角色方法放在那里。

下面是 .json 文件的示例:

[
{
"role_name": "very slightly red",
"color": "#ffcccc",
"color_tier": "vs"
},
{
"role_name": "very slightly orange",
"color": "#ffedcc",
"color_tier": "vs"
},
{
"role_name": "very slightly yellow",
"color": "#ffffcc",
"color_tier": "vs"
}
]

以下是批量删除角色的代码:

const vs_json = require("../vs_colors.json");

for (var key in vs_json) {
if (vs_json.hasOwnProperty(key)) {
console.log(
key +
" -> " +
vs_json[key].role_name
);
memberData.roles.remove(
getRole(
vs_json[key].role_name
)
);
}
}

最新更新