diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 2d2f51b..ea910d0 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -9080,6 +9080,24 @@ td::Result Client::get_reply_parameters(td::JsonVa return std::move(result); } +td::Result> Client::get_button_style(td::Result r_style) { + TRY_RESULT(style, std::move(r_style)); + td::to_lower_inplace(style); + if (style.empty() || style == "default") { + return make_object(); + } + if (style == "primary") { + return make_object(); + } + if (style == "danger") { + return make_object(); + } + if (style == "success") { + return make_object(); + } + return td::Status::Error("invalid button style specified"); +} + td::Result> Client::get_keyboard_button_type(td::JsonObject &object) { TRY_RESULT(request_phone_number, object.get_optional_bool_field("request_phone_number")); TRY_RESULT(request_contact, object.get_optional_bool_field("request_contact")); @@ -9175,8 +9193,10 @@ td::Result> Client::get_keyboard_butt auto &object = button.get_object(); TRY_RESULT(text, object.get_required_string_field("text")); + TRY_RESULT(icon, object.get_optional_long_field("icon_custom_emoji_id")); + TRY_RESULT(style, get_button_style(object.get_optional_string_field("style"))); TRY_RESULT(type, get_keyboard_button_type(object)); - return make_object(text, 0, nullptr, std::move(type)); + return make_object(text, std::move(icon), std::move(style), std::move(type)); } if (button.type() == td::JsonValue::Type::String) { return make_object(button.get_string().str(), 0, nullptr, nullptr); @@ -9193,8 +9213,10 @@ td::Result> Client::get_inline_ auto &object = button.get_object(); TRY_RESULT(text, object.get_required_string_field("text")); + TRY_RESULT(icon, object.get_optional_long_field("icon_custom_emoji_id")); + TRY_RESULT(style, get_button_style(object.get_optional_string_field("style"))); TRY_RESULT(type, get_inline_keyboard_button_type(object, bot_user_ids)); - return make_object(text, 0, nullptr, std::move(type)); + return make_object(text, std::move(icon), std::move(style), std::move(type)); } td::Result> Client::get_inline_keyboard_button_type( diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index d87e4ae..ebbfd1e 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -484,6 +484,8 @@ class Client final : public WebhookActor::Callback { static td::Result get_reply_parameters(td::JsonValue &&value); + static td::Result> get_button_style(td::Result r_style); + static td::Result> get_keyboard_button_type(td::JsonObject &object); static td::Result> get_keyboard_button(td::JsonValue &button);