33
33
from .flags import RoleFlags
34
34
from .mixins import Hashable
35
35
from .permissions import Permissions
36
- from .utils import MISSING , _bytes_to_base64_data , _get_as_snowflake , snowflake_time
36
+ from .utils import (
37
+ MISSING ,
38
+ _bytes_to_base64_data ,
39
+ _get_as_snowflake ,
40
+ cached_slot_property ,
41
+ snowflake_time ,
42
+ )
37
43
38
44
__all__ = (
39
45
"RoleTags" ,
@@ -79,16 +85,18 @@ class RoleTags:
79
85
"""
80
86
81
87
__slots__ = (
82
- "bot_id" ,
83
88
"integration_id" ,
84
89
"subscription_listing_id" ,
85
90
"_premium_subscriber" ,
86
91
"_available_for_purchase" ,
87
92
"_guild_connections" ,
93
+ "_bot_id" ,
94
+ "_bot_role" ,
95
+ "_data" ,
88
96
)
89
97
90
98
def __init__ (self , data : RoleTagPayload ):
91
- self .bot_id : int | None = _get_as_snowflake ( data , "bot_id" )
99
+ self ._data : RoleTagPayload = data
92
100
self .integration_id : int | None = _get_as_snowflake (data , "integration_id" )
93
101
self .subscription_listing_id : int | None = _get_as_snowflake (
94
102
data , "subscription_listing_id"
@@ -104,7 +112,13 @@ def __init__(self, data: RoleTagPayload):
104
112
)
105
113
self ._guild_connections : Any | None = data .get ("guild_connections" , MISSING )
106
114
107
- def is_bot_managed (self ) -> bool :
115
+ @cached_slot_property ("_bot_id" )
116
+ def bot_id (self ) -> int | None :
117
+ """The bot's user ID that manages this role."""
118
+ return int (self ._data .get ("bot_id" , 0 ) or 0 ) or None
119
+
120
+ @cached_slot_property ("_bot_role" )
121
+ def is_bot_role (self ) -> bool :
108
122
"""Whether the role is associated with a bot."""
109
123
return self .bot_id is not None
110
124
0 commit comments