如何使用 Discord 机器人从列表中删除角色?

How to remove role from list with Discord bot?

我有一个这样的用户名列表:

['Username#0001', 'Username#0002'......]

并且这些用户具有 "x" 角色。
我想使用机器人命令从这些用户中删除 "x" 角色。
有什么想法吗?

我想你搜索过这个

我们先获取公会中的所有用户。我们遍历用户并获得用户拥有的所有角色。当我们拥有用户拥有的所有角色时,我们将遍历角色。然后我们检查角色的名称是否与我们要删除的角色的名称相同。如果它具有相同的名称,我们将其从用户中删除。

role_to_remove = "NAME OF ROLE"
for user in ctx.guild.members:
    for role in user.roles:
        if role.name == role_to_remove:
            await user.remove_roles(role)

此代码将检查服务器中是否有任何用户具有您要删除的角色。

如果您有字符串格式的用户名列表。您首先要将它们转换为成员对象,以便您可以执行前面描述的操作。您可以使用以下方法执行此操作:

userlist = ['Username#0001', 'Username#0002'......]
new_userlist = []
for users in userlist:
    new_userlist.append(ctx.guild.get_member_named(users))
userlist = new_userlist

转换用户列表后,将 ctx.guild.members 替换为新的用户列表。

确保阅读文档:

remove roles

get member by name

get member by user id

如果您只有角色名称,则需要完成 Guild.roles for the server in question to get the Role object, e.g. by using the get utility function. You'd then need to go similarly through Guild.members and get the Member object for each username and discriminator. Alternatively, Guild.get_member_named 为您完成的操作。 然后,对于每个 Member 对象,您可以使用 Member.remove_roles 并将 Role 对象传递给它以从成员中删除角色。