aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2026-05-02 03:17:59 +0300
committerlevlam <levlam@telegram.org>2026-05-02 03:17:59 +0300
commit8e456a1f66aeef8712a9df01596eb93024258f6a (patch)
tree85a5edc4fb5eb57ddf35289cc5c2ff19b146adda
parentbda9f10aa322b5a2f87a429338958ebb52285ec3 (diff)
Add getUserPersonalChatMessages.
-rw-r--r--telegram-bot-api/Client.cpp38
-rw-r--r--telegram-bot-api/Client.h2
2 files changed, 40 insertions, 0 deletions
diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp
index 07eb99c..093b651 100644
--- a/telegram-bot-api/Client.cpp
+++ b/telegram-bot-api/Client.cpp
@@ -325,6 +325,7 @@ bool Client::init_methods() {
methods_.emplace("transfergift", &Client::process_transfer_gift_query);
methods_.emplace("setuseremojistatus", &Client::process_set_user_emoji_status_query);
methods_.emplace("getchat", &Client::process_get_chat_query);
+ methods_.emplace("getuserpersonalchatmessages", &Client::process_get_user_personal_chat_messages_query);
methods_.emplace("setchatphoto", &Client::process_set_chat_photo_query);
methods_.emplace("deletechatphoto", &Client::process_delete_chat_photo_query);
methods_.emplace("setchattitle", &Client::process_set_chat_title_query);
@@ -7078,6 +7079,32 @@ class Client::TdOnGetForumTopicInfoCallback final : public TdQueryCallback {
PromisedQueryPtr query_;
};
+class Client::TdOnGetMessagesCallback final : public TdQueryCallback {
+ public:
+ TdOnGetMessagesCallback(Client *client, PromisedQueryPtr query) : client_(client), query_(std::move(query)) {
+ }
+
+ void on_result(object_ptr<td_api::Object> result) final {
+ if (result->get_id() == td_api::error::ID) {
+ return fail_query_with_error(std::move(query_), move_object_as<td_api::error>(result));
+ }
+
+ CHECK(result->get_id() == td_api::messages::ID);
+ auto messages = move_object_as<td_api::messages>(result);
+ td::vector<td::string> message_strings;
+ for (auto &message : messages->messages_) {
+ auto message_info = client_->create_message(std::move(message));
+ message_strings.push_back(
+ td::json_encode<td::string>(JsonMessage(message_info.get(), false, "TdOnGetMessagesCallback", client_)));
+ }
+ answer_query(JsonMessages(message_strings), std::move(query_));
+ }
+
+ private:
+ Client *client_;
+ PromisedQueryPtr query_;
+};
+
class Client::TdOnGetMenuButtonCallback final : public TdQueryCallback {
public:
explicit TdOnGetMenuButtonCallback(PromisedQueryPtr query) : query_(std::move(query)) {
@@ -14498,6 +14525,17 @@ td::Status Client::process_get_chat_query(PromisedQueryPtr &query) {
return td::Status::OK();
}
+td::Status Client::process_get_user_personal_chat_messages_query(PromisedQueryPtr &query) {
+ TRY_RESULT(user_id, get_user_id(query.get()));
+ auto limit = get_integer_arg(query.get(), "limit", 0, 0, 20);
+
+ check_user(user_id, std::move(query), [this, user_id, limit](PromisedQueryPtr query) mutable {
+ send_request(make_object<td_api::getPersonalChatHistory>(user_id, limit),
+ td::make_unique<TdOnGetMessagesCallback>(this, std::move(query)));
+ });
+ return td::Status::OK();
+}
+
td::Status Client::process_set_chat_photo_query(PromisedQueryPtr &query) {
auto chat_id = query->arg("chat_id");
auto photo = get_input_file(query.get(), "photo", true);
diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h
index 20e8365..1e9cf40 100644
--- a/telegram-bot-api/Client.h
+++ b/telegram-bot-api/Client.h
@@ -278,6 +278,7 @@ class Client final : public WebhookActor::Callback {
class TdOnGetEditedMessageCallback;
class TdOnGetCallbackQueryMessageCallback;
class TdOnGetForumTopicInfoCallback;
+ class TdOnGetMessagesCallback;
class TdOnGetMenuButtonCallback;
class TdOnGetMyCommandsCallback;
class TdOnGetMyDefaultAdministratorRightsCallback;
@@ -862,6 +863,7 @@ class Client final : public WebhookActor::Callback {
td::Status process_transfer_gift_query(PromisedQueryPtr &query);
td::Status process_set_user_emoji_status_query(PromisedQueryPtr &query);
td::Status process_get_chat_query(PromisedQueryPtr &query);
+ td::Status process_get_user_personal_chat_messages_query(PromisedQueryPtr &query);
td::Status process_set_chat_photo_query(PromisedQueryPtr &query);
td::Status process_delete_chat_photo_query(PromisedQueryPtr &query);
td::Status process_set_chat_title_query(PromisedQueryPtr &query);