From 95edba5e3426d038e331e6ec7f123546e4443310 Mon Sep 17 00:00:00 2001 From: Bulat Kurbanov Date: Sat, 23 Sep 2023 01:07:17 +0200 Subject: [PATCH] Fix --- src/bots/approved_bot/modules/download/mod.rs | 55 ++++++++++++------- .../approved_bot/services/batch_downloader.rs | 5 +- 2 files changed, 38 insertions(+), 22 deletions(-) diff --git a/src/bots/approved_bot/modules/download/mod.rs b/src/bots/approved_bot/modules/download/mod.rs index b02db77..80a18bb 100644 --- a/src/bots/approved_bot/modules/download/mod.rs +++ b/src/bots/approved_bot/modules/download/mod.rs @@ -28,7 +28,7 @@ use crate::{ }, book_library::{get_book, get_author_books_available_types, get_translator_books_available_types, get_sequence_books_available_types}, donation_notifications::send_donation_notification, user_settings::get_user_or_default_lang_codes, batch_downloader::{TaskObjectType, CreateTaskData}, - batch_downloader::{create_task, get_task, TaskStatus} + batch_downloader::{create_task, get_task, TaskStatus, Task} }, tools::filter_callback_query, modules::download::callback_data::DownloadArchiveQueryData, @@ -322,6 +322,30 @@ async fn send_error_message(bot: CacheMe>, chat_id: ChatId, messag .await; } +async fn send_archive_link( + bot: CacheMe>, + message: Message, + task: Task, +) -> BotHandlerInternal { + bot + .edit_message_text( + message.chat.id, + message.id, + format!( + "Файл не может быть загружен в чат! \n \ + Вы можете скачать его по ссылке (работает 3 часа)", + task.result_link.unwrap() + ) + ) + .parse_mode(ParseMode::Html) + .reply_markup(InlineKeyboardMarkup { + inline_keyboard: vec![], + }) + .await?; + + Ok(()) +} + async fn wait_archive( bot: CacheMe>, task_id: String, @@ -366,8 +390,15 @@ async fn wait_archive( return Ok(()); } + let content_size = task.content_size.unwrap(); + + if content_size > 20 * 1024 * 1024 { + send_archive_link(bot.clone(), message.clone(), task.clone()).await?; + return Ok(()) + } + let downloaded_data = match download_file_by_link( - task.result_filename.unwrap(), + task.clone().result_filename.unwrap(), task.result_link.clone().unwrap() ).await { Ok(v) => v, @@ -384,24 +415,8 @@ async fn wait_archive( downloaded_data, ).await { Ok(_) => (), - Err(err) => { - let _ = bot - .edit_message_text( - message.chat.id, - message.id, - format!( - "Файл не может быть загружен в чат! \n \ - Вы можете скачать его по ссылке (работает 3 часа)", - task.result_link.unwrap() - ) - ) - .parse_mode(ParseMode::Html) - .reply_markup(InlineKeyboardMarkup { - inline_keyboard: vec![], - }) - .await; - log::error!("{:?}", err); - return Err(err); + Err(_) => { + send_archive_link(bot.clone(), message.clone(), task).await?; }, } diff --git a/src/bots/approved_bot/services/batch_downloader.rs b/src/bots/approved_bot/services/batch_downloader.rs index 2722505..59c55f8 100644 --- a/src/bots/approved_bot/services/batch_downloader.rs +++ b/src/bots/approved_bot/services/batch_downloader.rs @@ -13,7 +13,7 @@ pub enum TaskObjectType { Translator, } -#[derive(Deserialize, PartialEq)] +#[derive(Deserialize, PartialEq, Clone)] #[serde(rename_all = "snake_case")] pub enum TaskStatus { InProgress, @@ -30,7 +30,7 @@ pub struct CreateTaskData { pub allowed_langs: SmallVec<[SmartString; 3]>, } -#[derive(Deserialize)] +#[derive(Deserialize, Clone)] pub struct Task { pub id: String, pub status: TaskStatus, @@ -38,6 +38,7 @@ pub struct Task { pub error_message: Option, pub result_filename: Option, pub result_link: Option, + pub content_size: Option } pub async fn create_task(