middlewares_fallible/
middlewares_fallible.rs1use teloxide::prelude::*;
2
3type HandlerResult = Result<(), teloxide::RequestError>;
4
5#[tokio::main]
6async fn main() {
7 pretty_env_logger::init();
8 log::info!("Starting middlewares_fallible bot...");
9
10 let bot = Bot::from_env();
11
12 let handler = Update::filter_message()
13 .inspect(|msg: Message| println!("Before (message #{}).", msg.id))
15 .map_async(my_endpoint)
17 .filter(|result: HandlerResult, msg: Message| {
20 println!("In-between (message #{}).", msg.id);
21 match result {
22 Ok(()) => true,
23 Err(err) => {
24 eprintln!("Our endpoint failed: {err}");
25 false
26 }
27 }
28 })
29 .endpoint(|msg: Message| async move {
31 println!("After (message #{}).", msg.id);
32 HandlerResult::Ok(())
33 });
34
35 Dispatcher::builder(bot, handler).enable_ctrlc_handler().build().dispatch().await;
36}
37
38async fn my_endpoint(bot: Bot, msg: Message) -> HandlerResult {
39 bot.send_message(msg.chat.id, "Inside the endpoint.").await?;
40 Ok(())
41}