aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2026-06-30 16:40:34 +0300
committerlevlam <levlam@telegram.org>2026-06-30 16:40:34 +0300
commitab3ecce039a44f424dd6606cce92c0453147b1d9 (patch)
treedeb1c5c4c93c5f2cf74d4848fc52974b8f2fda43
parentb9fd401fc2af1fca97ba1499a814e1504f90e7d6 (diff)
Don't check can_send_message for ephemeral messages.
-rw-r--r--td/telegram/MessagesManager.cpp16
-rw-r--r--td/telegram/MessagesManager.h2
2 files changed, 12 insertions, 6 deletions
diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp
index c69886414..d347ef304 100644
--- a/td/telegram/MessagesManager.cpp
+++ b/td/telegram/MessagesManager.cpp
@@ -6656,7 +6656,7 @@ void MessagesManager::on_upload_media(FileUploadId file_upload_id,
bool is_edit = m->message_id.is_any_server();
auto dialog_id = message_full_id.get_dialog_id();
- auto can_send_status = can_send_message(dialog_id);
+ auto can_send_status = is_ephemeral_message(m) ? Status::OK() : can_send_message(dialog_id);
if (!is_edit && can_send_status.is_error()) {
// user has left the chat during upload of the file or lost their privileges
LOG(INFO) << "Can't send a message to " << dialog_id << ": " << can_send_status;
@@ -6877,7 +6877,7 @@ void MessagesManager::on_upload_thumbnail(FileUploadId thumbnail_file_upload_id,
FileUploadId::delete_file_upload_id(get_message_file_upload_ids(dialog_id, m, true), media_pos);
}
- auto can_send_status = can_send_message(dialog_id);
+ auto can_send_status = is_ephemeral_message(m) ? Status::OK() : can_send_message(dialog_id);
if (!is_edit && can_send_status.is_error()) {
// user has left the chat during upload of the thumbnail or lost their privileges
LOG(INFO) << "Can't send a message to " << dialog_id << ": " << can_send_status;
@@ -20483,7 +20483,7 @@ td_api::object_ptr<td_api::message> MessagesManager::get_message_object(DialogId
if (sending_state == nullptr || !is_bot) {
m->is_update_sent = true;
}
- bool is_ephemeral = m->ephemeral_message_id != 0;
+ bool is_ephemeral = is_ephemeral_message(m);
bool is_scheduled = m->message_id.is_scheduled();
bool is_from_saved_messages = (dialog_id == td_->dialog_manager_->get_my_dialog_id());
bool is_outgoing = m->is_outgoing;
@@ -21721,7 +21721,7 @@ void MessagesManager::on_cover_upload(DialogId dialog_id, MessageId message_id,
}
bool is_edit = m->message_id.is_any_server();
- if (!is_edit && result.is_ok()) {
+ if (!is_edit && result.is_ok() && !is_ephemeral_message(m)) {
result = can_send_message(dialog_id);
}
if (result.is_error()) {
@@ -22430,7 +22430,7 @@ void MessagesManager::do_send_internal_media_group(DialogId dialog_id, MessageId
CHECK(content != nullptr);
CHECK(can_message_content_have_multiple_files(content->get_type()));
- auto status = can_send_message(dialog_id);
+ auto status = is_ephemeral_message(m) ? Status::OK() : can_send_message(dialog_id);
bool success = status.is_ok();
for (auto &result : request.results) {
if (success && result.is_error()) {
@@ -23110,6 +23110,10 @@ bool MessagesManager::is_deleted_secret_chat(const Dialog *d) const {
return true;
}
+bool MessagesManager::is_ephemeral_message(const Message *m) {
+ return m != nullptr && m->receiver_user_id != UserId();
+}
+
bool MessagesManager::is_message_forward(const Message *m) {
return m != nullptr && (m->forward_info != nullptr || m->had_forward_info);
}
@@ -35474,7 +35478,7 @@ MessagesManager::Message *MessagesManager::continue_send_message(DialogId dialog
send_update_chat_has_scheduled_messages(d, false);
}
- auto can_send_status = can_send_message(dialog_id);
+ auto can_send_status = is_ephemeral_message(result_message) ? Status::OK() : can_send_message(dialog_id);
if (can_send_status.is_ok() && result_message->send_date < now - MAX_RESEND_DELAY &&
dialog_id != td_->dialog_manager_->get_my_dialog_id()) {
can_send_status = Status::Error(400, "Message is too old to be re-sent automatically");
diff --git a/td/telegram/MessagesManager.h b/td/telegram/MessagesManager.h
index ffa847c0f..a437c875c 100644
--- a/td/telegram/MessagesManager.h
+++ b/td/telegram/MessagesManager.h
@@ -3165,6 +3165,8 @@ class MessagesManager final : public Actor {
bool is_deleted_secret_chat(const Dialog *d) const;
+ static bool is_ephemeral_message(const Message *m);
+
static bool is_message_forward(const Message *m);
static int32 get_message_schedule_date(const Message *m);