Add user activity update

This commit is contained in:
2023-01-05 19:47:18 +01:00
parent f1a7e83f99
commit 382707f866
6 changed files with 118 additions and 21 deletions

View File

@@ -4,19 +4,64 @@ mod tools;
use teloxide::{prelude::*, types::BotCommand};
use self::modules::{
annotations::get_annotations_handler, book::get_book_handler, download::get_download_hander,
help::get_help_handler, random::get_random_hander, search::get_search_hanlder,
settings::get_settings_handler, support::get_support_handler,
update_history::get_update_log_handler,
use self::{
modules::{
annotations::get_annotations_handler, book::get_book_handler,
download::get_download_hander, help::get_help_handler, random::get_random_hander,
search::get_search_hanlder, settings::get_settings_handler, support::get_support_handler,
update_history::get_update_log_handler,
},
services::user_settings::{get_user_or_default_lang_codes, update_user_activity},
};
use super::{BotCommands, BotHandler, ignore_channel_messages};
use super::{ignore_channel_messages, BotCommands, BotHandler};
async fn _update_activity(me: teloxide::types::Me, user: teloxide::types::User) -> Option<()> {
tokio::spawn(async move {
let allowed_langs = get_user_or_default_lang_codes(user.id).await;
match update_user_activity(
user.id,
user.last_name.clone().unwrap_or("".to_string()),
user.first_name.clone(),
user.username.clone().unwrap_or("".to_string()),
me.username.clone().unwrap(),
allowed_langs,
)
.await
{
Ok(_) => (),
Err(err) => log::warn!("{}", err),
}
});
None
}
fn update_user_activity_handler() -> BotHandler {
dptree::entry()
.branch(
Update::filter_callback_query().chain(dptree::filter_map_async(
|cq: CallbackQuery, me: teloxide::types::Me| async move {
_update_activity(me, cq.from).await
},
))
)
.branch(Update::filter_message().chain(dptree::filter_map_async(
|message: Message, me: teloxide::types::Me| async move {
match message.from() {
Some(user) => _update_activity(me, user.clone()).await,
None => None,
}
},
)))
}
pub fn get_approved_handler() -> (BotHandler, BotCommands) {
(
dptree::entry()
.branch(ignore_channel_messages())
.branch(update_user_activity_handler())
.branch(get_help_handler())
.branch(get_settings_handler())
.branch(get_support_handler())