aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--telegram-bot-api/Client.cpp43
-rw-r--r--telegram-bot-api/Client.h4
2 files changed, 20 insertions, 27 deletions
diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp
index 5800e09..24b81af 100644
--- a/telegram-bot-api/Client.cpp
+++ b/telegram-bot-api/Client.cpp
@@ -10479,28 +10479,24 @@ td::Result<td::vector<td_api::object_ptr<td_api::labeledPricePart>>> Client::get
return get_array(std::move(value), "LabeledPrice", get_labeled_price_part);
}
-td::Result<td::vector<td::int64>> Client::get_suggested_tip_amounts(td::JsonValue &&value) {
- if (value.type() != td::JsonValue::Type::Array) {
- return td::Status::Error(400, "Expected an Array of suggested tip amounts");
+td::Result<td::int64> Client::get_suggested_tip_amount(td::JsonValue &&value) {
+ td::Slice number;
+ if (value.type() == td::JsonValue::Type::Number) {
+ number = value.get_number();
+ } else if (value.type() == td::JsonValue::Type::String) {
+ number = value.get_string();
+ } else {
+ return td::Status::Error(400, "Suggested tip amount must be of type Number or String");
}
-
- td::vector<int64> suggested_tip_amounts;
- for (auto &amount : value.get_array()) {
- td::Slice number;
- if (amount.type() == td::JsonValue::Type::Number) {
- number = amount.get_number();
- } else if (amount.type() == td::JsonValue::Type::String) {
- number = amount.get_string();
- } else {
- return td::Status::Error(400, "Suggested tip amount must be of type Number or String");
- }
- auto parsed_amount = td::to_integer_safe<int64>(number);
- if (parsed_amount.is_error()) {
- return td::Status::Error(400, "Can't parse suggested tip amount as Number");
- }
- suggested_tip_amounts.push_back(parsed_amount.ok());
+ auto parsed_amount = td::to_integer_safe<int64>(number);
+ if (parsed_amount.is_error()) {
+ return td::Status::Error(400, "Can't parse suggested tip amount as Number");
}
- return std::move(suggested_tip_amounts);
+ return parsed_amount.ok();
+}
+
+td::Result<td::vector<td::int64>> Client::get_suggested_tip_amounts(td::JsonValue &&value) {
+ return get_array(std::move(value), "suggested tip amount", get_suggested_tip_amount);
}
td::Result<td_api::object_ptr<td_api::shippingOption>> Client::get_shipping_option(td::JsonValue &&option) {
@@ -10737,12 +10733,7 @@ td::Result<td_api::object_ptr<td_api::InputMessageContent>> Client::get_input_me
TRY_RESULT(prices, get_labeled_price_parts(std::move(prices_object)));
TRY_RESULT(provider_data, object.get_optional_string_field("provider_data"));
TRY_RESULT(max_tip_amount, object.get_optional_long_field("max_tip_amount"));
- td::vector<int64> suggested_tip_amounts;
- TRY_RESULT(suggested_tip_amounts_array,
- object.extract_optional_field("suggested_tip_amounts", td::JsonValue::Type::Array));
- if (suggested_tip_amounts_array.type() == td::JsonValue::Type::Array) {
- TRY_RESULT_ASSIGN(suggested_tip_amounts, get_suggested_tip_amounts(std::move(suggested_tip_amounts_array)));
- }
+ TRY_RESULT(suggested_tip_amounts, get_suggested_tip_amounts(object.extract_field("suggested_tip_amounts")));
TRY_RESULT(photo_url, object.get_optional_string_field("photo_url"));
TRY_RESULT(photo_size, object.get_optional_int_field("photo_size"));
TRY_RESULT(photo_width, object.get_optional_int_field("photo_width"));
diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h
index dc3001d..95af8ee 100644
--- a/telegram-bot-api/Client.h
+++ b/telegram-bot-api/Client.h
@@ -538,6 +538,8 @@ class Client final : public WebhookActor::Callback {
static td::Result<td::vector<object_ptr<td_api::labeledPricePart>>> get_labeled_price_parts(td::JsonValue &&value);
+ static td::Result<int64> get_suggested_tip_amount(td::JsonValue &&value);
+
static td::Result<td::vector<int64>> get_suggested_tip_amounts(td::JsonValue &&value);
static td::Result<object_ptr<td_api::shippingOption>> get_shipping_option(td::JsonValue &&option);
@@ -1019,7 +1021,7 @@ class Client final : public WebhookActor::Callback {
void on_webhook_closed(td::Status status);
- void delete_last_send_message_time(td::int64 file_size, double max_delay);
+ void delete_last_send_message_time(int64 file_size, double max_delay);
void do_send_message(object_ptr<td_api::InputMessageContent> input_message_content, PromisedQueryPtr query,
bool force = false);