aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2026-06-30 17:40:04 +0300
committerlevlam <levlam@telegram.org>2026-06-30 17:40:04 +0300
commitf361ab84273431387cd573de8c8cbb11b5b0f2c0 (patch)
treea1f6c57b0fbb4dd1719fccf4513a61899a148152
parentab3ecce039a44f424dd6606cce92c0453147b1d9 (diff)
Improve ephemeral message handling.
-rw-r--r--td/telegram/MessageReplyHeader.cpp6
-rw-r--r--td/telegram/MessagesManager.cpp2
-rw-r--r--td/telegram/RepliedMessageInfo.cpp2
3 files changed, 5 insertions, 5 deletions
diff --git a/td/telegram/MessageReplyHeader.cpp b/td/telegram/MessageReplyHeader.cpp
index 432b24095..e7d42c3b6 100644
--- a/td/telegram/MessageReplyHeader.cpp
+++ b/td/telegram/MessageReplyHeader.cpp
@@ -24,8 +24,8 @@ MessageReplyHeader::MessageReplyHeader(Td *td, tl_object_ptr<telegram_api::Messa
auto reply_header = telegram_api::move_object_as<telegram_api::messageReplyStoryHeader>(reply_header_ptr);
DialogId story_dialog_id(reply_header->peer_);
StoryId story_id(reply_header->story_id_);
- if (!story_dialog_id.is_valid() || !story_id.is_server()) {
- LOG(ERROR) << "Receive " << to_string(reply_header);
+ if (!story_dialog_id.is_valid() || !story_id.is_server() || message_id == MessageId()) {
+ LOG(ERROR) << "Receive in " << dialog_id << ": " << to_string(reply_header);
} else {
story_full_id_ = {story_dialog_id, story_id};
}
@@ -69,7 +69,7 @@ MessageReplyHeader::MessageReplyHeader(Td *td, tl_object_ptr<telegram_api::Messa
is_topic_message_ = false;
}
}
- if (top_thread_message_id_ >= message_id) {
+ if (top_thread_message_id_ >= message_id && message_id != MessageId()) {
LOG(ERROR) << "Receive top thread " << top_thread_message_id_ << " in " << message_id << " in " << dialog_id;
top_thread_message_id_ = MessageId();
}
diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp
index d347ef304..bdec793d6 100644
--- a/td/telegram/MessagesManager.cpp
+++ b/td/telegram/MessagesManager.cpp
@@ -11385,7 +11385,7 @@ std::pair<DialogId, unique_ptr<MessagesManager::Message>> MessagesManager::creat
}
return {DialogId(), nullptr};
}
- if (message_id.is_yet_unsent() || message_id.is_local()) {
+ if (message_id.is_yet_unsent() || (message_id.is_local() && message_info.receiver_user_id == UserId())) {
LOG(ERROR) << "Receive " << message_id;
return {DialogId(), nullptr};
}
diff --git a/td/telegram/RepliedMessageInfo.cpp b/td/telegram/RepliedMessageInfo.cpp
index 67acb42d9..c084673b5 100644
--- a/td/telegram/RepliedMessageInfo.cpp
+++ b/td/telegram/RepliedMessageInfo.cpp
@@ -85,7 +85,7 @@ RepliedMessageInfo::RepliedMessageInfo(Td *td, tl_object_ptr<telegram_api::messa
LOG(ERROR) << "Receive " << to_string(reply_header) << " in " << MessageFullId{dialog_id, message_id};
message_id_ = MessageId();
dialog_id_ = DialogId();
- } else if (!message_id.is_scheduled() && !dialog_id_.is_valid() &&
+ } else if (!message_id.is_scheduled() && message_id != MessageId() && !dialog_id_.is_valid() &&
((message_id_ > message_id && !has_qts_messages(td, dialog_id)) || message_id_ == message_id)) {
LOG(ERROR) << "Receive reply to " << message_id_ << " in " << MessageFullId{dialog_id, message_id};
message_id_ = MessageId();