mirror of
https://github.com/tdlight-team/tdlight-telegram-bot-api.git
synced 2024-12-27 04:35:50 +01:00
Implemented getParticipants
- method `getParticipants` : `chat_id`, `type` -- `type` is string, possible values are `members`, `parameters`, `admins`, `administators`, `restricted`, `banned`, `bots` -- return type: array of `ChatMember` - edits to the `ChatMember` type: -- now the full bot list is returned -- new `joined_date` field (type integer) -- new `inviter` field (type User)
This commit is contained in:
parent
d3a038f35d
commit
0624215988
@ -2046,6 +2046,16 @@ class Client::JsonChatMember : public Jsonable {
|
|||||||
auto object = scope->enter_object();
|
auto object = scope->enter_object();
|
||||||
object("user", JsonUser(member_->user_id_, client_));
|
object("user", JsonUser(member_->user_id_, client_));
|
||||||
object("status", Client::get_chat_member_status(member_->status_));
|
object("status", Client::get_chat_member_status(member_->status_));
|
||||||
|
|
||||||
|
object("joined_date", member_->joined_chat_date_);
|
||||||
|
if (member_->inviter_user_id_ > 0) {
|
||||||
|
object("inviter", JsonUser(member_->inviter_user_id_, client_));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (member_->bot_info_ != nullptr) {
|
||||||
|
//for the future
|
||||||
|
}
|
||||||
|
|
||||||
switch (member_->status_->get_id()) {
|
switch (member_->status_->get_id()) {
|
||||||
case td_api::chatMemberStatusCreator::ID: {
|
case td_api::chatMemberStatusCreator::ID: {
|
||||||
auto creator = static_cast<const td_api::chatMemberStatusCreator *>(member_->status_.get());
|
auto creator = static_cast<const td_api::chatMemberStatusCreator *>(member_->status_.get());
|
||||||
@ -2123,9 +2133,11 @@ class Client::JsonChatMembers : public Jsonable {
|
|||||||
is_member_bot = true;
|
is_member_bot = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
if (is_member_bot && member->user_id_ != client_->my_id_) {
|
if (is_member_bot && member->user_id_ != client_->my_id_) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
if (administrators_only_) {
|
if (administrators_only_) {
|
||||||
auto status = Client::get_chat_member_status(member->status_);
|
auto status = Client::get_chat_member_status(member->status_);
|
||||||
if (status != "creator" && status != "administrator") {
|
if (status != "creator" && status != "administrator") {
|
||||||
@ -7389,14 +7401,68 @@ td::Status Client::process_get_message_info_query(PromisedQueryPtr &query) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
td::Status Client::process_get_participants_query(PromisedQueryPtr &query) {
|
td::Status Client::process_get_participants_query(PromisedQueryPtr &query) {
|
||||||
answer_query(td::JsonFalse(), std::move(query), "Not implemented");
|
auto chat_id = query->arg("chat_id");
|
||||||
|
|
||||||
|
|
||||||
|
check_chat(chat_id, AccessRights::Read, std::move(query), [this](int64 chat_id, PromisedQueryPtr query) {
|
||||||
|
auto chat_info = get_chat(chat_id);
|
||||||
|
CHECK(chat_info != nullptr);
|
||||||
|
td::int32 offset = get_integer_arg(query.get(), "offset", 0);
|
||||||
|
td::int32 limit = get_integer_arg(query.get(), "limit", 200, 0, 200);
|
||||||
|
|
||||||
|
|
||||||
|
switch (chat_info->type) {
|
||||||
|
case ChatInfo::Type::Private:
|
||||||
|
return fail_query(400, "Bad Request: there are no participants in the private chat", std::move(query));
|
||||||
|
case ChatInfo::Type::Group: {
|
||||||
|
/*
|
||||||
|
auto group_info = get_group_info(chat_info->group_id);
|
||||||
|
CHECK(group_info != nullptr);
|
||||||
|
return send_request(make_object<td_api::getBasicGroupFullInfo>(chat_info->group_id),
|
||||||
|
std::make_unique<TdOnGetGroupMembersCallback>(this, true, std::move(query)))
|
||||||
|
*/
|
||||||
|
return fail_query(400, "Bad Request: method not available for group chats", std::move(query));
|
||||||
|
|
||||||
|
}
|
||||||
|
case ChatInfo::Type::Supergroup: {
|
||||||
|
td_api::object_ptr<td_api::SupergroupMembersFilter> filter;
|
||||||
|
td::string type = "members";
|
||||||
|
if (query->has_arg("type")) {
|
||||||
|
type = td::to_lower(query->arg("type"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (type == "members" || type == "participants") {
|
||||||
|
filter = td_api::make_object<td_api::supergroupMembersFilterRecent>();
|
||||||
|
} else if (type == "banned") {
|
||||||
|
filter = td_api::make_object<td_api::supergroupMembersFilterBanned>();
|
||||||
|
} else if (type == "restricted") {
|
||||||
|
filter = td_api::make_object<td_api::supergroupMembersFilterRestricted>();
|
||||||
|
} else if (type == "bots") {
|
||||||
|
filter = td_api::make_object<td_api::supergroupMembersFilterBots>();
|
||||||
|
} else if (type == "admins" || type == "administrators") {
|
||||||
|
filter = td_api::make_object<td_api::supergroupMembersFilterAdministrators>();
|
||||||
|
} else {
|
||||||
|
fail_query_with_error(std::move(query), 400, "Invalid member type");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return send_request(
|
||||||
|
make_object<td_api::getSupergroupMembers>(chat_info->supergroup_id, std::move(filter), offset, limit),
|
||||||
|
std::make_unique<TdOnGetSupergroupMembersCallback>(this, get_chat_type(chat_id), std::move(query)));
|
||||||
|
}
|
||||||
|
case ChatInfo::Type::Unknown:
|
||||||
|
default:
|
||||||
|
UNREACHABLE();
|
||||||
|
}
|
||||||
|
});
|
||||||
return Status::OK();
|
return Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
td::Status Client::process_delete_messages_query(PromisedQueryPtr &query) {
|
td::Status Client::process_delete_messages_query(PromisedQueryPtr &query) {
|
||||||
answer_query(td::JsonFalse(), std::move(query), "Not implemented");
|
answer_query(td::JsonFalse(), std::move(query), "Not implemented");
|
||||||
return Status::OK();
|
return Status::OK();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
td::Status Client::process_toggle_group_invites_query(PromisedQueryPtr &query) {
|
td::Status Client::process_toggle_group_invites_query(PromisedQueryPtr &query) {
|
||||||
|
Loading…
Reference in New Issue
Block a user