diff --git a/td/generate/scheme/td_api.tl b/td/generate/scheme/td_api.tl index 0173c69a6..4ed82662c 100644 --- a/td/generate/scheme/td_api.tl +++ b/td/generate/scheme/td_api.tl @@ -10154,9 +10154,10 @@ getChatInviteLinks chat_id:int53 creator_user_id:int53 is_revoked:Bool offset_da //@description Returns chat members joined a chat via an invite link. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links //@chat_id Chat identifier //@invite_link Invite link for which to return chat members +//@only_with_expired_subscription True, if the link is a subscription link and only members with expired subscription must be returned //@offset_member A chat member from which to return next chat members; pass null to get results from the beginning //@limit The maximum number of chat members to return; up to 100 -getChatInviteLinkMembers chat_id:int53 invite_link:string offset_member:chatInviteLinkMember limit:int32 = ChatInviteLinkMembers; +getChatInviteLinkMembers chat_id:int53 invite_link:string only_with_expired_subscription:Bool offset_member:chatInviteLinkMember limit:int32 = ChatInviteLinkMembers; //@description Revokes invite link for a chat. Available for basic groups, supergroups, and channels. Requires administrator privileges and can_invite_users right in the chat for own links and owner privileges for other links. //-If a primary link is revoked, then additionally to the revoked link returns new primary link diff --git a/td/telegram/DialogInviteLinkManager.cpp b/td/telegram/DialogInviteLinkManager.cpp index 42be39cde..09e13646d 100644 --- a/td/telegram/DialogInviteLinkManager.cpp +++ b/td/telegram/DialogInviteLinkManager.cpp @@ -391,7 +391,8 @@ class GetChatInviteImportersQuery final : public Td::ResultHandler { : promise_(std::move(promise)) { } - void send(DialogId dialog_id, const string &invite_link, int32 offset_date, UserId offset_user_id, int32 limit) { + void send(DialogId dialog_id, const string &invite_link, bool subscription_expired, int32 offset_date, + UserId offset_user_id, int32 limit) { dialog_id_ = dialog_id; auto input_peer = td_->dialog_manager_->get_input_peer(dialog_id, AccessRights::Write); CHECK(input_peer != nullptr); @@ -402,6 +403,9 @@ class GetChatInviteImportersQuery final : public Td::ResultHandler { } int32 flags = telegram_api::messages_getChatInviteImporters::LINK_MASK; + if (subscription_expired) { + flags |= telegram_api::messages_getChatInviteImporters::SUBSCRIPTION_EXPIRED_MASK; + } send_query(G()->net_query_creator().create(telegram_api::messages_getChatInviteImporters( flags, false /*ignored*/, false /*ignored*/, std::move(input_peer), invite_link, string(), offset_date, r_input_user.move_as_ok(), limit))); @@ -1060,8 +1064,9 @@ void DialogInviteLinkManager::get_dialog_invite_links(DialogId dialog_id, UserId } void DialogInviteLinkManager::get_dialog_invite_link_users( - DialogId dialog_id, const string &invite_link, td_api::object_ptr offset_member, - int32 limit, Promise> &&promise) { + DialogId dialog_id, const string &invite_link, bool subscription_expired, + td_api::object_ptr offset_member, int32 limit, + Promise> &&promise) { TRY_STATUS_PROMISE(promise, can_manage_dialog_invite_links(dialog_id)); if (limit <= 0) { @@ -1080,7 +1085,7 @@ void DialogInviteLinkManager::get_dialog_invite_link_users( } td_->create_handler(std::move(promise)) - ->send(dialog_id, invite_link, offset_date, offset_user_id, limit); + ->send(dialog_id, invite_link, subscription_expired, offset_date, offset_user_id, limit); } void DialogInviteLinkManager::revoke_dialog_invite_link( diff --git a/td/telegram/DialogInviteLinkManager.h b/td/telegram/DialogInviteLinkManager.h index bcc522e79..6a588aeba 100644 --- a/td/telegram/DialogInviteLinkManager.h +++ b/td/telegram/DialogInviteLinkManager.h @@ -73,7 +73,7 @@ class DialogInviteLinkManager final : public Actor { const string &offset_invite_link, int32 limit, Promise> &&promise); - void get_dialog_invite_link_users(DialogId dialog_id, const string &invite_link, + void get_dialog_invite_link_users(DialogId dialog_id, const string &invite_link, bool subscription_expired, td_api::object_ptr offset_member, int32 limit, Promise> &&promise); diff --git a/td/telegram/Td.cpp b/td/telegram/Td.cpp index bb0f2aaa1..0d4a8a483 100644 --- a/td/telegram/Td.cpp +++ b/td/telegram/Td.cpp @@ -6827,9 +6827,9 @@ void Td::on_request(uint64 id, td_api::getChatInviteLinkMembers &request) { CHECK_IS_USER(); CLEAN_INPUT_STRING(request.invite_link_); CREATE_REQUEST_PROMISE(); - dialog_invite_link_manager_->get_dialog_invite_link_users(DialogId(request.chat_id_), request.invite_link_, - std::move(request.offset_member_), request.limit_, - std::move(promise)); + dialog_invite_link_manager_->get_dialog_invite_link_users( + DialogId(request.chat_id_), request.invite_link_, request.only_with_expired_subscription_, + std::move(request.offset_member_), request.limit_, std::move(promise)); } void Td::on_request(uint64 id, td_api::getChatJoinRequests &request) { diff --git a/td/telegram/cli.cpp b/td/telegram/cli.cpp index 29ecd70e1..2d2b3bd33 100644 --- a/td/telegram/cli.cpp +++ b/td/telegram/cli.cpp @@ -4413,7 +4413,7 @@ class CliClient final : public Actor { get_args(args, chat_id, creator_user_id, offset_date, offset_invite_link, limit); send_request(td_api::make_object(chat_id, creator_user_id, op == "gcilr", offset_date, offset_invite_link, as_limit(limit))); - } else if (op == "gcilm") { + } else if (op == "gcilm" || op == "gcilme") { ChatId chat_id; string invite_link; UserId offset_user_id; @@ -4421,7 +4421,7 @@ class CliClient final : public Actor { string limit; get_args(args, chat_id, invite_link, offset_user_id, offset_date, limit); send_request(td_api::make_object( - chat_id, invite_link, + chat_id, invite_link, op == "gcilme", td_api::make_object(offset_user_id, offset_date, false, 0), as_limit(limit))); } else if (op == "gcjr") { ChatId chat_id;