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

Discord机器人无法为新加入成员分配角色,是什么原因导致的?

Discord机器人新成员自动分配角色无响应问题排查
    1. Bot实例化时未传入已配置的intents
      你设置了intents.members = True开启成员事件监听,但初始化commands.Bot时没有将intents作为参数传入,配置的监听规则未生效,自然无法触发on_member_join事件。
      修正后的初始化代码如下:
client = commands.Bot(command_prefix = ".", intents=intents)
    1. 角色分配方法调用错误
      discord.py v1.5之后的版本,add_roles已经不再是客户端实例的方法,而是member对象的内置方法,你使用的await client.add_roles(member, role)是已经废弃的旧版本写法,运行时会抛出异常导致操作失败。
      修正后的调用代码如下:
await member.add_roles(role)
    1. 开发者后台未开启对应权限开关
      仅代码配置intents不生效,你还需要进入Discord开发者平台的对应Bot管理页面,在「Privileged Gateway Intents」分类下开启Server Members Intent权限,否则Discord官方不会向你的机器人推送成员加入的相关事件。
    1. 机器人权限不足
      需要同时满足两个权限要求:
    • 机器人在服务器内的角色排序高于你要分配的member角色
    • 机器人被授予了「管理角色」的服务器权限
      任意一条不满足,机器人都没有权限为新成员分配角色。

修正后可正常运行的完整代码

import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.members = True

client = commands.Bot(command_prefix = ".", intents=intents)

@client.event
async def on_ready():
    print('Bot is online')

@client.event
async def on_member_join(member):
    role = discord.utils.get(member.guild.roles, name='member')
    await member.add_roles(role)

client.run("你的Bot Token")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 15:06:00