如何使用Discord bot从列表中删除角色?

时间:2019-12-30 16:41:01

标签: python discord.py discord.py-rewrite

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

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

这些用户具有“ x”角色。 我想使用bot命令从这些用户中删除“ x”角色。 有想法吗?

2 个答案:

答案 0 :(得分:1)

如果您仅具有角色名称,则需要通过Guild.roles来访问所涉及的服务器,以获取Role对象,例如通过使用get实用程序功能。然后,您需要类似地遍历Guild.members,并为每个用户名和区分符获取Member对象。或者,Guild.get_member_named为您完成此操作。 然后,对于每个Member对象,您可以使用Member.remove_roles并将Role对象传递给它,以从成员中删除角色。

答案 1 :(得分:0)

我认为您是在搜索

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

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