From d62fdf42f574c365cd7e45d2393d989737875ed3 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 10 Jul 2026 23:24:00 +0300 Subject: Add "subscription" update. --- telegram-bot-api/Client.cpp | 36 ++++++++++++++++++++++++++++++++++++ telegram-bot-api/Client.h | 4 ++++ 2 files changed, 40 insertions(+) diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index c0d3bd5..d83a5a6 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -3925,6 +3925,31 @@ class Client::JsonManagedBotUpdated final : public td::Jsonable { const Client *client_; }; +class Client::JsonBotSubscriptionUpdated final : public td::Jsonable { + public: + JsonBotSubscriptionUpdated(const td_api::updateUserSubscription *update_user_subscription, const Client *client) + : update_user_subscription_(update_user_subscription), client_(client) { + } + void store(td::JsonValueScope *scope) const { + auto object = scope->enter_object(); + object("user", JsonUser(update_user_subscription_->user_id_, client_)); + object("invoice_payload", update_user_subscription_->payload_); + if (update_user_subscription_->is_canceled_) { + object("state", "canceled"); + } else if (update_user_subscription_->is_restored_) { + object("state", "active"); + } else if (update_user_subscription_->is_payment_failed_) { + object("state", "failed"); + } else { + UNREACHABLE(); + } + } + + private: + const td_api::updateUserSubscription *update_user_subscription_; + const Client *client_; +}; + class Client::JsonCommunityChatAdded final : public td::Jsonable { public: JsonCommunityChatAdded(const td_api::messageChatAddedToCommunity *chat_added_to_community, const Client *client) @@ -9827,6 +9852,9 @@ void Client::on_update(object_ptr result) { case td_api::updateManagedBot::ID: add_update_managed_bot(move_object_as(result)); break; + case td_api::updateUserSubscription::ID: + add_update_subscription(move_object_as(result)); + break; case td_api::updateNewCustomEvent::ID: add_new_custom_event(move_object_as(result)); break; @@ -17945,6 +17973,8 @@ td::Slice Client::get_update_type_name(UpdateType update_type) { return td::Slice("managed_bot"); case UpdateType::GuestMessage: return td::Slice("guest_message"); + case UpdateType::Subscription: + return td::Slice("subscription"); default: UNREACHABLE(); return td::Slice(); @@ -18320,6 +18350,12 @@ void Client::add_update_managed_bot(object_ptr &&query query->user_id_ + (static_cast(13) << 33)); } +void Client::add_update_subscription(object_ptr &&query) { + CHECK(query != nullptr); + add_update(UpdateType::Subscription, JsonBotSubscriptionUpdated(query.get(), this), 86400, + query->user_id_ + (static_cast(14) << 33)); +} + void Client::add_new_custom_event(object_ptr &&event) { CHECK(event != nullptr); add_update(UpdateType::CustomEvent, JsonCustomJson(event->event_), 600, 0); diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index 50630f2..5188d19 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -247,6 +247,7 @@ class Client final : public WebhookActor::Callback { class JsonManagedBotCreated; class JsonManagedBotUpdated; class JsonCommunityChatAdded; + class JsonBotSubscriptionUpdated; class JsonGiveawayCreated; class JsonGiveaway; class JsonGiveawayWinners; @@ -1451,6 +1452,8 @@ class Client final : public WebhookActor::Callback { void add_update_managed_bot(object_ptr &&query); + void add_update_subscription(object_ptr &&query); + void add_new_custom_event(object_ptr &&event); void add_new_custom_query(object_ptr &&query); @@ -1498,6 +1501,7 @@ class Client final : public WebhookActor::Callback { PurchasedPaidMedia, ManagedBot, GuestMessage, + Subscription, Size }; -- cgit v1.2.3