Discord机器人报错:'Member'对象无'server'属性,求解决
Discord机器人Role命令AttributeError错误原因及修复
错误核心原因
你遇到的AttributeError: 'Member' object has no attribute 'server',是因为Discord.py v1.0版本后,官方将"server"相关的API命名统一改为了"guild",Member对象不再拥有server属性,需要替换为guild属性。
代码中的其他问题及修复方案
除了上述核心错误,你的代码还有几处问题需要修正:
discord.utils.get用法错误:当前写法是把字符串rolerequest直接和角色列表比对,应该通过角色名称获取对应的角色对象- 未定义
role变量:执行add_roles时用到的role变量没有赋值 - 类名大小写错误:
discord.embed应为discord.Embed(类名首字母必须大写) - 拼写错误:
Succes→Success,couldnt→couldn't
修正后的代码示例:
@commands.has_permissions(administrator=True) @bot.command() async def role(ctx, member: discord.Member, rolerequest): # 替换为guild,并正确获取角色对象 role = discord.utils.get(member.guild.roles, name=rolerequest) if role is not None: await bot.add_roles(member, role) embed = discord.Embed( title='Success!', description=f'Successfully added the role {rolerequest} to {member}' ) await ctx.send(embed=embed) else: embed = discord.Embed( title='Error', description=f'Role {rolerequest} couldn\'t be found' ) await ctx.send(embed=embed)
内容的提问来源于stack exchange,提问作者UseStarCodeCoin
相关产品推荐
相关产品推荐

