From 52d67ae167ca301e55b42f1c6a529d5b59beb571 Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 24 Nov 2021 20:09:32 +0300 Subject: [PATCH] Reload chat info if receive CHAT_FORWARDS_RESTRICTED. --- td/telegram/MessagesManager.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp index fcd1fead2..1ccb5317e 100644 --- a/td/telegram/MessagesManager.cpp +++ b/td/telegram/MessagesManager.cpp @@ -3696,6 +3696,7 @@ class EditInlineMessageQuery final : public Td::ResultHandler { class ForwardMessagesActor final : public NetActorOnce { Promise promise_; vector random_ids_; + DialogId from_dialog_id_; DialogId to_dialog_id_; public: @@ -3705,6 +3706,7 @@ class ForwardMessagesActor final : public NetActorOnce { void send(int32 flags, DialogId to_dialog_id, DialogId from_dialog_id, const vector &message_ids, vector &&random_ids, int32 schedule_date, uint64 sequence_dispatcher_id) { random_ids_ = random_ids; + from_dialog_id_ = from_dialog_id; to_dialog_id_ = to_dialog_id; auto to_input_peer = td_->messages_manager_->get_input_peer(to_dialog_id, AccessRights::Write); @@ -3790,6 +3792,9 @@ class ForwardMessagesActor final : public NetActorOnce { return; } // no on_get_dialog_error call, because two dialogs are involved + if (status.code() == 400 && status.message() == "CHAT_FORWARDS_RESTRICTED") { + td_->contacts_manager_->reload_dialog_info(from_dialog_id_, Promise()); + } for (auto &random_id : random_ids_) { td_->messages_manager_->on_send_message_fail(random_id, status.clone()); }