aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--telegram-bot-api/Client.cpp38
-rw-r--r--telegram-bot-api/Client.h26
2 files changed, 36 insertions, 28 deletions
diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp
index a60967f..ce97bba 100644
--- a/telegram-bot-api/Client.cpp
+++ b/telegram-bot-api/Client.cpp
@@ -10695,13 +10695,13 @@ td::Result<td_api::object_ptr<td_api::inputThumbnail>> Client::get_input_thumbna
}
td::Result<td_api::object_ptr<td_api::InputMessageContent>> Client::get_input_message_content(
- td::JsonValue &input_message_content, bool is_input_message_content_required) {
+ const Query *query, td::JsonValue &input_message_content, bool is_input_message_content_required) const {
CHECK(input_message_content.type() == td::JsonValue::Type::Object);
auto &object = input_message_content.get_object();
if (object.has_field("rich_message")) {
TRY_RESULT(rich_message, object.extract_required_field("rich_message", td::JsonValue::Type::Object));
- TRY_RESULT(input_rich_message, get_input_rich_message(std::move(rich_message)));
+ TRY_RESULT(input_rich_message, get_input_rich_message(query, std::move(rich_message)));
return make_object<td_api::inputMessageRichMessage>(std::move(input_rich_message), false);
}
@@ -10855,7 +10855,7 @@ td::Result<td_api::object_ptr<td_api::inlineQueryResultsButton>> Client::get_inl
}
td::Result<td::vector<td_api::object_ptr<td_api::InputInlineQueryResult>>> Client::get_inline_query_results(
- const Query *query, BotUserIds &bot_user_ids) {
+ const Query *query, BotUserIds &bot_user_ids) const {
auto results_encoded = query->arg("results");
if (results_encoded.empty()) {
return td::vector<object_ptr<td_api::InputInlineQueryResult>>();
@@ -10868,11 +10868,11 @@ td::Result<td::vector<td_api::object_ptr<td_api::InputInlineQueryResult>>> Clien
400, PSLICE() << "Can't parse JSON encoded inline query results: " << r_values.error().message());
}
- return get_inline_query_results(r_values.move_as_ok(), bot_user_ids);
+ return get_inline_query_results(query, r_values.move_as_ok(), bot_user_ids);
}
td::Result<td::vector<td_api::object_ptr<td_api::InputInlineQueryResult>>> Client::get_inline_query_results(
- td::JsonValue &&values, BotUserIds &bot_user_ids) {
+ const Query *query, td::JsonValue &&values, BotUserIds &bot_user_ids) const {
if (values.type() == td::JsonValue::Type::Null) {
return td::vector<object_ptr<td_api::InputInlineQueryResult>>();
}
@@ -10886,7 +10886,7 @@ td::Result<td::vector<td_api::object_ptr<td_api::InputInlineQueryResult>>> Clien
td::vector<object_ptr<td_api::InputInlineQueryResult>> inline_query_results;
for (auto &value : values.get_array()) {
- auto r_inline_query_result = get_inline_query_result(std::move(value), bot_user_ids);
+ auto r_inline_query_result = get_inline_query_result(query, std::move(value), bot_user_ids);
if (r_inline_query_result.is_error()) {
return td::Status::Error(
400, PSLICE() << "Can't parse inline query result: " << r_inline_query_result.error().message());
@@ -10898,7 +10898,7 @@ td::Result<td::vector<td_api::object_ptr<td_api::InputInlineQueryResult>>> Clien
}
td::Result<td_api::object_ptr<td_api::InputInlineQueryResult>> Client::get_inline_query_result(
- const Query *query, BotUserIds &bot_user_ids) {
+ const Query *query, BotUserIds &bot_user_ids) const {
auto result_encoded = query->arg("result");
if (result_encoded.empty()) {
return td::Status::Error(400, "Result isn't specified");
@@ -10911,11 +10911,11 @@ td::Result<td_api::object_ptr<td_api::InputInlineQueryResult>> Client::get_inlin
400, PSLICE() << "Can't parse JSON encoded web view query results " << r_value.error().message());
}
- return get_inline_query_result(r_value.move_as_ok(), bot_user_ids);
+ return get_inline_query_result(query, r_value.move_as_ok(), bot_user_ids);
}
td::Result<td_api::object_ptr<td_api::InputInlineQueryResult>> Client::get_inline_query_result(
- td::JsonValue &&value, BotUserIds &bot_user_ids) {
+ const Query *query, td::JsonValue &&value, BotUserIds &bot_user_ids) const {
if (value.type() != td::JsonValue::Type::Object) {
return td::Status::Error(400, "Inline query result must be an object");
}
@@ -10948,7 +10948,7 @@ td::Result<td_api::object_ptr<td_api::InputInlineQueryResult>> Client::get_inlin
}
} else {
TRY_RESULT(input_message_content_result,
- get_input_message_content(input_message_content_obj, is_input_message_content_required));
+ get_input_message_content(query, input_message_content_obj, is_input_message_content_required));
input_message_content = std::move(input_message_content_result);
}
TRY_RESULT(input_caption, object.get_optional_string_field("caption"));
@@ -11981,7 +11981,7 @@ td::Result<td_api::object_ptr<td_api::inputMessageText>> Client::get_input_messa
return make_object<td_api::inputMessageText>(std::move(formatted_text), std::move(link_preview_options), false);
}
-td::Result<td_api::object_ptr<td_api::inputRichMessage>> Client::get_input_rich_message(const Query *query) {
+td::Result<td_api::object_ptr<td_api::inputRichMessage>> Client::get_input_rich_message(const Query *query) const {
auto rich_message = query->arg("rich_message");
if (rich_message.empty()) {
return td::Status::Error(400, "Rich message must be non-empty");
@@ -11994,10 +11994,11 @@ td::Result<td_api::object_ptr<td_api::inputRichMessage>> Client::get_input_rich_
return td::Status::Error(400, "Can't parse rich message JSON object");
}
- return get_input_rich_message(r_value.move_as_ok());
+ return get_input_rich_message(query, r_value.move_as_ok());
}
-td::Result<td_api::object_ptr<td_api::inputRichMessage>> Client::get_input_rich_message(td::JsonValue &&value) {
+td::Result<td_api::object_ptr<td_api::inputRichMessage>> Client::get_input_rich_message(const Query *query,
+ td::JsonValue &&value) const {
if (value.type() != td::JsonValue::Type::Object) {
return td::Status::Error(400, "Object expected as rich message");
}
@@ -12007,10 +12008,12 @@ td::Result<td_api::object_ptr<td_api::inputRichMessage>> Client::get_input_rich_
auto result = make_object<td_api::inputRichMessage>(nullptr, is_rtl, !skip_entity_detection);
if (object.has_field("markdown")) {
TRY_RESULT(text, object.get_required_string_field("markdown"));
- result->source_ = make_object<td_api::richMessageSourceMarkdown>(text, td::Auto());
+ TRY_RESULT(media, get_input_rich_message_medias(query, object.extract_field("media")));
+ result->source_ = make_object<td_api::richMessageSourceMarkdown>(text, std::move(media));
} else if (object.has_field("html")) {
TRY_RESULT(text, object.get_required_string_field("html"));
- result->source_ = make_object<td_api::richMessageSourceHtml>(text, td::Auto());
+ TRY_RESULT(media, get_input_rich_message_medias(query, object.extract_field("media")));
+ result->source_ = make_object<td_api::richMessageSourceHtml>(text, std::move(media));
} else {
return td::Status::Error(400, "Rich message must be non-empty");
}
@@ -12541,11 +12544,14 @@ td::Result<td_api::object_ptr<td_api::inputRichMessageMedia>> Client::get_input_
td::Result<td::vector<td_api::object_ptr<td_api::inputRichMessageMedia>>> Client::get_input_rich_message_medias(
const Query *query, td::JsonValue &&value) const {
+ td::vector<object_ptr<td_api::inputRichMessageMedia>> media;
if (value.type() != td::JsonValue::Type::Array) {
+ if (value.type() == td::JsonValue::Type::Null) {
+ return std::move(media);
+ }
return td::Status::Error(400, "Expected an Array of InputRichMessageMedia");
}
- td::vector<object_ptr<td_api::inputRichMessageMedia>> media;
for (auto &input_media : value.get_array()) {
auto r_input_media = get_input_rich_message_media(query, std::move(input_media));
if (r_input_media.is_error()) {
diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h
index a42a014..d95a03e 100644
--- a/telegram-bot-api/Client.h
+++ b/telegram-bot-api/Client.h
@@ -542,8 +542,8 @@ class Client final : public WebhookActor::Callback {
static td::Result<td::vector<object_ptr<td_api::shippingOption>>> get_shipping_options(td::JsonValue &&value);
- static td::Result<object_ptr<td_api::InputMessageContent>> get_input_message_content(
- td::JsonValue &input_message_content, bool is_input_message_content_required);
+ td::Result<object_ptr<td_api::InputMessageContent>> get_input_message_content(
+ const Query *query, td::JsonValue &input_message_content, bool is_input_message_content_required) const;
static object_ptr<td_api::ChatAction> get_chat_action(const Query *query);
@@ -565,17 +565,18 @@ class Client final : public WebhookActor::Callback {
static td::Result<object_ptr<td_api::inlineQueryResultsButton>> get_inline_query_results_button(
td::MutableSlice value);
- static td::Result<object_ptr<td_api::InputInlineQueryResult>> get_inline_query_result(const Query *query,
- BotUserIds &bot_user_ids);
+ td::Result<object_ptr<td_api::InputInlineQueryResult>> get_inline_query_result(const Query *query,
+ BotUserIds &bot_user_ids) const;
- static td::Result<object_ptr<td_api::InputInlineQueryResult>> get_inline_query_result(td::JsonValue &&value,
- BotUserIds &bot_user_ids);
+ td::Result<object_ptr<td_api::InputInlineQueryResult>> get_inline_query_result(const Query *query,
+ td::JsonValue &&value,
+ BotUserIds &bot_user_ids) const;
- static td::Result<td::vector<object_ptr<td_api::InputInlineQueryResult>>> get_inline_query_results(
- const Query *query, BotUserIds &bot_user_ids);
+ td::Result<td::vector<object_ptr<td_api::InputInlineQueryResult>>> get_inline_query_results(
+ const Query *query, BotUserIds &bot_user_ids) const;
- static td::Result<td::vector<object_ptr<td_api::InputInlineQueryResult>>> get_inline_query_results(
- td::JsonValue &&value, BotUserIds &bot_user_ids);
+ td::Result<td::vector<object_ptr<td_api::InputInlineQueryResult>>> get_inline_query_results(
+ const Query *query, td::JsonValue &&value, BotUserIds &bot_user_ids) const;
struct BotCommandScope {
object_ptr<td_api::BotCommandScope> scope_;
@@ -663,9 +664,10 @@ class Client final : public WebhookActor::Callback {
td::string text, object_ptr<td_api::linkPreviewOptions> link_preview_options, td::string parse_mode,
td::JsonValue &&input_entities);
- static td::Result<object_ptr<td_api::inputRichMessage>> get_input_rich_message(const Query *query);
+ td::Result<object_ptr<td_api::inputRichMessage>> get_input_rich_message(const Query *query) const;
- static td::Result<object_ptr<td_api::inputRichMessage>> get_input_rich_message(td::JsonValue &&value);
+ td::Result<object_ptr<td_api::inputRichMessage>> get_input_rich_message(const Query *query,
+ td::JsonValue &&value) const;
static td::Result<object_ptr<td_api::location>> get_location(const Query *query);