Python Discord bot新成员入群自动分配角色出现AttributeError报错求助
报错原因
你使用的是v1.0及以上版本的discord.py库,该版本将原版本中的server属性重命名为了guild,Member对象已经不存在server属性,因此触发了AttributeError。除此之外你的代码还有两处版本不兼容问题需要同步修改:
discord.utils.get查询角色id时,id参数需要传入整数类型,不能传入字符串- 新版本discord.py中给成员添加角色的方法为
member.add_roles(),不再使用client.add_roles()的调用方式
修复后的完整代码
import discord import os from discord.utils import get bot_acces_token = os.environ['token'] intents = discord.Intents.default() intents.members = True client = discord.Client(intents=intents) @client.event async def on_member_join(member): # 将server改为guild,id传入整数类型 role = discord.utils.get(member.guild.roles, id=123456789) # 调用member对象自带的add_roles方法 await member.add_roles(role) @client.event async def on_ready(): print('Bot is ready') client.run(bot_acces_token)
额外配置校验
修改代码后如果仍然无法正常分配角色,请检查以下配置:
- 前往Discord开发者后台的Bot设置页面,开启「Server Members Intent」权限,否则
on_member_join事件不会被触发 - 邀请Bot进服时确保勾选了「Manage Roles」权限,且Bot自身的角色层级要高于你要分配的目标角色层级
内容的提问来源于stack exchange,提问作者Oq Oq
相关产品推荐
相关产品推荐

