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

为何拥有管理员权限且启用全部Intents的Discord Bot无法踢出用户

问题原因

报错403 Forbidden (error code: 50013): Missing Permissions属于Discord API明确返回的权限缺失问题,你已经开启全部Intents、给了Bot管理员权限仍报错,可按照以下优先级排查:

  • 首先检查服务器角色层级:进入服务器设置→角色,将Bot对应的角色拖拽到所有你需要踢出的用户所属角色的上方,保存设置。Discord的权限规则为低层级角色无法对高层级角色执行任何管理操作,哪怕Bot拥有管理员权限也不例外,这是最常见的触发原因。
  • 确认你尝试踢出的目标不是服务器所有者,也不是拥有比Bot更高角色层级的管理员,这类目标所有普通Bot都无法执行踢出操作。
  • 重新生成Bot邀请链接,确认邀请时勾选了Kick Members权限(哪怕你给了管理员权限也可以单独勾选验证),邀请链接可从Discord开发者门户的OAuth2→URL Generator页面生成,scope选择bot,权限勾选Kick Members及Administrator后重新邀请Bot进入服务器。
  • 代码层面可增加权限校验和异常捕获,避免直接抛出未处理异常,示例修改代码:
intents = discord.Intents.all()
bot = Bot("$",help_command=None,intents=intents)

@bot.command()
async def k(ctx, member: discord.Member):
    # 先判断Bot自身是否有踢出权限
    if not ctx.guild.me.guild_permissions.kick_members:
        await ctx.send("我没有踢出用户的权限")
        return
    # 判断要踢出的用户权限是否高于Bot
    if member.top_role >= ctx.guild.me.top_role:
        await ctx.send("无法踢出权限高于或等于我的用户")
        return
    # 判断命令执行者是否有权限(可选,避免普通用户滥用命令)
    if not ctx.author.guild_permissions.kick_members:
        await ctx.send("你没有使用踢出命令的权限")
        return
    try:
        await member.kick()
        await ctx.send(f"已踢出用户 {member.mention}")
    except Exception as e:
        await ctx.send(f"踢出失败,错误:{str(e)}")

报错截图1


内容的提问来源于stack exchange,提问作者DevER-M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:36:01