use crate::{entity::prelude::MasterPass, errors::NoUserInfo}; use sea_orm::prelude::*; use teloxide::{adaptors::Throttle, dispatching::DpHandlerDescription, prelude::*}; async fn master_pass_exists(msg: Message, db: DatabaseConnection) -> Option> { let user_id = match msg.from() { Some(user) => user.id.0, None => return Some(Some(NoUserInfo.to_string())), }; match MasterPass::exists(user_id, &db).await { Ok(true) => None, Ok(false) => Some(None), Err(err) => Some(Some(err.to_string())), } } async fn notify_about_no_master_pass( bot: Throttle, result: Option, msg: Message, ) -> crate::Result<()> { if let Some(message) = result { return Err(crate::Error::msg(message)); } bot.send_message(msg.chat.id, "No master password set") .await?; Ok(()) } pub fn get_handler() -> Handler<'static, DependencyMap, crate::Result<()>, DpHandlerDescription> { dptree::filter_map_async(master_pass_exists).endpoint(notify_about_no_master_pass) }