You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:51:02