Struct RoomPowerLevels
#[non_exhaustive]pub struct RoomPowerLevels {
pub ban: Int,
pub events: BTreeMap<TimelineEventType, Int>,
pub events_default: Int,
pub invite: Int,
pub kick: Int,
pub redact: Int,
pub state_default: Int,
pub users: BTreeMap<OwnedUserId, Int>,
pub users_default: Int,
pub notifications: NotificationPowerLevels,
}
Expand description
The effective power levels of a room.
This struct contains the same fields as RoomPowerLevelsEventContent
and be created from that
using a From
trait implementation, but it is also implements
From<
RedactedRoomPowerLevelsEventContent
>
, so can be used when wanting to inspect the
power levels of a room, regardless of whether the most recent power-levels event is redacted or
not.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.ban: Int
The level required to ban a user.
events: BTreeMap<TimelineEventType, Int>
The level required to send specific event types.
This is a mapping from event type to power level required.
events_default: Int
The default level required to send message events.
invite: Int
The level required to invite a user.
kick: Int
The level required to kick a user.
redact: Int
The level required to redact an event.
state_default: Int
The default level required to send state events.
users: BTreeMap<OwnedUserId, Int>
The power levels for specific users.
This is a mapping from user_id
to power level for that user.
users_default: Int
The default power level for every user in the room.
notifications: NotificationPowerLevels
The power level requirements for specific notification types.
This is a mapping from key
to power level for that notifications key.
Implementations§
§impl RoomPowerLevels
impl RoomPowerLevels
pub fn for_action(&self, action: PowerLevelAction) -> Int
pub fn for_action(&self, action: PowerLevelAction) -> Int
Get the power level required to perform a given action.
pub fn for_message(&self, msg_type: MessageLikeEventType) -> Int
pub fn for_message(&self, msg_type: MessageLikeEventType) -> Int
Get the power level required to send the given message type.
pub fn for_state(&self, state_type: StateEventType) -> Int
pub fn for_state(&self, state_type: StateEventType) -> Int
Get the power level required to send the given state event type.
pub fn user_can_ban(&self, user_id: &UserId) -> bool
pub fn user_can_ban(&self, user_id: &UserId) -> bool
Whether the given user can ban other users based on the power levels.
Shorthand for power_levels.user_can_do(user_id, PowerLevelAction::Ban)
.
pub fn user_can_ban_user(
&self,
acting_user_id: &UserId,
target_user_id: &UserId,
) -> bool
pub fn user_can_ban_user( &self, acting_user_id: &UserId, target_user_id: &UserId, ) -> bool
Whether the acting user can ban the target user based on the power levels.
On top of power_levels.user_can_ban(acting_user_id)
, this performs an extra check
to make sure the acting user has at greater power level than the target user.
Shorthand for power_levels.user_can_do_to_user(acting_user_id, target_user_id, PowerLevelUserAction::Ban)
.
pub fn user_can_unban(&self, user_id: &UserId) -> bool
pub fn user_can_unban(&self, user_id: &UserId) -> bool
Whether the given user can unban other users based on the power levels.
This action requires to be allowed to ban and to kick.
Shorthand for power_levels.user_can_do(user_id, PowerLevelAction::Unban)
.
pub fn user_can_unban_user(
&self,
acting_user_id: &UserId,
target_user_id: &UserId,
) -> bool
pub fn user_can_unban_user( &self, acting_user_id: &UserId, target_user_id: &UserId, ) -> bool
Whether the acting user can unban the target user based on the power levels.
This action requires to be allowed to ban and to kick.
On top of power_levels.user_can_unban(acting_user_id)
, this performs an extra check
to make sure the acting user has at greater power level than the target user.
Shorthand for power_levels.user_can_do_to_user(acting_user_id, target_user_id, PowerLevelUserAction::Unban)
.
pub fn user_can_invite(&self, user_id: &UserId) -> bool
pub fn user_can_invite(&self, user_id: &UserId) -> bool
Whether the given user can invite other users based on the power levels.
Shorthand for power_levels.user_can_do(user_id, PowerLevelAction::Invite)
.
pub fn user_can_kick(&self, user_id: &UserId) -> bool
pub fn user_can_kick(&self, user_id: &UserId) -> bool
Whether the given user can kick other users based on the power levels.
Shorthand for power_levels.user_can_do(user_id, PowerLevelAction::Kick)
.
pub fn user_can_kick_user(
&self,
acting_user_id: &UserId,
target_user_id: &UserId,
) -> bool
pub fn user_can_kick_user( &self, acting_user_id: &UserId, target_user_id: &UserId, ) -> bool
Whether the acting user can kick the target user based on the power levels.
On top of power_levels.user_can_kick(acting_user_id)
, this performs an extra check
to make sure the acting user has at least the same power level as the target user.
Shorthand for power_levels.user_can_do_to_user(acting_user_id, target_user_id, PowerLevelUserAction::Kick)
.
pub fn user_can_redact_own_event(&self, user_id: &UserId) -> bool
pub fn user_can_redact_own_event(&self, user_id: &UserId) -> bool
Whether the given user can redact their own events based on the power levels.
Shorthand for power_levels.user_can_do(user_id, PowerLevelAction::RedactOwn)
.
pub fn user_can_redact_event_of_other(&self, user_id: &UserId) -> bool
pub fn user_can_redact_event_of_other(&self, user_id: &UserId) -> bool
Whether the given user can redact events of other users based on the power levels.
Shorthand for power_levels.user_can_do(user_id, PowerLevelAction::RedactOthers)
.
pub fn user_can_send_message(
&self,
user_id: &UserId,
msg_type: MessageLikeEventType,
) -> bool
pub fn user_can_send_message( &self, user_id: &UserId, msg_type: MessageLikeEventType, ) -> bool
Whether the given user can send message events based on the power levels.
Shorthand for power_levels.user_can_do(user_id, PowerLevelAction::SendMessage(msg_type))
.
pub fn user_can_send_state(
&self,
user_id: &UserId,
state_type: StateEventType,
) -> bool
pub fn user_can_send_state( &self, user_id: &UserId, state_type: StateEventType, ) -> bool
Whether the given user can send state events based on the power levels.
Shorthand for power_levels.user_can_do(user_id, PowerLevelAction::SendState(state_type))
.
pub fn user_can_trigger_room_notification(&self, user_id: &UserId) -> bool
pub fn user_can_trigger_room_notification(&self, user_id: &UserId) -> bool
Whether the given user can notify everybody in the room by writing @room
in a message.
Shorthand for power_levels.user_can_do(user_id, PowerLevelAction::TriggerNotification(NotificationPowerLevelType::Room))
.
pub fn user_can_change_user_power_level(
&self,
acting_user_id: &UserId,
target_user_id: &UserId,
) -> bool
pub fn user_can_change_user_power_level( &self, acting_user_id: &UserId, target_user_id: &UserId, ) -> bool
Whether the acting user can change the power level of the target user.
Shorthand for power_levels.user_can_do_to_user(acting_user_id, target_user_id, PowerLevelUserAction::ChangePowerLevel
.
pub fn user_can_do(&self, user_id: &UserId, action: PowerLevelAction) -> bool
pub fn user_can_do(&self, user_id: &UserId, action: PowerLevelAction) -> bool
Whether the given user can do the given action based on the power levels.
pub fn user_can_do_to_user(
&self,
acting_user_id: &UserId,
target_user_id: &UserId,
action: PowerLevelUserAction,
) -> bool
pub fn user_can_do_to_user( &self, acting_user_id: &UserId, target_user_id: &UserId, action: PowerLevelUserAction, ) -> bool
Whether the acting user can do the given action to the target user based on the power levels.
Trait Implementations§
§impl Clone for RoomPowerLevels
impl Clone for RoomPowerLevels
§fn clone(&self) -> RoomPowerLevels
fn clone(&self) -> RoomPowerLevels
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for RoomPowerLevels
impl Debug for RoomPowerLevels
§impl From<RedactedRoomPowerLevelsEventContent> for RoomPowerLevels
impl From<RedactedRoomPowerLevelsEventContent> for RoomPowerLevels
§fn from(c: RedactedRoomPowerLevelsEventContent) -> RoomPowerLevels
fn from(c: RedactedRoomPowerLevelsEventContent) -> RoomPowerLevels
§impl From<RoomPowerLevels> for PushConditionPowerLevelsCtx
impl From<RoomPowerLevels> for PushConditionPowerLevelsCtx
§fn from(c: RoomPowerLevels) -> PushConditionPowerLevelsCtx
fn from(c: RoomPowerLevels) -> PushConditionPowerLevelsCtx
Source§impl From<RoomPowerLevels> for RoomPowerLevelChanges
impl From<RoomPowerLevels> for RoomPowerLevelChanges
Source§fn from(value: RoomPowerLevels) -> Self
fn from(value: RoomPowerLevels) -> Self
§impl From<RoomPowerLevels> for RoomPowerLevelsEventContent
impl From<RoomPowerLevels> for RoomPowerLevelsEventContent
§fn from(c: RoomPowerLevels) -> RoomPowerLevelsEventContent
fn from(c: RoomPowerLevels) -> RoomPowerLevelsEventContent
§impl From<RoomPowerLevelsEventContent> for RoomPowerLevels
impl From<RoomPowerLevelsEventContent> for RoomPowerLevels
§fn from(c: RoomPowerLevelsEventContent) -> RoomPowerLevels
fn from(c: RoomPowerLevelsEventContent) -> RoomPowerLevels
Auto Trait Implementations§
impl Freeze for RoomPowerLevels
impl RefUnwindSafe for RoomPowerLevels
impl Send for RoomPowerLevels
impl Sync for RoomPowerLevels
impl Unpin for RoomPowerLevels
impl UnwindSafe for RoomPowerLevels
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> CompatExt for T
impl<T> CompatExt for T
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T, UT> HandleAlloc<UT> for T
impl<T, UT> HandleAlloc<UT> for T
Source§fn consume_handle(handle: Handle) -> Arc<T>
fn consume_handle(handle: Handle) -> Arc<T>
Arc<>
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more