aboutsummaryrefslogtreecommitdiffhomepage
path: root/td/telegram/MessagesManager.cpp
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2026-07-11 18:14:08 +0300
committerlevlam <levlam@telegram.org>2026-07-11 18:14:08 +0300
commita82cc1c4cc0d79e0c2fc160fb4237e061dd74170 (patch)
tree49ac7996b8a75ccf17e0ba479361a76dd2c6e46b /td/telegram/MessagesManager.cpp
parent8dddefbb14fb6d3e96ca7ed51fd7bd3a9462e491 (diff)
Support telegram_api::updateEphemeralBotCallbackQuery.
Diffstat (limited to 'td/telegram/MessagesManager.cpp')
-rw-r--r--td/telegram/MessagesManager.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp
index cec112a63..7cc2c1a7a 100644
--- a/td/telegram/MessagesManager.cpp
+++ b/td/telegram/MessagesManager.cpp
@@ -4306,18 +4306,28 @@ void MessagesManager::on_new_ephemeral_message(telegram_api::object_ptr<telegram
on_get_message(std::move(message_info), true, "on_new_ephemeral_message");
}
-void MessagesManager::on_edited_ephemeral_message(telegram_api::object_ptr<telegram_api::ephemeralMessage> &&message) {
+MessageFullId MessagesManager::on_edited_ephemeral_message(
+ telegram_api::object_ptr<telegram_api::ephemeralMessage> &&message, bool force) {
auto message_info = parse_ephemeral_message(td_, std::move(message), "on_edited_ephemeral_message");
auto dialog_id = message_info.dialog_id;
if (!dialog_id.is_valid()) {
- return;
+ return MessageFullId();
}
message_info.message_id = get_message_id_of_ephemeral_message_id(dialog_id, message_info.ephemeral_message_id);
if (message_info.message_id == MessageId()) {
- return;
+ if (!force) {
+ return MessageFullId();
+ }
+ force_create_dialog(dialog_id, "on_edited_ephemeral_message", true);
+ Dialog *d = get_dialog(dialog_id);
+ if (d == nullptr) {
+ return MessageFullId();
+ }
+ CHECK(d->ephemeral_message_ids.count(message_info.ephemeral_message_id) == 0);
+ message_info.message_id = get_next_local_message_id(d);
}
- on_get_message(std::move(message_info), false, "on_edited_ephemeral_message");
+ return on_get_message(std::move(message_info), false, "on_edited_ephemeral_message");
}
void MessagesManager::on_delete_ephemeral_messages(DialogId dialog_id,