diff --git a/src/workers.rs b/src/workers.rs index e4b4346..cbff954 100644 --- a/src/workers.rs +++ b/src/workers.rs @@ -618,6 +618,54 @@ pub async fn upload_worker( } else { format!("{}.part{:02}", &video_filename, i) }; + let message = tclient + .send_message( + &chat, + InputMessage::text(&format!("Uploading {}...", &video_filename)), + ) + .await; + if let Err(ref err) = message { + eprintln!("Failed to send uploading message: {:?}", err); + let text = format!("{:#?}", err); + let size = text.len(); + let mut stream = Cursor::new(text.into_bytes()); + match tclient + .upload_stream(&mut stream, size, "failed-send-uploading.log".to_string()) + .await + { + Ok(uploaded) => { + let message = InputMessage::text("Failed to send uploading message") + .mime_type("text/plain") + .file(uploaded); + if let Err(err) = tclient.send_message(&chat, message).await { + eprintln!( + "Failed to send message about failing to send uploading message: {:?}", + err + ); + if let Err(err) = tclient.send_message(&chat, InputMessage::text("Failed to send message about failing to send uploading message, see logs")).await { + eprintln!("Failed to send message about failing to send message about failing to send uploading message: {:?}", err); + } + } + } + Err(err) => { + eprintln!( + "Failed to upload logs about failing to send uploading message: {:?}", + err + ); + if let Err(err) = tclient + .send_message( + &chat, + InputMessage::text( + "Failed to upload logs about failing to send uploading message, see logs", + ), + ) + .await + { + eprintln!("Failed to send message about failing to upload logs about failing to send uploading message: {:?}", err); + } + } + }; + } let mut size = file.stream_position().await.unwrap(); if size > 2000 * 1024 * 1024 { size = 2000 * 1024 * 1024; @@ -663,6 +711,50 @@ pub async fn upload_worker( } } }; + if let Ok(mut message) = message { + if let Err(err) = message.delete().await { + eprintln!("Failed to delete uploading message: {:?}", err); + let text = format!("{:#?}", err); + let size = text.len(); + let mut stream = Cursor::new(text.into_bytes()); + match tclient + .upload_stream(&mut stream, size, "failed-delete-uploading.log".to_string()) + .await + { + Ok(uploaded) => { + let message = InputMessage::text("Failed to delete uploading message") + .mime_type("text/plain") + .file(uploaded); + if let Err(err) = tclient.send_message(&chat, message).await { + eprintln!( + "Failed to send message about failing to delete uploading message: {:?}", + err + ); + if let Err(err) = tclient.send_message(&chat, InputMessage::text("Failed to send message about failing to delete uploading message, see logs")).await { + eprintln!("Failed to send message about failing to send message about failing to delete uploading message: {:?}", err); + } + } + } + Err(err) => { + eprintln!( + "Failed to upload logs about failing to delete uploading message: {:?}", + err + ); + if let Err(err) = tclient + .send_message( + &chat, + InputMessage::text( + "Failed to upload logs about failing to delete uploading message, see logs", + ), + ) + .await + { + eprintln!("Failed to send message about failing to upload logs about failing to delete uploading message: {:?}", err); + } + } + }; + } + } } if success { if let Err(err) = remove_file(&video_filename) {