From fe131c7a444fc43431f3bc888c7802e38aa8fca9 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 3 Jul 2026 23:58:00 +0300 Subject: Add get_page_block_table_cell. --- telegram-bot-api/Client.cpp | 39 +++++++++++++++++++++++++++++++++++++++ telegram-bot-api/Client.h | 2 ++ 2 files changed, 41 insertions(+) diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 11e22b1..23a2e86 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -11996,6 +11996,45 @@ td::Result> Client::get_page_block_ } } +td::Result> Client::get_page_block_table_cell(td::JsonValue &&value) { + if (value.type() != td::JsonValue::Type::Object) { + return td::Status::Error(400, "RichBlockTableCell must be an object"); + } + + auto &object = value.get_object(); + TRY_RESULT(text, get_rich_text(object.extract_field("text"))); + TRY_RESULT(is_header, object.get_optional_bool_field("is_header")); + TRY_RESULT(colspan, object.get_optional_int_field("colspan")); + TRY_RESULT(rowspan, object.get_optional_int_field("rowspan")); + + object_ptr align; + TRY_RESULT(align_str, object.get_optional_string_field("align")); + if (align_str == "left" || (align_str.empty() && !is_header)) { + align = make_object(); + } else if (align_str == "center" || (align_str.empty() && is_header)) { + align = make_object(); + } else if (align_str == "right") { + align = make_object(); + } else { + return td::Status::Error(400, "Invalid horizontal alignment specified"); + } + + object_ptr valign; + TRY_RESULT(valign_str, object.get_optional_string_field("valign")); + if (valign_str == "top") { + valign = make_object(); + } else if (valign_str == "middle" || valign_str.empty()) { + valign = make_object(); + } else if (valign_str == "bottom") { + valign = make_object(); + } else { + return td::Status::Error(400, "Invalid vertical alignment specified"); + } + + return make_object(std::move(text), is_header, colspan, rowspan, std::move(align), + std::move(valign)); +} + td::Result> Client::get_rich_text(td::JsonValue &&value) { switch (value.type()) { case td::JsonValue::Type::Null: diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index 7a896a3..d32096f 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -666,6 +666,8 @@ class Client final : public WebhookActor::Callback { static td::Result> get_page_block_caption(td::JsonValue &&value); + static td::Result> get_page_block_table_cell(td::JsonValue &&value); + static td::Result> get_rich_text(td::JsonValue &&value); td::Result> get_input_rich_message(const Query *query) const; -- cgit v1.2.3