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

Discord机器人新用户入群自动分配身份组实现及权限报错解决

问题解决方案

discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions 错误由机器人权限不足、角色层级不够、必要网关意图未开启三类原因导致,按以下步骤排查即可解决:

1. 开启必要网关意图

最新版Discord.py要求监听成员加入事件必须开启成员相关意图:

  • 进入Discord开发者平台对应Bot的设置页,找到Privileged Gateway Intents分区,开启Server Members Intent开关
  • 代码初始化Client时必须显式声明开启成员意图,示例如下:
import discord
# 显式配置intents
intents = discord.Intents.default()
intents.members = True
client = discord.Client(intents=intents)

2. 开启角色管理权限

给机器人在服务器中的对应角色开启Manage Roles(管理角色)权限,这是机器人分配/移除角色的基础权限。

3. 调整角色层级(核心问题)

Discord角色权限规则为:角色仅可管理层级低于自身的角色。进入服务器角色管理页,将机器人对应的角色拖拽到所有你需要它分配的目标角色的上方,即可解决层级不足的问题。

4. 代码优化

你提供的getGuild方法存在缩进错误,同时缺少空值判断容易触发异常,优化后参考代码如下:

GUILD_NAME = "替换为你的服务器名称"
TARGET_ROLE_NAME = "ExampleRole"

def getGuild():
    for guild in client.guilds:
        if guild.name == GUILD_NAME:
            return guild
    return None

@client.event
async def on_member_join(member):
    guild = getGuild()
    if not guild:
        return
    role = discord.utils.get(guild.roles, name=TARGET_ROLE_NAME)
    if not role:
        return
    try:
        await member.add_roles(role)
    except discord.Forbidden:
        print(f"分配角色失败,请检查机器人权限与角色层级")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:54:02