aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2026-07-02 14:33:32 +0300
committerlevlam <levlam@telegram.org>2026-07-02 14:33:32 +0300
commit4481341b2c3d6301291ebed39982b67bced39c9e (patch)
tree29b4b7d99d2478dc96e69afb11f1e82380ce5d64
parenteb3936d5418fe05c228c2de339607f265001bff9 (diff)
Add inputMessageReplyToEphemeralMessage.
-rw-r--r--td/generate/scheme/td_api.tl3
-rw-r--r--td/telegram/BusinessConnectionManager.cpp15
-rw-r--r--td/telegram/MessageInputReplyTo.cpp7
-rw-r--r--td/telegram/MessageInputReplyTo.h3
-rw-r--r--td/telegram/MessagesManager.cpp14
5 files changed, 39 insertions, 3 deletions
diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl
index 2b1389285..c6898f3a5 100644
--- a/td/generate/scheme/td_api.tl
+++ b/td/generate/scheme/td_api.tl
@@ -3037,6 +3037,9 @@ inputMessageReplyToExternalMessage chat_id:int53 message_id:int53 quote:inputTex
//@story_id The identifier of the story
inputMessageReplyToStory story_poster_chat_id:int53 story_id:int32 = InputMessageReplyTo;
+//@description Describes an ephemeral message to be replied; for bots only @ephemeral_message_id The identifier of the ephemeral message to be replied
+inputMessageReplyToEphemeralMessage ephemeral_message_id:int32 = InputMessageReplyTo;
+
//@description Describes a fact-check added to the message by an independent checker
//@text Text of the fact-check
diff --git a/td/telegram/BusinessConnectionManager.cpp b/td/telegram/BusinessConnectionManager.cpp
index d410090f8..231f6cbf7 100644
--- a/td/telegram/BusinessConnectionManager.cpp
+++ b/td/telegram/BusinessConnectionManager.cpp
@@ -11,6 +11,7 @@
#include "td/telegram/BusinessBotRights.h"
#include "td/telegram/ChatManager.h"
#include "td/telegram/DialogManager.h"
+#include "td/telegram/EphemeralMessageId.h"
#include "td/telegram/files/FileManager.h"
#include "td/telegram/files/FileType.h"
#include "td/telegram/Global.h"
@@ -1189,6 +1190,20 @@ MessageInputReplyTo BusinessConnectionManager::create_business_message_input_rep
}
case td_api::inputMessageReplyToExternalMessage::ID:
return {};
+ case td_api::inputMessageReplyToEphemeralMessage::ID: {
+ auto reply_to_message = td_api::move_object_as<td_api::inputMessageReplyToEphemeralMessage>(reply_to);
+ auto ephemeral_message_id = EphemeralMessageId(reply_to_message->ephemeral_message_id_);
+ if (!ephemeral_message_id.is_valid()) {
+ return {};
+ }
+ return MessageInputReplyTo{MessageId(),
+ ephemeral_message_id,
+ DialogId(),
+ MessageQuote(),
+ 0,
+ string(),
+ "business inputMessageReplyToEphemeralMessage"};
+ }
default:
UNREACHABLE();
return {};
diff --git a/td/telegram/MessageInputReplyTo.cpp b/td/telegram/MessageInputReplyTo.cpp
index e3262647e..f49ecfb10 100644
--- a/td/telegram/MessageInputReplyTo.cpp
+++ b/td/telegram/MessageInputReplyTo.cpp
@@ -198,8 +198,8 @@ MessageFullId MessageInputReplyTo::get_reply_message_full_id(DialogId owner_dial
}
bool operator==(const MessageInputReplyTo &lhs, const MessageInputReplyTo &rhs) {
- return lhs.message_id_ == rhs.message_id_ && lhs.dialog_id_ == rhs.dialog_id_ &&
- lhs.story_full_id_ == rhs.story_full_id_ && lhs.quote_ == rhs.quote_ &&
+ return lhs.message_id_ == rhs.message_id_ && lhs.ephemeral_message_id_ == rhs.ephemeral_message_id_ &&
+ lhs.dialog_id_ == rhs.dialog_id_ && lhs.story_full_id_ == rhs.story_full_id_ && lhs.quote_ == rhs.quote_ &&
lhs.todo_item_id_ == rhs.todo_item_id_ && lhs.poll_option_id_ == rhs.poll_option_id_;
}
@@ -208,6 +208,9 @@ bool operator!=(const MessageInputReplyTo &lhs, const MessageInputReplyTo &rhs)
}
StringBuilder &operator<<(StringBuilder &string_builder, const MessageInputReplyTo &input_reply_to) {
+ if (input_reply_to.ephemeral_message_id_.is_valid()) {
+ return string_builder << input_reply_to.ephemeral_message_id_;
+ }
if (input_reply_to.message_id_.is_valid() || input_reply_to.message_id_.is_valid_scheduled()) {
string_builder << input_reply_to.message_id_;
if (input_reply_to.dialog_id_ != DialogId()) {
diff --git a/td/telegram/MessageInputReplyTo.h b/td/telegram/MessageInputReplyTo.h
index 531410845..b0f89d058 100644
--- a/td/telegram/MessageInputReplyTo.h
+++ b/td/telegram/MessageInputReplyTo.h
@@ -70,7 +70,8 @@ class MessageInputReplyTo {
MessageInputReplyTo(Td *td, telegram_api::object_ptr<telegram_api::InputReplyTo> &&input_reply_to);
bool is_empty() const {
- return !message_id_.is_valid() && !message_id_.is_valid_scheduled() && !story_full_id_.is_valid();
+ return !message_id_.is_valid() && !message_id_.is_valid_scheduled() && !ephemeral_message_id_.is_valid() &&
+ !story_full_id_.is_valid();
}
bool is_valid() const {
diff --git a/td/telegram/MessagesManager.cpp b/td/telegram/MessagesManager.cpp
index a326c73c0..1fb90d7a9 100644
--- a/td/telegram/MessagesManager.cpp
+++ b/td/telegram/MessagesManager.cpp
@@ -21146,6 +21146,20 @@ MessageInputReplyTo MessagesManager::create_message_input_reply_to(
reply_to_message->poll_option_id_,
"create_message_input_reply_to 6"};
}
+ case td_api::inputMessageReplyToEphemeralMessage::ID: {
+ auto reply_to_message = td_api::move_object_as<td_api::inputMessageReplyToEphemeralMessage>(reply_to);
+ auto ephemeral_message_id = EphemeralMessageId(reply_to_message->ephemeral_message_id_);
+ if (!for_ephemeral_message || !td_->auth_manager_->is_bot() || !ephemeral_message_id.is_valid()) {
+ return {};
+ }
+ return MessageInputReplyTo{MessageId(),
+ ephemeral_message_id,
+ DialogId(),
+ MessageQuote(),
+ 0,
+ string(),
+ "create_message_input_reply_to 7"};
+ }
default:
UNREACHABLE();
return {};