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

discord.py为用户添加角色触发AttributeError错误求助

问题解决:discord.py中Bot对象无add_roles属性错误

错误原因

你调用了client.add_roles(member, role),但在discord.py的新版本中,添加角色的方法是Member对象的方法,而非Bot/client对象的。Bot类本身没有add_roles这个属性,所以触发了AttributeError。

修正后的代码

只需把await client.add_roles(member, role)替换为await member.add_roles(role),完整代码如下:

@client.event
async def on_member_join(member):
    guild = client.get_guild(999108955437551666)
    channel = guild.get_channel(999108956020555798)
    role = discord.utils.get(guild.roles, id=999356633023000586)
    
    await member.add_roles(role)  # 此处为修改点
    await channel.send(f'Hello, {member.mention} :partying_face:! Welcome to Tragic Tech! Make sure to read the rules so you wont get banned right away!')

额外注意事项

  • 权限要求:确保机器人拥有「管理角色」权限,且机器人的角色位置要高于目标角色,否则角色添加会失败。
  • Intents配置:discord.py v2.0及以上版本需要开启「成员意图(Members Intent)」才能触发on_member_join事件。你需要在Discord开发者门户的机器人页面,开启「Privileged Gateway Intents」里的「Server Members Intent」,然后在代码中初始化客户端时指定:
    intents = discord.Intents.default()
    intents.members = True
    client = discord.Bot(intents=intents)  # 若用discord.Client初始化则替换为对应写法
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:24:24