From bd658d336a1fdadea45ec42e30f20699be9e4858 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 27 Feb 2026 14:22:40 +0300 Subject: [PATCH] Add setChatMemberTag. --- telegram-bot-api/Client.cpp | 25 +++++++++++++++++++++++-- telegram-bot-api/Client.h | 1 + 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 423a13b..944905e 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -339,6 +339,7 @@ bool Client::init_methods() { methods_.emplace("leavechat", &Client::process_leave_chat_query); methods_.emplace("promotechatmember", &Client::process_promote_chat_member_query); methods_.emplace("setchatadministratorcustomtitle", &Client::process_set_chat_administrator_custom_title_query); + methods_.emplace("setchatmembertag", &Client::process_set_chat_member_tag_query); methods_.emplace("banchatmember", &Client::process_ban_chat_member_query); methods_.emplace("kickchatmember", &Client::process_ban_chat_member_query); methods_.emplace("restrictchatmember", &Client::process_restrict_chat_member_query); @@ -14573,8 +14574,9 @@ td::Status Client::process_set_chat_administrator_custom_title_query(PromisedQue TRY_RESULT(user_id, get_user_id(query.get())); check_chat(chat_id, AccessRights::Write, std::move(query), [this, user_id](int64 chat_id, PromisedQueryPtr query) { - if (get_chat_type(chat_id) != ChatType::Supergroup) { - return fail_query(400, "Bad Request: method is available only for supergroups", std::move(query)); + auto chat_type = get_chat_type(chat_id); + if (chat_type != ChatType::Group && chat_type != ChatType::Supergroup) { + return fail_query(400, "Bad Request: method is available only for groups and supergroups", std::move(query)); } get_chat_member( @@ -14600,6 +14602,25 @@ td::Status Client::process_set_chat_administrator_custom_title_query(PromisedQue return td::Status::OK(); } +td::Status Client::process_set_chat_member_tag_query(PromisedQueryPtr &query) { + auto chat_id = query->arg("chat_id"); + TRY_RESULT(user_id, get_user_id(query.get())); + + check_chat(chat_id, AccessRights::Write, std::move(query), [this, user_id](int64 chat_id, PromisedQueryPtr query) { + auto chat_type = get_chat_type(chat_id); + if (chat_type != ChatType::Group && chat_type != ChatType::Supergroup) { + return fail_query(400, "Bad Request: method is available only for groups and supergroups", std::move(query)); + } + + check_user_no_fail(user_id, std::move(query), [this, chat_id, user_id](PromisedQueryPtr query) { + auto tag = query->arg("tag").str(); + send_request(make_object(chat_id, user_id, tag), + td::make_unique(std::move(query))); + }); + }); + return td::Status::OK(); +} + td::Status Client::process_ban_chat_member_query(PromisedQueryPtr &query) { auto chat_id = query->arg("chat_id"); TRY_RESULT(user_id, get_user_id(query.get())); diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index 46bc25f..a72f7b2 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -877,6 +877,7 @@ class Client final : public WebhookActor::Callback { td::Status process_leave_chat_query(PromisedQueryPtr &query); td::Status process_promote_chat_member_query(PromisedQueryPtr &query); td::Status process_set_chat_administrator_custom_title_query(PromisedQueryPtr &query); + td::Status process_set_chat_member_tag_query(PromisedQueryPtr &query); td::Status process_ban_chat_member_query(PromisedQueryPtr &query); td::Status process_restrict_chat_member_query(PromisedQueryPtr &query); td::Status process_unban_chat_member_query(PromisedQueryPtr &query);