Segregated kick function

main
David 2023-01-04 17:04:20 +01:00
parent 29b0ee97bb
commit c04a0cf43c
1 changed files with 19 additions and 9 deletions

View File

@ -8,11 +8,11 @@ pub mod bot {
event_handler::Ctx,
room::{Joined, Room, RoomMember},
ruma::{
UserId, ServerName, RoomId,
events::room::message::{OriginalSyncRoomMessageEvent,
RoomMessageEventContent}, OwnedEventId,
},
UserId, ServerName, RoomId, OwnedEventId,
events::room::message::{OriginalSyncRoomMessageEvent, RoomMessageEventContent},
}
};
use sled;
use crate::utils::utils::*;
use crate::config_reader::config_reader::BotUserInfo;
@ -148,7 +148,7 @@ pub mod bot {
}
}
}
async fn delete_message_from_room(&self, event_id: &OwnedEventId, member: &RoomMember, reason: &str) {
let result = self.joined_room.redact(event_id, Some(reason), None).await;
@ -164,10 +164,7 @@ pub mod bot {
let member_id: &str = member.user_id().as_str();
let mut current_reputation = dbg!(self.database_handle.get(member_id).unwrap().unwrap().first().unwrap().to_owned());
if current_reputation == 0 {
if let Some(_) = self.joined_room.kick_user(member.user_id(), Some("Reputation lower than zero")).await.ok() {
dbg!(self.database_handle.remove(member_id).unwrap());
self.send_message(&format!("Member {} has been kicked.", member_id)).await;
};
self.kick_user(member, "Reputation too low!").await;
return Ok(())
}
else {
@ -177,6 +174,19 @@ pub mod bot {
return Ok(())
}
}
async fn kick_user(&self, member: &RoomMember, reason: &str) {
let member_id: &str = member.user_id().as_str();
if member.power_level() <= 50 { // Won't kick mods and admins
if let Some(_) = self.joined_room.kick_user(member.user_id(), Some(reason)).await.ok() {
dbg!(self.database_handle.remove(member_id).unwrap());
self.send_message(&format!("Member {} has been kicked.", member_id)).await;
};
}
else {
self.send_message("Cannot kick moderators and admins").await;
}
}
async fn send_message(&self, message: &str) {
debug!("Send message ({:?}): {}", &self.joined_room, message);