From 8307bee4cfd2ccc86812becb87a2bf5704530fa2 Mon Sep 17 00:00:00 2001 From: StNicolay Date: Wed, 10 May 2023 18:47:46 +0300 Subject: [PATCH] Updated delete_message.rs to send a message if the deletion fails and added a function to just get a handler to chain with the schema --- src/handlers/callbacks/delete_message.rs | 25 ++++++++++++++++-------- src/handlers/mod.rs | 5 ++--- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/handlers/callbacks/delete_message.rs b/src/handlers/callbacks/delete_message.rs index 8945586..20195dd 100644 --- a/src/handlers/callbacks/delete_message.rs +++ b/src/handlers/callbacks/delete_message.rs @@ -1,17 +1,26 @@ -use teloxide::{adaptors::Throttle, prelude::*}; +use crate::handlers::markups::deletion_markup; +use teloxide::{adaptors::Throttle, dispatching::DpHandlerDescription, prelude::*}; /// Deletes the message from the callback -pub async fn run(bot: Throttle, q: CallbackQuery) -> crate::Result<()> { - match q.message { - Some(msg) => { - bot.delete_message(msg.chat.id, msg.id).await?; - Ok(()) +async fn run(bot: Throttle, q: CallbackQuery) -> crate::Result<()> { + if let Some(msg) = q.message { + if let Err(err) = bot.delete_message(msg.chat.id, msg.id).await { + let _ = bot + .send_message(msg.chat.id, "Error deleting the message") + .reply_markup(deletion_markup()) + .await; + return Err(err.into()); } - None => Ok(()), } + Ok(()) } /// Filters the delete_message callbacks -pub fn filter(q: CallbackQuery) -> bool { +fn filter(q: CallbackQuery) -> bool { matches!(q.data.as_deref(), Some("delete_message")) } + +/// Gets a handler for deleting the message +pub fn get_handler() -> Handler<'static, DependencyMap, crate::Result<()>, DpHandlerDescription> { + dptree::filter(filter).endpoint(run) +} diff --git a/src/handlers/mod.rs b/src/handlers/mod.rs index 95aa62b..87977c3 100644 --- a/src/handlers/mod.rs +++ b/src/handlers/mod.rs @@ -115,9 +115,8 @@ pub fn get_dispatcher( .branch(command_handler) .branch(endpoint(commands::default)); - let callback_handler = Update::filter_callback_query() - .filter(callbacks::delete_message::filter) - .endpoint(callbacks::delete_message::run); + let callback_handler = + Update::filter_callback_query().chain(callbacks::delete_message::get_handler()); let handler = dptree::entry() .branch(message_handler)