aboutsummaryrefslogtreecommitdiffhomepage
path: root/td/telegram/InlineQueriesManager.cpp
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2024-11-08 16:03:00 +0300
committerlevlam <levlam@telegram.org>2024-11-08 16:03:00 +0300
commitf8ac090053c0de95cdf7e22cc7ded3a9a8e7e672 (patch)
tree6f0321188147e28eb842348a5b6f148d420c8cb7 /td/telegram/InlineQueriesManager.cpp
parent02a9daed3f5b42047a6b8f9e846a6898bbdb7524 (diff)
Add td_api::savePreparedInlineMessage.
Diffstat (limited to 'td/telegram/InlineQueriesManager.cpp')
-rw-r--r--td/telegram/InlineQueriesManager.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/td/telegram/InlineQueriesManager.cpp b/td/telegram/InlineQueriesManager.cpp
index 881c32209..5665ec23b 100644
--- a/td/telegram/InlineQueriesManager.cpp
+++ b/td/telegram/InlineQueriesManager.cpp
@@ -34,6 +34,7 @@
#include "td/telegram/PhotoSize.h"
#include "td/telegram/ReplyMarkup.h"
#include "td/telegram/StickersManager.h"
+#include "td/telegram/TargetDialogTypes.h"
#include "td/telegram/Td.h"
#include "td/telegram/td_api.hpp"
#include "td/telegram/TdDb.h"
@@ -169,6 +170,41 @@ class SetInlineBotResultsQuery final : public Td::ResultHandler {
}
};
+class SavePreparedInlineMessageQuery final : public Td::ResultHandler {
+ Promise<td_api::object_ptr<td_api::preparedInlineMessage>> promise_;
+
+ public:
+ explicit SavePreparedInlineMessageQuery(Promise<td_api::object_ptr<td_api::preparedInlineMessage>> &&promise)
+ : promise_(std::move(promise)) {
+ }
+
+ void send(telegram_api::object_ptr<telegram_api::InputUser> &&input_user,
+ telegram_api::object_ptr<telegram_api::InputBotInlineResult> &&result, TargetDialogTypes types) {
+ int32 flags = 0;
+ auto peer_types = types.get_input_peer_types();
+ if (!peer_types.empty()) {
+ flags |= telegram_api::messages_savePreparedInlineMessage::PEER_TYPES_MASK;
+ }
+ send_query(G()->net_query_creator().create(telegram_api::messages_savePreparedInlineMessage(
+ flags, std::move(result), std::move(input_user), std::move(peer_types))));
+ }
+
+ void on_result(BufferSlice packet) final {
+ auto result_ptr = fetch_result<telegram_api::messages_savePreparedInlineMessage>(packet);
+ if (result_ptr.is_error()) {
+ return on_error(result_ptr.move_as_error());
+ }
+
+ auto ptr = result_ptr.move_as_ok();
+ LOG(INFO) << "Receive result for SavePreparedInlineMessageQuery: " << to_string(ptr);
+ promise_.set_value(td_api::make_object<td_api::preparedInlineMessage>(ptr->id_, ptr->expire_date_));
+ }
+
+ void on_error(Status status) final {
+ promise_.set_error(std::move(status));
+ }
+};
+
class RequestSimpleWebViewQuery final : public Td::ResultHandler {
Promise<string> promise_;
@@ -551,6 +587,18 @@ void InlineQueriesManager::answer_inline_query(
std::move(results), cache_time, next_offset);
}
+void InlineQueriesManager::save_prepared_inline_message(
+ UserId user_id, td_api::object_ptr<td_api::InputInlineQueryResult> &&input_result,
+ td_api::object_ptr<td_api::targetChatTypes> &&chat_types,
+ Promise<td_api::object_ptr<td_api::preparedInlineMessage>> &&promise) {
+ TRY_RESULT_PROMISE(promise, input_user, td_->user_manager_->get_input_user(user_id));
+ TRY_RESULT_PROMISE(promise, result, get_input_bot_inline_result(std::move(input_result), nullptr, nullptr));
+ TRY_RESULT_PROMISE(promise, types, TargetDialogTypes::get_target_dialog_types(chat_types));
+
+ td_->create_handler<SavePreparedInlineMessageQuery>(std::move(promise))
+ ->send(std::move(input_user), std::move(result), types);
+}
+
void InlineQueriesManager::get_simple_web_view_url(UserId bot_user_id, string &&url,
const WebAppOpenParameters &parameters, Promise<string> &&promise) {
TRY_RESULT_PROMISE(promise, input_user, td_->user_manager_->get_input_user(bot_user_id));