使用discord.py创建角色后无法为用户分配角色问题求助
问题原因及修复方案
1. 代码逻辑错误
你当前代码的核心问题是add_roles()方法传入的参数错误,该方法需要接收角色对象作为参数,而你传入的是服务器(guild)对象,自然无法完成角色分配。guild.create_role()调用成功后会返回创建完成的角色对象,你需要先接收这个对象再传入分配方法即可。
修改后的代码示例:
@bot.command() async def admin(ctx, user: discord.Member): await ctx.send("hellooooooo") guild = ctx.guild # 接收创建成功的角色对象 new_role = await guild.create_role(name="role name") # 传入角色对象而非guild对象 await user.add_roles(new_role)
2. 额外权限排查项
如果修改代码后仍然无法分配角色,请按以下顺序排查:
- 机器人对应的角色在服务器角色列表中的位置,必须高于你要分配的目标角色的位置,Discord的权限规则不允许账号/机器人给其他用户分配比自身角色等级更高的角色
- 确认机器人已经被授予
管理角色(Manage Roles)权限,没有该权限无法执行角色分配操作 - 确认要分配的用户不是服务器所有者,且你当前操作的角色权限高于目标用户的最高角色等级
内容的提问来源于stack exchange,提问作者Jai Sloper
相关产品推荐
相关产品推荐

