Fix replies for scheduled messages.

This commit is contained in:
levlam 2024-06-11 16:57:53 +03:00
parent fdee1297df
commit 95715158fe
2 changed files with 7 additions and 6 deletions

View File

@ -29030,14 +29030,14 @@ void MessagesManager::update_reply_to_message_id(DialogId dialog_id, MessageId o
bool have_new_message, const char *source) {
LOG(INFO) << "Update replies of " << MessageFullId{dialog_id, old_message_id} << " to " << new_message_id << " from "
<< source;
auto it = replied_yet_unsent_messages_.find({dialog_id, old_message_id});
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;
}
CHECK(old_message_id.is_yet_unsent());
CHECK(new_message_id == MessageId() || new_message_id.is_valid() || new_message_id.is_valid_scheduled());
MessageFullId old_message_full_id(dialog_id, old_message_id);
for (auto message_full_id : it->second) {
auto reply_d = get_dialog(message_full_id.get_dialog_id());
CHECK(reply_d != nullptr);
@ -29049,7 +29049,8 @@ void MessagesManager::update_reply_to_message_id(DialogId dialog_id, MessageId o
if (new_message_id != MessageId()) {
LOG_CHECK(replied_m->replied_message_info.get_reply_message_full_id(reply_d->dialog_id, true) ==
old_message_full_id)
<< old_message_full_id << ' ' << replied_m->replied_message_info << ' ' << *input_reply_to;
<< old_message_full_id << ' ' << new_message_id << ' ' << replied_m->replied_message_info << ' '
<< *input_reply_to;
update_message_reply_to_message_id(reply_d, replied_m, new_message_id, true);
} else {
set_message_reply(reply_d, replied_m, MessageInputReplyTo(), true);

View File

@ -120,12 +120,12 @@ RepliedMessageInfo::RepliedMessageInfo(Td *td, tl_object_ptr<telegram_api::messa
}
RepliedMessageInfo::RepliedMessageInfo(Td *td, const MessageInputReplyTo &input_reply_to) {
if (!input_reply_to.message_id_.is_valid()) {
if (!input_reply_to.message_id_.is_valid() && !input_reply_to.message_id_.is_valid_scheduled()) {
return;
}
message_id_ = input_reply_to.message_id_;
quote_ = input_reply_to.quote_.clone();
if (input_reply_to.dialog_id_ != DialogId()) {
if (input_reply_to.dialog_id_ != DialogId() && input_reply_to.message_id_.is_valid()) {
auto info =
td->messages_manager_->get_forwarded_message_info({input_reply_to.dialog_id_, input_reply_to.message_id_});
if (info.origin_date_ == 0 || info.origin_.is_empty() || info.content_ == nullptr) {
@ -315,7 +315,7 @@ td_api::object_ptr<td_api::messageReplyToMessage> RepliedMessageInfo::get_messag
MessageInputReplyTo RepliedMessageInfo::get_input_reply_to() const {
CHECK(!is_external());
if (message_id_.is_valid()) {
if (message_id_.is_valid() || message_id_.is_valid_scheduled()) {
return MessageInputReplyTo(message_id_, dialog_id_, quote_.clone(true));
}
return {};