Skip to content

Commit 757bf3f

Browse files
LulalabyUnBonWhisky
andcommitted
fix: patch team permissions keyerror and use teamrole instead (#3204)
Co-Authored-By: ffouqueray <flavien.fouqueray@icloud.com>
1 parent 28b4682 commit 757bf3f

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

discord/enums.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
"ActivityType",
4646
"NotificationLevel",
4747
"TeamMembershipState",
48+
"TeamRole",
4849
"WebhookType",
4950
"ExpireBehaviour",
5051
"ExpireBehavior",
@@ -629,6 +630,15 @@ class TeamMembershipState(Enum):
629630
accepted = 2
630631

631632

633+
class TeamRole(Enum):
634+
"""Role of a team member."""
635+
636+
owner = "owner"
637+
admin = "admin"
638+
developer = "developer"
639+
read_only = "read_only"
640+
641+
632642
class WebhookType(Enum):
633643
"""Webhook Type"""
634644

discord/team.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
from . import utils
3131
from .asset import Asset
32-
from .enums import TeamMembershipState, try_enum
32+
from .enums import TeamMembershipState, TeamRole, try_enum
3333
from .user import BaseUser
3434

3535
if TYPE_CHECKING:
@@ -136,16 +136,18 @@ class TeamMember(BaseUser):
136136
The team that the member is from.
137137
membership_state: :class:`TeamMembershipState`
138138
The membership state of the member (e.g. invited or accepted)
139+
role: :class:`TeamRole`
140+
The role of the team member (e.g. admin, developer, read_only).
139141
"""
140142

141-
__slots__ = ("team", "membership_state", "permissions")
143+
__slots__ = ("team", "membership_state", "role")
142144

143145
def __init__(self, team: Team, state: ConnectionState, data: TeamMemberPayload):
144146
self.team: Team = team
145147
self.membership_state: TeamMembershipState = try_enum(
146148
TeamMembershipState, data["membership_state"]
147149
)
148-
self.permissions: list[str] = data["permissions"]
150+
self.role: TeamRole = TeamRole.owner if team.owner_id == int(data["user"]["id"]) else try_enum(TeamRole, data["role"])
149151
super().__init__(state=state, data=data["user"])
150152

151153
def __repr__(self) -> str:

discord/types/team.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
class TeamMember(TypedDict):
3535
user: PartialUser
3636
membership_state: int
37-
permissions: list[str]
37+
role: str
3838
team_id: Snowflake
3939

4040

0 commit comments

Comments
 (0)