From e7f70d0e09fb40672e930eaa39bbf98027ff5f1a Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 6 Nov 2023 12:42:06 +0300 Subject: [PATCH] Add messageSendingStateFailed.need_another_reply_quote. --- td/generate/scheme/td_api.tl | 3 ++- td/telegram/MessagesManager.cpp | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index efcc6abc3..290a1b6e4 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -1223,8 +1223,9 @@ messageSendingStatePending sending_id:int32 = MessageSendingState; //@error The cause of the message sending failure //@can_retry True, if the message can be re-sent //@need_another_sender True, if the message can be re-sent only on behalf of a different sender +//@need_another_reply_quote True, if the message can be re-sent only if another quote is chosen in the message that is replied by the given message //@retry_after Time left before the message can be re-sent, in seconds. No update is sent when this field changes -messageSendingStateFailed error:error can_retry:Bool need_another_sender:Bool retry_after:double = MessageSendingState; +messageSendingStateFailed error:error can_retry:Bool need_another_sender:Bool need_another_reply_quote:Bool retry_after:double = MessageSendingState; //@class MessageReplyTo @description Contains information about the message or the story a message is replying to diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index 733f5476d..8fb76cdf0 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -23997,9 +23997,11 @@ tl_object_ptr MessagesManager::get_message_sending_ auto error_code = m->send_error_code > 0 ? m->send_error_code : 400; auto need_another_sender = can_retry && error_code == 400 && m->send_error_message == CSlice("SEND_AS_PEER_INVALID"); + auto need_another_reply_quote = + can_retry && error_code == 400 && m->send_error_message == CSlice("QUOTE_TEXT_INVALID"); return td_api::make_object( td_api::make_object(error_code, m->send_error_message), can_retry, need_another_sender, - max(m->try_resend_at - Time::now(), 0.0)); + need_another_reply_quote, max(m->try_resend_at - Time::now(), 0.0)); } return nullptr; } @@ -26450,7 +26452,8 @@ bool MessagesManager::can_edit_message(DialogId dialog_id, const Message *m, boo bool MessagesManager::can_resend_message(const Message *m) const { if (m->send_error_code != 429 && m->send_error_message != "Message is too old to be re-sent automatically" && - m->send_error_message != "SCHEDULE_TOO_MUCH" && m->send_error_message != "SEND_AS_PEER_INVALID") { + m->send_error_message != "SCHEDULE_TOO_MUCH" && m->send_error_message != "SEND_AS_PEER_INVALID" && + m->send_error_message != "QUOTE_TEXT_INVALID") { return false; } if (m->is_bot_start_message) { @@ -28840,6 +28843,9 @@ bool MessagesManager::on_get_dialog_error(DialogId dialog_id, const Status &stat reload_dialog_info_full(dialog_id, "SEND_AS_PEER_INVALID"); return true; } + if (status.message() == CSlice("QUOTE_TEXT_INVALID")) { + return true; + } switch (dialog_id.get_type()) { case DialogType::User: