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

Discord.py Cog内createrole创建角色指令如何添加权限、颜色及hoist配置

修改方案

要实现支持自定义权限、颜色、hoist属性的角色创建指令,按以下步骤修改现有代码:

核心修改点

  • 调整指令参数定义,新增color(颜色,十六进制整数)、hoist(是否单独展示,布尔值)、permissions(权限集合)三个可选参数,设置合理默认值
  • 调用guild.create_role方法时传入所有自定义参数,注意将颜色值转换为discord.Color类型、权限封装为discord.Permissions类型
  • 优化返回消息,展示创建后的角色属性方便校验

修改后完整代码

@commands.command(aliases=['make_role'])
@commands.has_permissions(manage_roles=True)
async def createrole(self, ctx, name: str, color: int = 0, hoist: bool = False, *, permissions: discord.Permissions = None):
    guild = ctx.guild
    # 未指定权限时默认使用服务器默认角色的权限
    if not permissions:
        permissions = guild.default_role.permissions
    # 传入所有配置创建角色
    created_role = await guild.create_role(
        name=name,
        color=discord.Color(color),
        hoist=hoist,
        permissions=permissions
    )
    await ctx.send(f'角色 `{created_role.name}` 已创建完成:\n- 颜色值:{created_role.color}\n- 成员列表单独展示:{"是" if created_role.hoist else "否"}\n- 权限位值:{created_role.permissions.value}')

调用示例

  • 基础调用(使用默认权限):!createrole 普通成员 0x3498db False
    解释:创建名为「普通成员」的蓝色角色,不在成员列表单独展示,使用服务器默认权限
  • 自定义权限调用:!createrole 版块管理 0xe74c3c True manage_messages=True kick_members=True
    解释:创建名为「版块管理」的红色角色,在成员列表单独展示,拥有管理消息、踢人权限

注意事项

  • 颜色参数需传入带0x前缀的十六进制颜色码
  • 权限参数直接传入权限字段+布尔值即可,discord.py会自动解析为Permissions对象
  • 可选参数可以省略,省略时自动使用默认值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:06:05