79
79
from .monetization import Entitlement
80
80
from .onboarding import Onboarding
81
81
from .permissions import PermissionOverwrite
82
- from .role import Role
82
+ from .role import Role , RoleColours
83
83
from .scheduled_events import ScheduledEvent , ScheduledEventLocation
84
84
from .stage_instance import StageInstance
85
85
from .sticker import GuildSticker
@@ -2916,6 +2916,8 @@ async def create_role(
2916
2916
name : str = ...,
2917
2917
permissions : Permissions = ...,
2918
2918
colour : Colour | int = ...,
2919
+ colours : RoleColours = ...,
2920
+ holographic : bool = ...,
2919
2921
hoist : bool = ...,
2920
2922
mentionable : bool = ...,
2921
2923
icon : bytes | None = MISSING ,
@@ -2930,6 +2932,8 @@ async def create_role(
2930
2932
name : str = ...,
2931
2933
permissions : Permissions = ...,
2932
2934
color : Colour | int = ...,
2935
+ colors : RoleColours = ...,
2936
+ holographic : bool = ...,
2933
2937
hoist : bool = ...,
2934
2938
mentionable : bool = ...,
2935
2939
icon : bytes | None = ...,
@@ -2943,6 +2947,9 @@ async def create_role(
2943
2947
permissions : Permissions = MISSING ,
2944
2948
color : Colour | int = MISSING ,
2945
2949
colour : Colour | int = MISSING ,
2950
+ colors : RoleColours = MISSING ,
2951
+ colours : RoleColours = MISSING ,
2952
+ holographic : bool = MISSING ,
2946
2953
hoist : bool = MISSING ,
2947
2954
mentionable : bool = MISSING ,
2948
2955
reason : str | None = None ,
@@ -3006,11 +3013,30 @@ async def create_role(
3006
3013
else :
3007
3014
fields ["permissions" ] = "0"
3008
3015
3009
- actual_colour = colour or color or Colour .default ()
3016
+ actual_colour = colour if colour not in (MISSING , None ) else color
3017
+
3010
3018
if isinstance (actual_colour , int ):
3011
- fields ["color" ] = actual_colour
3019
+ actual_colour = Colour (actual_colour )
3020
+
3021
+ if actual_colour not in (MISSING , None ):
3022
+ utils .warn_deprecated ("colour" , "colours" , "2.7" )
3023
+ actual_colours = RoleColours (primary = actual_colour )
3024
+ elif holographic :
3025
+ actual_colours = RoleColours .holographic ()
3026
+ else :
3027
+ actual_colours = colours or colors or RoleColours .default ()
3028
+
3029
+ if isinstance (actual_colours , RoleColours ):
3030
+ if "ENHANCED_ROLE_COLORS" not in self .features :
3031
+ actual_colours .secondary = None
3032
+ actual_colours .tertiary = None
3033
+ fields ["colors" ] = actual_colours ._to_dict ()
3012
3034
else :
3013
- fields ["color" ] = actual_colour .value
3035
+ raise InvalidArgument (
3036
+ "colours parameter must be of type RoleColours, not {0.__class__.__name__}" .format (
3037
+ actual_colours
3038
+ )
3039
+ )
3014
3040
3015
3041
if hoist is not MISSING :
3016
3042
fields ["hoist" ] = hoist
0 commit comments