diff --git a/teloxide_tests/src/server/routes/forward_message.rs b/teloxide_tests/src/server/routes/forward_message.rs index f8ecba7..fb71573 100644 --- a/teloxide_tests/src/server/routes/forward_message.rs +++ b/teloxide_tests/src/server/routes/forward_message.rs @@ -2,7 +2,7 @@ use std::sync::Mutex; use actix_web::{error::ErrorBadRequest, web, Responder}; use serde::Deserialize; -use teloxide::types::{ChatKind, Me, MessageId, MessageKind, MessageOrigin, PublicChatKind}; +use teloxide::types::{Me, MessageId, MessageKind, MessageOrigin}; use super::{make_telegram_result, BodyChatId}; use crate::{ @@ -36,34 +36,30 @@ pub async fn forward_message( let message_clone = message.clone(); if let MessageKind::Common(ref mut common) = message.kind { - common.forward_origin = Some(match message.chat.kind { - ChatKind::Private(_) => match message.from { - Some(ref user) => MessageOrigin::User { - date: message_clone.date, - sender_user: user.clone(), - }, - None => MessageOrigin::HiddenUser { - date: message_clone.date, - sender_user_name: message_clone - .chat - .username() - .unwrap_or("no_username") - .to_string(), - }, - }, - ChatKind::Public(public_chat) => match public_chat.kind { - PublicChatKind::Group(_) => MessageOrigin::Chat { - date: message_clone.date, - sender_chat: message_clone.chat, - author_signature: None, - }, - _ => MessageOrigin::Channel { - date: message_clone.date, - chat: message_clone.chat, - message_id: message_clone.id, - author_signature: None, - }, - }, + common.forward_origin = Some(if message.chat.is_channel() { + MessageOrigin::Channel { + date: message_clone.date, + chat: message_clone.chat, + message_id: message_clone.id, + author_signature: None, + } + } else if let Some(sender_chat) = &message.sender_chat { + MessageOrigin::Chat { + date: message_clone.date, + sender_chat: sender_chat.clone(), + author_signature: None, + } + } else if let Some(user) = &message.from { + MessageOrigin::User { + date: message_clone.date, + sender_user: user.clone(), + } + } else { + // This is probably unreachable. + MessageOrigin::HiddenUser { + date: message_clone.date, + sender_user_name: "Unknown user".to_string(), + } }); common.has_protected_content = body.protect_content.unwrap_or(false); } diff --git a/teloxide_tests/src/tests.rs b/teloxide_tests/src/tests.rs index baf51ab..ac274d3 100644 --- a/teloxide_tests/src/tests.rs +++ b/teloxide_tests/src/tests.rs @@ -1084,6 +1084,10 @@ async fn test_forward_message() { last_sent_message.forward_date(), Some(first_sent_message.date) ); + assert_eq!( + last_sent_message.forward_from_user().unwrap().id, + first_sent_message.from.as_ref().unwrap().id + ); } #[tokio::test]