From 5288eb0b0a2bf2dbf520a45beb6e8d13cd1ef9fc Mon Sep 17 00:00:00 2001 From: Bulat Kurbanov Date: Fri, 24 May 2024 01:32:15 +0200 Subject: [PATCH] Ignore webhook check for 10 minutes if receive 3 error in row --- src/bots_manager/mod.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/bots_manager/mod.rs b/src/bots_manager/mod.rs index b68b757..6199d50 100644 --- a/src/bots_manager/mod.rs +++ b/src/bots_manager/mod.rs @@ -48,6 +48,13 @@ pub static CHAT_DONATION_NOTIFICATIONS_CACHE: Lazy> = Lazy::ne .build() }); +pub static WEBHOOK_CHECK_ERRORS_COUNT: Lazy> = Lazy::new(|| { + Cache::builder() + .time_to_idle(Duration::from_secs(600)) + .max_capacity(128) + .build() +}); + type StopTokenWithSender = ( StopToken, ClosableSender>, @@ -129,6 +136,12 @@ impl BotsManager { pub async fn check_pending_updates() { for (token, bot_data) in BOTS_DATA.iter() { + let error_count = WEBHOOK_CHECK_ERRORS_COUNT.get(&bot_data.id).await.unwrap_or(0); + + if error_count >= 3 { + continue; + } + let bot = Bot::new(token.clone().as_str()); let result = bot.get_webhook_info().send().await; @@ -148,7 +161,11 @@ impl BotsManager { set_webhook(&bot_data).await; } }, - Err(err) => log::error!("Error getting webhook info: {:?}", err), + Err(err) => { + log::error!("Error getting webhook info: {:?}", err); + + WEBHOOK_CHECK_ERRORS_COUNT.insert(bot_data.id, error_count + 1).await; + }, } } }