Skip to content

Commit bb705e0

Browse files
committed
Support replies to ephemeral messages.
1 parent 8475ea1 commit bb705e0

2 files changed

Lines changed: 10 additions & 4 deletions

File tree

td/telegram/MessageReplyHeader.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,14 @@ MessageReplyHeader::MessageReplyHeader(Td *td, tl_object_ptr<telegram_api::Messa
3434
CHECK(reply_header_ptr->get_id() == telegram_api::messageReplyHeader::ID);
3535
auto reply_header = telegram_api::move_object_as<telegram_api::messageReplyHeader>(reply_header_ptr);
3636

37-
if (reply_header->reply_to_ephemeral_) {
38-
return;
39-
}
40-
4137
bool can_have_thread = td->dialog_manager_->can_dialog_have_threads(dialog_id);
4238
if (!message_id.is_scheduled() && can_have_thread) {
4339
is_topic_message_ = reply_header->forum_topic_;
4440
if (reply_header->reply_to_top_id_ == 0 && is_topic_message_ && reply_header->reply_from_ != nullptr &&
4541
reply_header->reply_to_peer_id_ == nullptr && reply_header->reply_to_msg_id_ != 0) {
4642
reply_header->reply_to_top_id_ = reply_header->reply_to_msg_id_;
4743
reply_header->reply_to_msg_id_ = 0;
44+
reply_header->reply_to_ephemeral_ = false;
4845
}
4946
if (reply_header->reply_to_top_id_ != 0) {
5047
top_thread_message_id_ = MessageId(ServerMessageId(reply_header->reply_to_top_id_));

td/telegram/RepliedMessageInfo.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,15 @@ RepliedMessageInfo::RepliedMessageInfo(Td *td, tl_object_ptr<telegram_api::messa
7070
LOG(ERROR) << "Receive reply from other chat " << to_string(reply_header) << " in "
7171
<< MessageFullId{dialog_id, message_id};
7272
}
73+
} else if (reply_header->reply_to_ephemeral_) {
74+
if (reply_header->reply_to_msg_id_ == 0 || reply_header->reply_to_peer_id_ != nullptr ||
75+
reply_header->reply_from_ != nullptr || reply_header->reply_media_ != nullptr ||
76+
reply_header->todo_item_id_ != 0 || !reply_header->poll_option_.empty()) {
77+
LOG(ERROR) << "Receive " << to_string(reply_header) << " in " << MessageFullId{dialog_id, message_id};
78+
} else {
79+
message_id_ = td->messages_manager_->get_message_id_of_ephemeral_message_id(
80+
dialog_id, EphemeralMessageId(reply_header->reply_to_msg_id_));
81+
}
7382
} else {
7483
if (reply_header->reply_to_msg_id_ != 0) {
7584
message_id_ = MessageId(ServerMessageId(reply_header->reply_to_msg_id_));

0 commit comments

Comments
 (0)