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

discord.py中create_role()设置角色位置的参数是什么?

解决Discord机器人自定义颜色角色位置问题
  • 正确操作是创建角色后通过Role.edit()方法调整位置,create_role()本身不支持直接传入位置参数,你之前尝试的position/pos参数在该方法中无效。
  • 注意:机器人自身角色的位置必须高于要调整的目标角色,否则没有权限修改角色位置。

修改后的可用代码:

async def supercolor(ctx, hexcode):
    await ctx.send(hexcode)
    guild = ctx.guild
    # 修正十六进制颜色转换逻辑,原写法会导致格式错误
    color_int = int(hexcode, 16)
    # 创建角色
    role = await guild.create_role(name=hexcode, color=discord.Color(color_int))
    # 获取用户当前最高角色的位置,将新角色设为该位置+1,确保显示在上方
    user_highest_pos = ctx.author.top_role.position
    await role.edit(position=user_highest_pos + 1)
    # 给用户添加角色
    await ctx.author.add_roles(role)

补充说明:

  1. 原代码中newhex = "0x".join(hexcode)的写法错误,比如输入FF0000会被错误拼接成F0xF0x00x0,改用int(hexcode, 16)可以直接将十六进制字符串转为合法的颜色整数。
  2. 调整角色位置时,必须保证机器人角色的层级足够高(在服务器角色列表中的位置比目标角色更靠上),否则会触发权限异常。
  3. 通过ctx.author.top_role.position获取用户最高角色的位置,将新角色位置设为该值+1,能确保自定义颜色角色显示在用户原有角色的上方,让颜色生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:54:55