aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2026-07-13 22:34:36 +0300
committerlevlam <levlam@telegram.org>2026-07-13 22:34:36 +0300
commit6a8265f257192cdb86510b9e692ffc360582da33 (patch)
tree5df16b1861157bd567c3e2b84ae332169d534fd0
parent9bf345259b43c84af51e48180137756ef253c0b9 (diff)
Improve RepliedMessageInfo for replies to ephemeral messages.
-rw-r--r--td/telegram/MessagesManager.cpp10
-rw-r--r--td/telegram/RepliedMessageInfo.cpp7
-rw-r--r--td/telegram/RepliedMessageInfo.h2
3 files changed, 12 insertions, 7 deletions
diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp
index b2eaae27e..01d0dd6b5 100644
--- a/td/telegram/MessagesManager.cpp
+++ b/td/telegram/MessagesManager.cpp
@@ -20887,7 +20887,7 @@ unique_ptr<MessagesManager::Message> MessagesManager::create_message_to_send(
m->send_date = G()->unix_time();
m->date = is_scheduled ? options.schedule_date : m->send_date;
m->schedule_repeat_period = options.schedule_repeat_period;
- m->replied_message_info = RepliedMessageInfo(td_, input_reply_to, message_topic);
+ m->replied_message_info = RepliedMessageInfo(td_, input_reply_to, dialog_id, message_topic);
m->reply_to_story_full_id = input_reply_to.get_story_full_id();
m->input_reply_to = std::move(input_reply_to);
m->reply_to_random_id = reply_to_random_id;
@@ -25405,7 +25405,7 @@ Result<MessageId> MessagesManager::add_local_message(
m->sender_user_id = sender_user_id;
m->sender_dialog_id = sender_dialog_id;
m->date = G()->unix_time();
- m->replied_message_info = RepliedMessageInfo(td_, input_reply_to, MessageTopic());
+ m->replied_message_info = RepliedMessageInfo(td_, input_reply_to, dialog_id, MessageTopic());
m->reply_to_story_full_id = input_reply_to.get_story_full_id();
if (!message_id.is_scheduled()) {
auto reply_to_message_id = input_reply_to.get_same_chat_reply_to_message_id();
@@ -27637,13 +27637,13 @@ void MessagesManager::check_send_message_result(int64 random_id, DialogId dialog
void MessagesManager::update_reply_to_message_id(DialogId dialog_id, MessageId old_message_id, MessageId new_message_id,
bool have_new_message, const char *source) {
- LOG(DEBUG) << "Update replies of " << MessageFullId{dialog_id, old_message_id} << " to " << new_message_id << " from "
- << source;
MessageFullId old_message_full_id(dialog_id, old_message_id);
auto it = replied_yet_unsent_messages_.find(old_message_full_id);
if (it == replied_yet_unsent_messages_.end()) {
return;
}
+ LOG(DEBUG) << "Update replies to " << MessageFullId{dialog_id, old_message_id} << " to its new " << new_message_id
+ << " from " << source;
CHECK(old_message_id.is_yet_unsent());
CHECK(new_message_id == MessageId() || new_message_id.is_valid() || new_message_id.is_valid_scheduled());
@@ -35653,7 +35653,7 @@ void MessagesManager::set_message_reply(const Dialog *d, Message *m, MessageInpu
if (is_message_in_dialog) {
unregister_message_reply(d->dialog_id, m);
}
- m->replied_message_info = RepliedMessageInfo(td_, input_reply_to, get_message_topic(d->dialog_id, m));
+ m->replied_message_info = RepliedMessageInfo(td_, input_reply_to, d->dialog_id, get_message_topic(d->dialog_id, m));
m->reply_to_story_full_id = StoryFullId();
m->reply_to_random_id = get_message_reply_to_random_id(d, m);
if (!m->message_id.is_any_server()) {
diff --git a/td/telegram/RepliedMessageInfo.cpp b/td/telegram/RepliedMessageInfo.cpp
index d8bc43e2b..188101c71 100644
--- a/td/telegram/RepliedMessageInfo.cpp
+++ b/td/telegram/RepliedMessageInfo.cpp
@@ -139,8 +139,13 @@ RepliedMessageInfo::RepliedMessageInfo(Td *td, tl_object_ptr<telegram_api::messa
}
}
-RepliedMessageInfo::RepliedMessageInfo(Td *td, const MessageInputReplyTo &input_reply_to, const MessageTopic &topic) {
+RepliedMessageInfo::RepliedMessageInfo(Td *td, const MessageInputReplyTo &input_reply_to, DialogId dialog_id,
+ const MessageTopic &topic) {
if (!input_reply_to.message_id_.is_valid() && !input_reply_to.message_id_.is_valid_scheduled()) {
+ if (input_reply_to.ephemeral_message_id_.is_valid()) {
+ message_id_ = td->messages_manager_->get_message_id_of_ephemeral_message_id(dialog_id,
+ input_reply_to.ephemeral_message_id_);
+ }
return;
}
message_id_ = input_reply_to.message_id_;
diff --git a/td/telegram/RepliedMessageInfo.h b/td/telegram/RepliedMessageInfo.h
index 447b4922a..41f85e533 100644
--- a/td/telegram/RepliedMessageInfo.h
+++ b/td/telegram/RepliedMessageInfo.h
@@ -62,7 +62,7 @@ class RepliedMessageInfo {
RepliedMessageInfo(Td *td, tl_object_ptr<telegram_api::messageReplyHeader> &&reply_header, DialogId dialog_id,
MessageId message_id, int32 date);
- RepliedMessageInfo(Td *td, const MessageInputReplyTo &input_reply_to, const MessageTopic &topic);
+ RepliedMessageInfo(Td *td, const MessageInputReplyTo &input_reply_to, DialogId dialog_id, const MessageTopic &topic);
RepliedMessageInfo clone(Td *td) const;