Added command to check for reputation
parent
5921a6aa5f
commit
425b9f81b5
37
src/bot.rs
37
src/bot.rs
|
@ -30,7 +30,7 @@ pub mod bot {
|
|||
swear_list: Vec<String>,
|
||||
database_handle: sled::Db,
|
||||
spam_info: SpamInfo,
|
||||
members_list: Vec<RoomMember>
|
||||
members_list: Vec<String>
|
||||
}
|
||||
|
||||
impl Bot {
|
||||
|
@ -92,12 +92,15 @@ pub mod bot {
|
|||
// Syncs members list of the joined room
|
||||
joined_room.sync_members().await.unwrap();
|
||||
|
||||
let members_list = client
|
||||
let members_list: Vec<String> = client
|
||||
.get_joined_room(joined_room.room_id())
|
||||
.unwrap()
|
||||
.joined_members()
|
||||
.await
|
||||
.expect("Cannot get members");
|
||||
.unwrap()
|
||||
.iter()
|
||||
.map(|x| x.user_id().as_str().to_string())
|
||||
.collect();
|
||||
|
||||
let path = "members_database";
|
||||
let db = sled::open(path).unwrap();
|
||||
|
@ -107,7 +110,7 @@ pub mod bot {
|
|||
let bytes = convert_to_bytes_sled(timestamp, default_reputation);
|
||||
for member in members_list.clone() {
|
||||
dbg!(
|
||||
db.insert(member.user_id().as_str(), &bytes).unwrap()
|
||||
db.insert(member.as_str(), &bytes).unwrap()
|
||||
);
|
||||
};
|
||||
|
||||
|
@ -137,8 +140,18 @@ pub mod bot {
|
|||
// Standard text message
|
||||
if let Some(text) = get_message_event_text(&event) {
|
||||
let member = room.get_member(&event.sender).await.unwrap().unwrap();
|
||||
let member_user_id = member.user_id().as_str().to_string();
|
||||
let id = &event.event_id;
|
||||
|
||||
if !bot.members_list.contains(&member_user_id) {
|
||||
bot.members_list.push(member_user_id.clone());
|
||||
let default_reputation: i64 = 0;
|
||||
let utc: DateTime<Utc> = Utc::now();
|
||||
let timestamp: i64 = utc.timestamp();
|
||||
let bytes = convert_to_bytes_sled(timestamp, default_reputation);
|
||||
dbg!(bot.database_handle.insert(member_user_id.as_str(), &bytes).unwrap());
|
||||
};
|
||||
|
||||
if bot.info.allow_swear && detect_swear_from_message(&bot.swear_list, &text) {
|
||||
bot.delete_message_from_room(id, "Swearing").await;
|
||||
bot.update_reputation_for_member(&member, -1).await.expect("Failed to subtract reputation from member");
|
||||
|
@ -175,8 +188,7 @@ pub mod bot {
|
|||
}
|
||||
|
||||
fn check_if_member_exists(&self, user_id: &str) -> bool {
|
||||
let user_id_list: Vec<&str> = self.members_list.iter().map(|x| x.user_id().as_str()).collect();
|
||||
if user_id_list.contains(&user_id) {
|
||||
if self.members_list.contains(&user_id.to_string()) {
|
||||
true
|
||||
}
|
||||
else {
|
||||
|
@ -252,7 +264,7 @@ pub mod bot {
|
|||
|
||||
}
|
||||
|
||||
async fn detect_command(&self, message: &str) {
|
||||
async fn detect_command(&self, event: &OriginalSyncRoomMessageEvent, message: &str) {
|
||||
let words: Vec<&str> = message.split_whitespace().collect();
|
||||
if words.first().unwrap().deref() == "!modbot" {
|
||||
if words[1] == "award" {
|
||||
|
@ -280,11 +292,18 @@ pub mod bot {
|
|||
}
|
||||
}
|
||||
},
|
||||
|
||||
Err(_) => {
|
||||
self.send_message("Cannot find user. Check if the User ID provided is correct").await;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
if words[1] == "reputation" {
|
||||
let author = self.joined_room.get_member(&event.sender).await.unwrap().unwrap();
|
||||
let user_data = dbg!(self.database_handle.get(author.user_id().as_str()).unwrap().unwrap());
|
||||
let (_, reputation) = convert_from_bytes_sled(&user_data);
|
||||
self.send_message(format!("Your current reputation is: {}", reputation).as_str()).await;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue