From bb705e0cb397187edc7932b4ab68870de12d702a Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 30 Jun 2026 19:23:51 +0300 Subject: Support replies to ephemeral messages. --- td/telegram/MessageReplyHeader.cpp | 5 +---- td/telegram/RepliedMessageInfo.cpp | 9 +++++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/td/telegram/MessageReplyHeader.cpp b/td/telegram/MessageReplyHeader.cpp index e7d42c3b6..8e70b4c58 100644 --- a/td/telegram/MessageReplyHeader.cpp +++ b/td/telegram/MessageReplyHeader.cpp @@ -34,10 +34,6 @@ MessageReplyHeader::MessageReplyHeader(Td *td, tl_object_ptrget_id() == telegram_api::messageReplyHeader::ID); auto reply_header = telegram_api::move_object_as(reply_header_ptr); - if (reply_header->reply_to_ephemeral_) { - return; - } - bool can_have_thread = td->dialog_manager_->can_dialog_have_threads(dialog_id); if (!message_id.is_scheduled() && can_have_thread) { is_topic_message_ = reply_header->forum_topic_; @@ -45,6 +41,7 @@ MessageReplyHeader::MessageReplyHeader(Td *td, tl_object_ptrreply_to_peer_id_ == nullptr && reply_header->reply_to_msg_id_ != 0) { reply_header->reply_to_top_id_ = reply_header->reply_to_msg_id_; reply_header->reply_to_msg_id_ = 0; + reply_header->reply_to_ephemeral_ = false; } if (reply_header->reply_to_top_id_ != 0) { top_thread_message_id_ = MessageId(ServerMessageId(reply_header->reply_to_top_id_)); diff --git a/td/telegram/RepliedMessageInfo.cpp b/td/telegram/RepliedMessageInfo.cpp index 22381b151..961e241ff 100644 --- a/td/telegram/RepliedMessageInfo.cpp +++ b/td/telegram/RepliedMessageInfo.cpp @@ -70,6 +70,15 @@ RepliedMessageInfo::RepliedMessageInfo(Td *td, tl_object_ptrreply_to_ephemeral_) { + if (reply_header->reply_to_msg_id_ == 0 || reply_header->reply_to_peer_id_ != nullptr || + reply_header->reply_from_ != nullptr || reply_header->reply_media_ != nullptr || + reply_header->todo_item_id_ != 0 || !reply_header->poll_option_.empty()) { + LOG(ERROR) << "Receive " << to_string(reply_header) << " in " << MessageFullId{dialog_id, message_id}; + } else { + message_id_ = td->messages_manager_->get_message_id_of_ephemeral_message_id( + dialog_id, EphemeralMessageId(reply_header->reply_to_msg_id_)); + } } else { if (reply_header->reply_to_msg_id_ != 0) { message_id_ = MessageId(ServerMessageId(reply_header->reply_to_msg_id_)); -- cgit v1.2.3