You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.py移除所有角色命令权限问题的解决方法

解决Discord.py移除角色权限不足的问题
  • 调整机器人角色层级
    Discord的权限系统是按角色层级判定的,机器人的角色必须高于目标用户的所有角色(包括其最高角色),否则无法移除对方的角色。去服务器设置的「角色」页面,把机器人的角色拖到所有需要移除的角色上方即可。

  • 确认机器人的权限配置
    确保机器人已被授予「管理角色」权限——可以在服务器全局设置里开启,也可以针对命令使用的频道单独配置。操作路径:服务器设置→「成员」→找到机器人→编辑权限,勾选「管理角色」选项。

  • 注意特殊角色情况
    如果目标用户拥有「管理员」权限,除非机器人本身也有管理员权限(不推荐,尽量遵循最小权限原则),否则无法移除其角色。另外,@everyone是服务器默认角色,代码里roles=[]会自动保留该角色,属于正常现象,无需处理。

  • 代码可添加前置检查(可选)
    提前判断机器人角色层级是否足够,避免走到异常处理流程,优化后的代码如下:

    @bot.command()
    @commands.has_permissions(manage_roles=True)
    async def strip(ctx, member: discord.Member):
        # 检查机器人角色是否高于目标用户的最高角色
        if ctx.guild.me.top_role <= member.top_role:
            await ctx.send("我的角色层级不够,没法移除这个用户的角色。")
            return
        try:
            await member.edit(roles=[])
            await ctx.send(f"已经把 {member.display_name} 的所有角色都移除了。")
        except discord.Forbidden:
            await ctx.send("我没有权限移除角色。")
        except discord.HTTPException:
            await ctx.send("移除角色失败了。")
    

内容的提问来源于stack exchange,提问作者Hshe Jdjr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 04:03:25