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
相关产品推荐
相关产品推荐

