diff --git a/src/state/generic.rs b/src/state/generic.rs index 987c551..1a7a15c 100644 --- a/src/state/generic.rs +++ b/src/state/generic.rs @@ -21,6 +21,11 @@ where ) -> BoxFuture<'a, crate::Result>>, { let mut handler = next.lock().await; + if handler.func.is_none() { + let _ = dialogue.exit().await; + return Err(HandlerUsed.into()); + } + delete_optional(&bot, handler.previous.as_ref()).await; let text = match msg.text() { @@ -40,11 +45,6 @@ where return Ok(()); } - if handler.func.is_none() { - let _ = dialogue.exit().await; - return Err(HandlerUsed.into()); - } - if let Some(failure_message) = check(&bot, &msg, &db, text).await? { handler.previous = Some(failure_message); return Ok(()); diff --git a/src/state/get_existing_name.rs b/src/state/get_existing_name.rs index 3492192..0276fa3 100644 --- a/src/state/get_existing_name.rs +++ b/src/state/get_existing_name.rs @@ -28,7 +28,13 @@ pub async fn get_existing_name( next: PackagedHandler, ) -> crate::Result<()> { let user_id = msg.from().ok_or(NoUserInfo)?.id.0; + let mut handler = next.lock().await; + if handler.func.is_none() { + let _ = dialogue.exit().await; + return Err(HandlerUsed.into()); + } + delete_optional(&bot, handler.previous.as_ref()).await; let text = match msg.text() { @@ -54,11 +60,6 @@ pub async fn get_existing_name( return Ok(()); } - if handler.func.is_none() { - let _ = dialogue.exit().await; - return Err(HandlerUsed.into()); - } - if let Some(failure_message) = check_name(&bot, &msg, &db, text, user_id).await? { handler.previous = Some(failure_message); return Ok(()); diff --git a/src/state/get_user.rs b/src/state/get_user.rs index d4400e4..1ed1dab 100644 --- a/src/state/get_user.rs +++ b/src/state/get_user.rs @@ -114,7 +114,13 @@ pub async fn get_user( next: PackagedHandler, ) -> crate::Result<()> { let user_id = msg.from().ok_or(NoUserInfo)?.id.0; + let mut handler = next.lock().await; + if handler.func.is_none() { + let _ = dialogue.exit().await; + return Err(HandlerUsed.into()); + } + delete_optional(&bot, handler.previous.as_ref()).await; if let Some("/cancel") = msg.text().map(str::trim) { @@ -125,11 +131,6 @@ pub async fn get_user( return Ok(()); } - if handler.func.is_none() { - let _ = dialogue.exit().await; - return Err(HandlerUsed.into()); - } - let document = match msg.document() { Some(document) => document, None => {