首页 > 解决方案 > 如何从每个服务器中的用户中删除角色?不和谐.py

问题描述

我正在制作一个验证机器人,我想做一个命令,如果有人取消他们的 Roblox 帐户的链接,那么它会在他们所在的所有服务器中从他们那里删除经过验证的角色。我知道如何在这样的单个服务器中执行此操作:

role1 = discord.utils.get(ctx.guild.roles, name='Verified')
await ctx.author.remove_roles(role1)   

但是我将如何在该成员与机器人一起使用的所有服务器上执行此操作。谢谢!!!

标签: discorddiscord.pydiscord.py-rewrite

解决方案


每个公会的角色是唯一的,您需要遍历每个公会,获取成员和角色,然后将其删除。

for guild in bot.guilds:
    member = guild.get_member(member_id) # Change the ID accordingly
  
    if member is not None:
        role = discord.utils.get(guild.roles, name='Verified')

        await member.remove_roles(role)

此代码循环遍历机器人所在的每个公会,尝试获取成员,如果它不是非类型(因为成员不必与机器人共享该特定公会),它会获取角色 obj 并将其删除。

参考:

你还需要intents.guildsintents.members


推荐阅读