diff --git a/src/api/client/membership/kick.rs b/src/api/client/membership/kick.rs index 2e8341732..75160990a 100644 --- a/src/api/client/membership/kick.rs +++ b/src/api/client/membership/kick.rs @@ -24,9 +24,14 @@ pub(crate) async fn kick_user_route( if !services .rooms .state_cache - .is_joined(&body.user_id, &body.room_id) + .user_membership(&body.user_id, &body.room_id) .await - { + .is_some_and(|membership| { + matches!( + membership, + MembershipState::Invite | MembershipState::Join | MembershipState::Knock + ) + }) { return Err!(Request(Forbidden("You cannot kick users who are not in the room."))); }