diff options
| author | levlam <levlam@telegram.org> | 2026-07-03 11:20:46 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2026-07-03 11:20:46 +0300 |
| commit | 4e42df337e2d0457d035550a69724e28c3868e59 (patch) | |
| tree | cf479bd0abdf03ca9011e1ed8167ab37fc5d5d03 | |
| parent | 022e0c8fccdaf955588c8f7b3a109614fb693384 (diff) | |
Support sending of ephemeral messages.
| -rw-r--r-- | telegram-bot-api/Client.cpp | 27 |
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)), |
