Skip to content

Commit 73d8ff2

Browse files
authored
Add partial_member_permissions to Guild and PartialGuild (#3001)
1 parent 0c1e59c commit 73d8ff2

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

src/model/guild/mod.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1918,6 +1918,32 @@ impl Guild {
19181918
)
19191919
}
19201920

1921+
/// Calculate a [`PartialMember`]'s permissions in the guild.
1922+
///
1923+
/// # Panics
1924+
///
1925+
/// Panics if the passed [`UserId`] does not match the [`PartialMember`] id, if user is Some.
1926+
#[inline]
1927+
#[must_use]
1928+
pub fn partial_member_permissions(
1929+
&self,
1930+
member_id: UserId,
1931+
member: &PartialMember,
1932+
) -> Permissions {
1933+
if let Some(user) = &member.user {
1934+
assert_eq!(user.id, member_id, "User::id does not match provided PartialMember");
1935+
}
1936+
1937+
Self::user_permissions_in_(
1938+
None,
1939+
member_id,
1940+
&member.roles,
1941+
self.id,
1942+
&self.roles,
1943+
self.owner_id,
1944+
)
1945+
}
1946+
19211947
/// Moves a member to a specific voice channel.
19221948
///
19231949
/// Requires the [Move Members] permission.

src/model/guild/partial_guild.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,6 +1046,32 @@ impl PartialGuild {
10461046
)
10471047
}
10481048

1049+
/// Calculate a [`PartialMember`]'s permissions in the guild.
1050+
///
1051+
/// # Panics
1052+
///
1053+
/// Panics if the passed [`UserId`] does not match the [`PartialMember`] id, if user is Some.
1054+
#[inline]
1055+
#[must_use]
1056+
pub fn partial_member_permissions(
1057+
&self,
1058+
member_id: UserId,
1059+
member: &PartialMember,
1060+
) -> Permissions {
1061+
if let Some(user) = &member.user {
1062+
assert_eq!(user.id, member_id, "User::id does not match provided PartialMember");
1063+
}
1064+
1065+
Guild::user_permissions_in_(
1066+
None,
1067+
member_id,
1068+
&member.roles,
1069+
self.id,
1070+
&self.roles,
1071+
self.owner_id,
1072+
)
1073+
}
1074+
10491075
/// Calculate a [`PartialMember`]'s permissions in a given channel in a guild.
10501076
///
10511077
/// # Panics

0 commit comments

Comments
 (0)