aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2026-07-03 11:20:46 +0300
committerlevlam <levlam@telegram.org>2026-07-03 11:20:46 +0300
commit4e42df337e2d0457d035550a69724e28c3868e59 (patch)
treecf479bd0abdf03ca9011e1ed8167ab37fc5d5d03
parent022e0c8fccdaf955588c8f7b3a109614fb693384 (diff)
Support sending of ephemeral messages.
-rw-r--r--telegram-bot-api/Client.cpp27
1 files changed, 22 insertions, 5 deletions
diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp
index 73783d8..70eb128 100644
--- a/telegram-bot-api/Client.cpp
+++ b/telegram-bot-api/Client.cpp
@@ -16843,6 +16843,15 @@ void Client::do_send_message(object_ptr<td_api::InputMessageContent> input_messa
auto chat_id = query->arg("chat_id");
auto forum_topic_id = get_forum_topic_id(query.get(), "message_thread_id");
auto business_connection_id = query->arg("business_connection_id");
+ int64 receiver_user_id = 0;
+ if (query->has_arg("receiver_user_id")) {
+ auto r_receiver_user_id = get_user_id(query.get(), "receiver_user_id");
+ if (r_receiver_user_id.is_error()) {
+ return fail_query_with_error(std::move(query), 400, r_receiver_user_id.error().message());
+ }
+ receiver_user_id = r_receiver_user_id.move_as_ok();
+ }
+ auto callback_query_id = td::to_integer<int64>(query->arg("callback_query_id"));
auto r_reply_parameters = get_reply_parameters(query.get());
if (r_reply_parameters.is_error()) {
return fail_query_with_error(std::move(query), 400, r_reply_parameters.error().message());
@@ -16868,10 +16877,10 @@ void Client::do_send_message(object_ptr<td_api::InputMessageContent> input_messa
resolve_reply_markup_bot_usernames(
std::move(reply_markup), std::move(query),
[this, chat_id_str = chat_id.str(), forum_topic_id, direct_messages_topic_id,
- business_connection_id = business_connection_id.str(), reply_parameters = std::move(reply_parameters),
- disable_notification, protect_content, allow_paid_broadcast, effect_id, send_options = std::move(send_options),
- input_message_content = std::move(input_message_content)](object_ptr<td_api::ReplyMarkup> reply_markup,
- PromisedQueryPtr query) mutable {
+ business_connection_id = business_connection_id.str(), receiver_user_id, callback_query_id,
+ reply_parameters = std::move(reply_parameters), disable_notification, protect_content, allow_paid_broadcast,
+ effect_id, send_options = std::move(send_options), input_message_content = std::move(input_message_content)](
+ object_ptr<td_api::ReplyMarkup> reply_markup, PromisedQueryPtr query) mutable {
if (!business_connection_id.empty()) {
return check_business_connection_chat_id(
business_connection_id, chat_id_str, std::move(query),
@@ -16887,7 +16896,7 @@ void Client::do_send_message(object_ptr<td_api::InputMessageContent> input_messa
});
}
- auto on_success = [this, send_options = std::move(send_options),
+ auto on_success = [this, receiver_user_id, callback_query_id, send_options = std::move(send_options),
input_message_content = std::move(input_message_content),
reply_markup = std::move(reply_markup)](
int64 chat_id, object_ptr<td_api::MessageTopic> topic_id,
@@ -16898,6 +16907,14 @@ void Client::do_send_message(object_ptr<td_api::InputMessageContent> input_messa
}
count++;
+ if (receiver_user_id != 0) {
+ return send_request(make_object<td_api::sendEphemeralMessage>(
+ chat_id, std::move(topic_id), receiver_user_id, callback_query_id,
+ get_input_message_reply_to(std::move(reply_parameters)), 0, false,
+ std::move(reply_markup), std::move(input_message_content)),
+ td::make_unique<TdOnSendMessageCallback>(this, chat_id, std::move(query)));
+ }
+
send_request(make_object<td_api::sendMessage>(
chat_id, std::move(topic_id), get_input_message_reply_to(std::move(reply_parameters)),
std::move(send_options), std::move(reply_markup), std::move(input_message_content)),