aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2026-06-30 19:23:51 +0300
committerlevlam <levlam@telegram.org>2026-06-30 19:23:51 +0300
commitbb705e0cb397187edc7932b4ab68870de12d702a (patch)
tree7a4f5053d7ef76855bac35c80c0916157b9d32d0
parent8475ea1b3617371ffd41be9daa6878d8910bd7e6 (diff)
Support replies to ephemeral messages.
-rw-r--r--td/telegram/MessageReplyHeader.cpp5
-rw-r--r--td/telegram/RepliedMessageInfo.cpp9
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_ptr<telegram_api::Messa
CHECK(reply_header_ptr->get_id() == telegram_api::messageReplyHeader::ID);
auto reply_header = telegram_api::move_object_as<telegram_api::messageReplyHeader>(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_ptr<telegram_api::Messa
reply_header->reply_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_ptr<telegram_api::messa
LOG(ERROR) << "Receive reply from other chat " << to_string(reply_header) << " in "
<< MessageFullId{dialog_id, message_id};
}
+ } else if (reply_header->reply_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_));