Discord.py:使用斜杠命令为他人分配角色遇属性错误
问题解决:Discord Bot 分配角色报错 AttributeError
报错根源
你遇到的AttributeError: 'coroutine' object has no attribute 'add_roles',核心原因是guild.fetch_member()是异步方法,你没加await关键字调用,导致player存的是协程对象,不是实际的Discord用户(Member)实例,自然找不到add_roles方法。
修复代码
把获取用户的那一行加上await:
guild = bot.get_guild(int([你的服务器ID])) # 关键:给fetch_member加上await player = await guild.fetch_member(int(user_id)) if bumped: rank_one = discord.utils.get(guild.roles, name="Test Rank") await player.add_roles(rank_one)
额外注意事项
- 确保你的Bot有管理角色的权限,且要分配的角色位置在Bot自身角色的下方(Discord规则:Bot不能给比自己角色等级高的用户分配角色)
- 如果目标用户不在当前服务器,
fetch_member会抛出NotFound错误,建议加异常处理避免崩溃:
try: player = await guild.fetch_member(int(user_id)) except discord.NotFound: print(f"用户 {user_id} 不在当前服务器") return
内容的提问来源于stack exchange,提问作者DT_11
相关产品推荐
相关产品推荐

