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

discord.py编写addrole命令出现Unknown Role报错是什么原因?

报错原因分析
  • 参数传入错误:你在调用member.add_roles()方法时,错误将member对象作为第一个参数传入。该方法是成员对象的内置方法,不需要额外传入成员自身,仅需传入要赋予的角色对象即可。你传入的member对象会被Discord API当做角色ID解析,自然找不到对应角色,直接触发10011未知角色报错。
  • 未做角色存在校验:你通过discord.utils.get(ctx.guild.roles, name=role)获取角色时,如果当前服务器不存在对应名称的角色,会返回None。后续直接把None传入add_roles方法时,也会触发未知角色报错。
修复后的参考代码
@bot.command(pass_context=True)
@commands.has_permissions(ban_members = True)
async def addrole(ctx, member : discord.Member, *,role="Members"):
    role = discord.utils.get(ctx.guild.roles, name=role)
    # 提前校验角色是否存在
    if not role:
        await ctx.reply(f"服务器中不存在名为{role}的角色")
        return
    # 移除多余的member参数
    await member.add_roles(role)
    await ctx.reply(f'I have added the {role} to {member}')

内容的提问来源于stack exchange,提问作者programminggeek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:27:08