aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2026-05-01 19:14:46 +0300
committerlevlam <levlam@telegram.org>2026-05-01 19:14:46 +0300
commitbda9f10aa322b5a2f87a429338958ebb52285ec3 (patch)
treefe93c1e5b508c6434fb965c3ac7580f0185efb4d
parent696d523e8a84917cc9f1f53df7d95be12af8d16a (diff)
Add answerGuestQuery.
-rw-r--r--telegram-bot-api/Client.cpp36
-rw-r--r--telegram-bot-api/Client.h2
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);