mirror of
https://github.com/flibusta-apps/book_bot.git
synced 2025-12-06 15:35:35 +01:00
Add user activity update
This commit is contained in:
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user