mirror of
https://github.com/flibusta-apps/book_bot.git
synced 2025-12-06 15:35:35 +01:00
Fix
This commit is contained in:
@@ -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},
|
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},
|
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,
|
tools::filter_callback_query, modules::download::callback_data::DownloadArchiveQueryData,
|
||||||
@@ -322,6 +322,30 @@ async fn send_error_message(bot: CacheMe<Throttle<Bot>>, chat_id: ChatId, messag
|
|||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn send_archive_link(
|
||||||
|
bot: CacheMe<Throttle<Bot>>,
|
||||||
|
message: Message,
|
||||||
|
task: Task,
|
||||||
|
) -> BotHandlerInternal {
|
||||||
|
bot
|
||||||
|
.edit_message_text(
|
||||||
|
message.chat.id,
|
||||||
|
message.id,
|
||||||
|
format!(
|
||||||
|
"Файл не может быть загружен в чат! \n \
|
||||||
|
Вы можете скачать его <a href=\"{}\">по ссылке</a> (работает 3 часа)",
|
||||||
|
task.result_link.unwrap()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.parse_mode(ParseMode::Html)
|
||||||
|
.reply_markup(InlineKeyboardMarkup {
|
||||||
|
inline_keyboard: vec![],
|
||||||
|
})
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
async fn wait_archive(
|
async fn wait_archive(
|
||||||
bot: CacheMe<Throttle<Bot>>,
|
bot: CacheMe<Throttle<Bot>>,
|
||||||
task_id: String,
|
task_id: String,
|
||||||
@@ -366,8 +390,15 @@ async fn wait_archive(
|
|||||||
return Ok(());
|
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(
|
let downloaded_data = match download_file_by_link(
|
||||||
task.result_filename.unwrap(),
|
task.clone().result_filename.unwrap(),
|
||||||
task.result_link.clone().unwrap()
|
task.result_link.clone().unwrap()
|
||||||
).await {
|
).await {
|
||||||
Ok(v) => v,
|
Ok(v) => v,
|
||||||
@@ -384,24 +415,8 @@ async fn wait_archive(
|
|||||||
downloaded_data,
|
downloaded_data,
|
||||||
).await {
|
).await {
|
||||||
Ok(_) => (),
|
Ok(_) => (),
|
||||||
Err(err) => {
|
Err(_) => {
|
||||||
let _ = bot
|
send_archive_link(bot.clone(), message.clone(), task).await?;
|
||||||
.edit_message_text(
|
|
||||||
message.chat.id,
|
|
||||||
message.id,
|
|
||||||
format!(
|
|
||||||
"Файл не может быть загружен в чат! \n \
|
|
||||||
Вы можете скачать его <a href=\"{}\">по ссылке</a> (работает 3 часа)",
|
|
||||||
task.result_link.unwrap()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
.parse_mode(ParseMode::Html)
|
|
||||||
.reply_markup(InlineKeyboardMarkup {
|
|
||||||
inline_keyboard: vec![],
|
|
||||||
})
|
|
||||||
.await;
|
|
||||||
log::error!("{:?}", err);
|
|
||||||
return Err(err);
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ pub enum TaskObjectType {
|
|||||||
Translator,
|
Translator,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, PartialEq)]
|
#[derive(Deserialize, PartialEq, Clone)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum TaskStatus {
|
pub enum TaskStatus {
|
||||||
InProgress,
|
InProgress,
|
||||||
@@ -30,7 +30,7 @@ pub struct CreateTaskData {
|
|||||||
pub allowed_langs: SmallVec<[SmartString; 3]>,
|
pub allowed_langs: SmallVec<[SmartString; 3]>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize, Clone)]
|
||||||
pub struct Task {
|
pub struct Task {
|
||||||
pub id: String,
|
pub id: String,
|
||||||
pub status: TaskStatus,
|
pub status: TaskStatus,
|
||||||
@@ -38,6 +38,7 @@ pub struct Task {
|
|||||||
pub error_message: Option<String>,
|
pub error_message: Option<String>,
|
||||||
pub result_filename: Option<String>,
|
pub result_filename: Option<String>,
|
||||||
pub result_link: Option<String>,
|
pub result_link: Option<String>,
|
||||||
|
pub content_size: Option<u64>
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn create_task(
|
pub async fn create_task(
|
||||||
|
|||||||
Reference in New Issue
Block a user