use crate::{change_state, prelude::*}; #[inline] async fn get_master_pass( bot: Throttle, msg: Message, db: DatabaseConnection, dialogue: MainDialogue, mut ids: MessageIds, name: String, _: String, ) -> crate::Result<()> { dialogue.exit().await?; let user_id = msg.from().ok_or(NoUserInfo)?.id.0; Account::delete_by_id((user_id, name)).exec(&db).await?; ids.alter_message( &bot, "The account is successfully deleted", deletion_markup(), None, ) .await?; Ok(()) } pub async fn delete( bot: Throttle, q: CallbackQuery, db: DatabaseConnection, dialogue: MainDialogue, hash: super::NameHash, ) -> crate::Result<()> { let mut msg: MessageIds = q.message.as_ref().unwrap().into(); let user_id = q.from.id.0; let name = match name_from_hash(&db, user_id, &hash).await? { Some(name) => name, None => { msg.alter_message( &bot, "Account wan't found. Select another one", menu_markup("delete", user_id, &db).await?, None, ) .await?; return Ok(()); } }; let previous = bot.send_message( msg.0, "Send master password. Once you send correct master password the account is unrecoverable" ).await?; bot.answer_callback_query(q.id).await?; change_state!( dialogue, &previous, (name), State::GetMasterPass, get_master_pass ); Ok(()) }