From 7b131cc25a375a54a8524f9168121fbdca5750d4 Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 3 Feb 2026 18:56:30 +0300 Subject: [PATCH] Add getUserProfileAudios. --- telegram-bot-api/Client.cpp | 50 +++++++++++++++++++++++++++++++++++++ telegram-bot-api/Client.h | 3 +++ 2 files changed, 53 insertions(+) diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 4d482a1..28b8ee5 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -219,6 +219,7 @@ bool Client::init_methods() { methods_.emplace("getchatmenubutton", &Client::process_get_chat_menu_button_query); methods_.emplace("setchatmenubutton", &Client::process_set_chat_menu_button_query); methods_.emplace("getuserprofilephotos", &Client::process_get_user_profile_photos_query); + methods_.emplace("getuserprofileaudios", &Client::process_get_user_profile_audios_query); methods_.emplace("sendmessage", &Client::process_send_message_query); methods_.emplace("sendanimation", &Client::process_send_animation_query); methods_.emplace("sendaudio", &Client::process_send_audio_query); @@ -1039,6 +1040,22 @@ class Client::JsonAudio final : public td::Jsonable { const Client *client_; }; +class Client::JsonAudios final : public td::Jsonable { + public: + JsonAudios(const td_api::audios *audios, const Client *client) : audios_(audios), client_(client) { + } + void store(td::JsonValueScope *scope) const { + auto object = scope->enter_object(); + object("total_count", audios_->total_count_); + object("audios", td::json_array(audios_->audios_, + [client = client_](auto &audio) { return JsonAudio(audio.get(), client); })); + } + + private: + const td_api::audios *audios_; + const Client *client_; +}; + class Client::JsonMessage final : public td::Jsonable { public: JsonMessage(const MessageInfo *message, bool need_reply, const td::string &source, const Client *client) @@ -5766,6 +5783,27 @@ class Client::TdOnGetUserProfilePhotosCallback final : public TdQueryCallback { PromisedQueryPtr query_; }; +class Client::TdOnGetUserProfileAudiosCallback final : public TdQueryCallback { + public: + TdOnGetUserProfileAudiosCallback(const Client *client, PromisedQueryPtr query) + : client_(client), query_(std::move(query)) { + } + + void on_result(object_ptr result) final { + if (result->get_id() == td_api::error::ID) { + return fail_query_with_error(std::move(query_), move_object_as(result)); + } + + CHECK(result->get_id() == td_api::audios::ID); + auto audios = move_object_as(result); + answer_query(JsonAudios(audios.get(), client_), std::move(query_)); + } + + private: + const Client *client_; + PromisedQueryPtr query_; +}; + class Client::TdOnSendMessageCallback final : public TdQueryCallback { public: TdOnSendMessageCallback(Client *client, int64 chat_id, PromisedQueryPtr query) @@ -12309,6 +12347,18 @@ td::Status Client::process_get_user_profile_photos_query(PromisedQueryPtr &query return td::Status::OK(); } +td::Status Client::process_get_user_profile_audios_query(PromisedQueryPtr &query) { + TRY_RESULT(user_id, get_user_id(query.get())); + int32 offset = get_integer_arg(query.get(), "offset", 0, 0); + int32 limit = get_integer_arg(query.get(), "limit", 100, 1, 100); + + check_user(user_id, std::move(query), [this, user_id, offset, limit](PromisedQueryPtr query) { + send_request(make_object(user_id, offset, limit), + td::make_unique(this, std::move(query))); + }); + return td::Status::OK(); +} + td::Status Client::process_send_message_query(PromisedQueryPtr &query) { auto r_chat_id = td::to_integer_safe(query->arg("chat_id")); if (r_chat_id.is_ok()) { diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index ebbfd1e..2dde7d5 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -112,6 +112,7 @@ class Client final : public WebhookActor::Callback { class JsonLinkPreviewOptions; class JsonAnimation; class JsonAudio; + class JsonAudios; class JsonDocument; class JsonPhotoSize; class JsonPhoto; @@ -250,6 +251,7 @@ class Client final : public WebhookActor::Callback { class TdOnAuthorizationCallback; class TdOnInitCallback; class TdOnGetUserProfilePhotosCallback; + class TdOnGetUserProfileAudiosCallback; class TdOnSendMessageCallback; class TdOnReturnBusinessMessageCallback; class TdOnSendMessageAlbumCallback; @@ -755,6 +757,7 @@ class Client final : public WebhookActor::Callback { td::Status process_get_chat_menu_button_query(PromisedQueryPtr &query); td::Status process_set_chat_menu_button_query(PromisedQueryPtr &query); td::Status process_get_user_profile_photos_query(PromisedQueryPtr &query); + td::Status process_get_user_profile_audios_query(PromisedQueryPtr &query); td::Status process_send_message_query(PromisedQueryPtr &query); td::Status process_send_animation_query(PromisedQueryPtr &query); td::Status process_send_audio_query(PromisedQueryPtr &query);