bot如何从用户python中删除所有角色

Posted

技术标签:

【中文标题】bot如何从用户python中删除所有角色【英文标题】:How can bot remove all roles from users python 【发布时间】:2020-09-24 17:24:37 【问题描述】:

您好,我想知道如何从所有用户中删除所有角色。如果您有任何想法,请告诉我我已尝试过此代码,但没有成功。

@client.command(pass_context=True)
async def rl(ctx):
    guild=ctx.message.guild
    for member in tuple(guild.members):
        try:
            await removeRoles(all)
        except:
            continue

【问题讨论】:

【参考方案1】:

我不确定,是否有一次删除所有角色的功能。我会用两个 for 循环来解决它:

async def rl(ctx):
    async for member in ctx.guild.fetch_members():
        for role in member.roles:
            await member.remove_roles(role)

ctx.guild.fetch_members() 应该返回你的公会/服务器的所有成员对象。然后您可以一个接一个地删除所有角色。也许不是最好的方法,但它应该工作。只要确保 fetch_members() 有一个异步,因为它是一个异步迭代器。

【讨论】:

【参考方案2】:

removeRoles() 不是函数。我使用member.roles 获取discord.Role 的列表,然后将其解压缩到member.remove_roles()

此外,您不需要将其设为元组。

这是最终代码:

@client.command(pass_context=True)
async def rl(ctx):
    guild = ctx.message.guild
    for member in guild.members:
        try:
            roles = member.roles
            await member.remove_roles(*roles)
        except:
            continue

【讨论】:

以上是关于bot如何从用户python中删除所有角色的主要内容,如果未能解决你的问题,请参考以下文章

Discord Bot 删除特定频道中的消息

Discord bot 发送后删除消息

如何从用户 discord.js v12 中删除所有角色?

从用户 MVC 5 中删除所有角色

从用户中删除角色,然后将它们添加回 Discord.py(使用 Repl.it)

从角色获取所有成员仅返回 Bot 和发送命令的用户 [重复]