【问题标题】:Removing every role from a user discord.py从用户 discord.py 中删除每个角色
【发布时间】:2021-07-31 18:46:05
【问题描述】:

我想在我的服务器上建立一个禁止申诉系统。我想删除某人的每一个角色,并给他们[Banned] 角色。我不能像为所有成员角色做的那样,因为有很多角色,甚至是每天都会创建和删除的一些自定义角色。

member_role = get(user.guild.roles, name="『✅』· ????????????????????????")
await user.remove_roles(member_role, reason=None, atomic=True)

我试过这个:discord.py trying to remove all roles from a user,但没用。也试过这个:

for role in user.roles:
    if role.name == '[Banned]':
        pass
    else:
        await user.remove_roles(role)

但无法让它工作。 (我没有python或discord.py的经验)

所以。如何从用户中删除每个角色,而不仅仅是 member_role

@bot.command()
@commands.has_permissions(ban_members=True)
async def ban(ctx, user: discord.Member, *, reason=None):
  await asyncio.sleep(1)
  banned_role = get(user.guild.roles, name="[Banned]")
  await user.add_roles(banned_role, reason=None, atomic=True)
  member_role = get(user.guild.roles, name="『✅』· ????????????????????????")
  await user.remove_roles(member_role, reason=None, atomic=True)
  banemb = discord.Embed(title="Ban", description=f"{user.mention} a fost banat/a. ", colour=discord.Colour.dark_red())
  banemb.add_field(name="Motiv:", value=reason, inline=False)
  await ctx.send(embed=banemb)

【问题讨论】:

  • 如果您不了解 Python 或 discord.py,那么我会先阅读文档或观看教程。如果现在有人给你解释一件事,那你根本就不懂?
  • 我是一周前开始的,我可以做一些事情..我可以说我有一个很好的机器人,有很多实用程序。但是我被这个软禁令困了一天,我无法绕过它。

标签: python discord discord.py


【解决方案1】:

您无法通过这种方式获取角色列表。

要删除用户的所有角色,您必须对其应用edit 并提供一个空的角色列表。

它还会更改代码的顺序,因为您首先必须删除然后将角色重新分配给用户。

看看下面的代码:

@bot.command()
@commands.has_permissions(ban_members=True)
async def ban(ctx, user: discord.Member, *, reason=None):
    await asyncio.sleep(1)
    banned_role = discord.utils.get(user.guild.roles, name="[Banned]")
    await user.edit(roles=[]) # Remove all roles
    await user.add_roles(banned_role, reason=None) # Assign the new role
    banemb = discord.Embed(title="Ban", description=f"{user.mention} a fost banat/a. ",
                           colour=discord.Colour.dark_red())
    banemb.add_field(name="Motiv:", value=reason, inline=False)
    await ctx.send(embed=banemb)

我已从代码中更改/删除了一些内容。当然,您必须根据自己的意愿再次添加它们。

【讨论】:

    猜你喜欢
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 2021-04-01
    • 2019-02-12
    • 1970-01-01
    相关资源
    最近更新 更多