我有一个这样的用户名列表;
['Username#0001', 'Username#0002'......]
这些用户具有“ x”角色。 我想使用bot命令从这些用户中删除“ x”角色。 有想法吗?
答案 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
替换为新的用户列表。
请务必阅读文档: