我发出了一个删除所有角色的命令,但当我使用它时,机器人会说我没有删除角色的权限,而它会执行什么操作

@bot.command()
@commands.has_permissions(manage_roles=True)
async def strip(ctx, member: discord.Member):
    try:
        await member.edit(roles=[])
        await ctx.send(f"All roles have been removed from {member.display_name}.")
    except discord.Forbidden:
        await ctx.send("I don't have permission to remove roles.")
    except discord.HTTPException:
        await ctx.send("Failed to remove roles.")

推荐答案

问题是,当您使用member.edit,然后将角色列表设置为空时,您的命令会try 从包含@Everyone的成员中删除所有角色.

所以我有两个解决方案给你: 首先:

@bot.command()
@commands.has_permissions(manage_roles=True)
async def strip(ctx:commands.Context,member:discord.Member):
    try:
        for i in member.roles:
            try:
                await member.remove_roles(i)
            except:
                print(f"Can't remove the role {i}")
        await ctx.send(f"Roles have been removed from {member.mention}")
    except discord.Forbidden:
        await ctx.send("You don't have permission")
    except discord.HTTPException:
        await ctx.send("Command failed")

第二个(与你的相似):

@bot.command()
@commands.has_permissions(manage_roles=True)
async def strip2(ctx:commands.Context, member: discord.Member):
    everyone = ctx.guild.default_role
    try:
        await member.edit(roles=[everyone])
        await ctx.send(f"All roles have been removed from {member.display_name}.")
    except discord.Forbidden:
        await ctx.send("I don't have permission to remove roles.")
    except discord.HTTPException:
        await ctx.send("Failed to remove roles.")

在第二种方法中,如果你在机器人上try 它,它不会起作用,因为机器人有分配给它们的角色,你不能移除它们. 然后,您应该这样定义该角色:

guild=ctx.guild
role = guild.get_role(ROLE_ID)

然后将角色粘贴到everyone之后或之前的列表中:

await member.edit(roles=[everyone,role]

请注意,如果您这样离开它,它会将机器人角色分配给您在其上使用命令的任何成员,所以只有在测试时才这样做,而不是从列表中删除role!如果你还需要什么,你可以在我的描述中找到我的discord用户!

Python相关问答推荐

模型序列化器中未调用现场验证器

如何防止Plotly在输出到PDF时减少行中的点数?

使用GEKKO在简单DTE系统中进行一致初始化

计算相同形状的两个张量的SSE损失

Python 3.12中的通用[T]类方法隐式类型检索

通过优化空间在Python中的饼图中添加标签

由于NEP 50,向uint 8添加-256的代码是否会在numpy 2中失败?

. str.替换pandas.series的方法未按预期工作

基于字符串匹配条件合并两个帧

try 将一行连接到Tensorflow中的矩阵

pyscript中的压痕问题

运输问题分支定界法&

在www.example.com中使用`package_data`包含不包含__init__. py的非Python文件

以逻辑方式获取自己的pyproject.toml依赖项

为什么Python内存中的列表大小与文档不匹配?

以异步方式填充Pandas 数据帧

Python将一个列值分割成多个列,并保持其余列相同

如何使用Azure Function将xlsb转换为xlsx?

数据框,如果值在范围内,则获取范围和

Seaborn散点图使用多个不同的标记而不是点