diff options
| author | levlam <levlam@telegram.org> | 2026-05-01 19:14:46 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2026-05-01 19:14:46 +0300 |
| commit | bda9f10aa322b5a2f87a429338958ebb52285ec3 (patch) | |
| tree | fe93c1e5b508c6434fb965c3ac7580f0185efb4d | |
| parent | 696d523e8a84917cc9f1f53df7d95be12af8d16a (diff) | |
Add answerGuestQuery.
| -rw-r--r-- | telegram-bot-api/Client.cpp | 36 | ||||
| -rw-r--r-- | telegram-bot-api/Client.h | 2 |
2 files changed, 38 insertions, 0 deletions
diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 1beaf7a..07eb99c 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -293,6 +293,7 @@ bool Client::init_methods() { methods_.emplace("setgamescore", &Client::process_set_game_score_query); methods_.emplace("getgamehighscores", &Client::process_get_game_high_scores_query); methods_.emplace("answerwebappquery", &Client::process_answer_web_app_query_query); + methods_.emplace("answerguestquery", &Client::process_answer_guest_query_query); methods_.emplace("answerinlinequery", &Client::process_answer_inline_query_query); methods_.emplace("savepreparedinlinemessage", &Client::process_save_prepared_inline_message_query); methods_.emplace("savepreparedkeyboardbutton", &Client::process_save_prepared_keyboard_button_query); @@ -7452,6 +7453,25 @@ class Client::TdOnAnswerWebAppQueryCallback final : public TdQueryCallback { PromisedQueryPtr query_; }; +class Client::TdOnAnswerGuestQueryCallback final : public TdQueryCallback { + public: + explicit TdOnAnswerGuestQueryCallback(PromisedQueryPtr query) : query_(std::move(query)) { + } + + void on_result(object_ptr<td_api::Object> result) final { + if (result->get_id() == td_api::error::ID) { + return fail_query_with_error(std::move(query_), move_object_as<td_api::error>(result)); + } + + CHECK(result->get_id() == td_api::inlineMessageId::ID); + auto inline_message_id = move_object_as<td_api::inlineMessageId>(result); + answer_query(JsonInlineMessageId(inline_message_id.get()), std::move(query_)); + } + + private: + PromisedQueryPtr query_; +}; + class Client::TdOnSavePreparedInlineMessageCallback final : public TdQueryCallback { public: explicit TdOnSavePreparedInlineMessageCallback(PromisedQueryPtr query) : query_(std::move(query)) { @@ -13974,6 +13994,22 @@ td::Status Client::process_answer_web_app_query_query(PromisedQueryPtr &query) { return td::Status::OK(); } +td::Status Client::process_answer_guest_query_query(PromisedQueryPtr &query) { + auto guest_query_id = td::to_integer<int64>(query->arg("guest_query_id")); + TRY_RESULT(result, get_inline_query_result(query.get(), bot_user_ids_)); + td::vector<object_ptr<td_api::InputInlineQueryResult>> results; + results.push_back(std::move(result)); + + resolve_inline_query_results_bot_usernames( + std::move(results), std::move(query), + [this, guest_query_id](td::vector<object_ptr<td_api::InputInlineQueryResult>> results, PromisedQueryPtr query) { + CHECK(results.size() == 1); + send_request(make_object<td_api::answerGuestQuery>(guest_query_id, std::move(results[0])), + td::make_unique<TdOnAnswerWebAppQueryCallback>(std::move(query))); + }); + return td::Status::OK(); +} + td::Status Client::process_answer_inline_query_query(PromisedQueryPtr &query) { auto inline_query_id = td::to_integer<int64>(query->arg("inline_query_id")); auto is_personal = to_bool(query->arg("is_personal")); diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index cb06361..20e8365 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -304,6 +304,7 @@ class Client final : public WebhookActor::Callback { class TdOnGetChatInviteLinkCallback; class TdOnGetGameHighScoresCallback; class TdOnAnswerWebAppQueryCallback; + class TdOnAnswerGuestQueryCallback; class TdOnSavePreparedInlineMessageCallback; class TdOnSavePreparedKeyboardButtonCallback; class TdOnReturnFileCallback; @@ -829,6 +830,7 @@ class Client final : public WebhookActor::Callback { td::Status process_set_game_score_query(PromisedQueryPtr &query); td::Status process_get_game_high_scores_query(PromisedQueryPtr &query); td::Status process_answer_web_app_query_query(PromisedQueryPtr &query); + td::Status process_answer_guest_query_query(PromisedQueryPtr &query); td::Status process_answer_inline_query_query(PromisedQueryPtr &query); td::Status process_save_prepared_inline_message_query(PromisedQueryPtr &query); td::Status process_save_prepared_keyboard_button_query(PromisedQueryPtr &query); |
