mirror of
https://github.com/tdlight-team/tdlight-telegram-bot-api.git
synced 2024-12-29 14:15:50 +01:00
Add getMyDefaultAdministratorRights.
This commit is contained in:
parent
ee9dcde37b
commit
2989274f1f
telegram-bot-api
@ -192,6 +192,7 @@ bool Client::init_methods() {
|
|||||||
methods_.emplace("getmycommands", &Client::process_get_my_commands_query);
|
methods_.emplace("getmycommands", &Client::process_get_my_commands_query);
|
||||||
methods_.emplace("setmycommands", &Client::process_set_my_commands_query);
|
methods_.emplace("setmycommands", &Client::process_set_my_commands_query);
|
||||||
methods_.emplace("deletemycommands", &Client::process_delete_my_commands_query);
|
methods_.emplace("deletemycommands", &Client::process_delete_my_commands_query);
|
||||||
|
methods_.emplace("getmydefaultadministratorrights", &Client::process_get_my_default_administrator_rights_query);
|
||||||
methods_.emplace("setmydefaultadministratorrights", &Client::process_set_my_default_administrator_rights_query);
|
methods_.emplace("setmydefaultadministratorrights", &Client::process_set_my_default_administrator_rights_query);
|
||||||
methods_.emplace("getuserprofilephotos", &Client::process_get_user_profile_photos_query);
|
methods_.emplace("getuserprofilephotos", &Client::process_get_user_profile_photos_query);
|
||||||
methods_.emplace("sendmessage", &Client::process_send_message_query);
|
methods_.emplace("sendmessage", &Client::process_send_message_query);
|
||||||
@ -2292,6 +2293,23 @@ class Client::JsonBotCommand final : public Jsonable {
|
|||||||
const td_api::botCommand *command_;
|
const td_api::botCommand *command_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Client::JsonChatAdministratorRights final : public Jsonable {
|
||||||
|
public:
|
||||||
|
JsonChatAdministratorRights(const td_api::chatAdministratorRights *rights, Client::ChatType chat_type)
|
||||||
|
: rights_(rights), chat_type_(chat_type) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void store(JsonValueScope *scope) const {
|
||||||
|
auto object = scope->enter_object();
|
||||||
|
td_api::chatAdministratorRights empty_rights;
|
||||||
|
Client::json_store_administrator_rights(object, rights_ == nullptr ? &empty_rights : rights_, chat_type_);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
const td_api::chatAdministratorRights *rights_;
|
||||||
|
Client::ChatType chat_type_;
|
||||||
|
};
|
||||||
|
|
||||||
class Client::JsonChatPhotos final : public Jsonable {
|
class Client::JsonChatPhotos final : public Jsonable {
|
||||||
public:
|
public:
|
||||||
JsonChatPhotos(const td_api::chatPhotos *photos, const Client *client) : photos_(photos), client_(client) {
|
JsonChatPhotos(const td_api::chatPhotos *photos, const Client *client) : photos_(photos), client_(client) {
|
||||||
@ -2342,25 +2360,11 @@ class Client::JsonChatMember final : public Jsonable {
|
|||||||
case td_api::chatMemberStatusAdministrator::ID: {
|
case td_api::chatMemberStatusAdministrator::ID: {
|
||||||
auto administrator = static_cast<const td_api::chatMemberStatusAdministrator *>(member_->status_.get());
|
auto administrator = static_cast<const td_api::chatMemberStatusAdministrator *>(member_->status_.get());
|
||||||
object("can_be_edited", td::JsonBool(administrator->can_be_edited_));
|
object("can_be_edited", td::JsonBool(administrator->can_be_edited_));
|
||||||
object("can_manage_chat", td::JsonBool(administrator->rights_->can_manage_chat_));
|
Client::json_store_administrator_rights(object, administrator->rights_.get(), chat_type_);
|
||||||
object("can_change_info", td::JsonBool(administrator->rights_->can_change_info_));
|
|
||||||
if (chat_type_ == Client::ChatType::Channel) {
|
|
||||||
object("can_post_messages", td::JsonBool(administrator->rights_->can_post_messages_));
|
|
||||||
object("can_edit_messages", td::JsonBool(administrator->rights_->can_edit_messages_));
|
|
||||||
}
|
|
||||||
object("can_delete_messages", td::JsonBool(administrator->rights_->can_delete_messages_));
|
|
||||||
object("can_invite_users", td::JsonBool(administrator->rights_->can_invite_users_));
|
|
||||||
object("can_restrict_members", td::JsonBool(administrator->rights_->can_restrict_members_));
|
|
||||||
if (chat_type_ == Client::ChatType::Group || chat_type_ == Client::ChatType::Supergroup) {
|
|
||||||
object("can_pin_messages", td::JsonBool(administrator->rights_->can_pin_messages_));
|
|
||||||
}
|
|
||||||
object("can_promote_members", td::JsonBool(administrator->rights_->can_promote_members_));
|
|
||||||
object("can_manage_voice_chats", td::JsonBool(administrator->rights_->can_manage_video_chats_));
|
object("can_manage_voice_chats", td::JsonBool(administrator->rights_->can_manage_video_chats_));
|
||||||
object("can_manage_video_chats", td::JsonBool(administrator->rights_->can_manage_video_chats_));
|
|
||||||
if (!administrator->custom_title_.empty()) {
|
if (!administrator->custom_title_.empty()) {
|
||||||
object("custom_title", administrator->custom_title_);
|
object("custom_title", administrator->custom_title_);
|
||||||
}
|
}
|
||||||
object("is_anonymous", td::JsonBool(administrator->rights_->is_anonymous_));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case td_api::chatMemberStatusMember::ID:
|
case td_api::chatMemberStatusMember::ID:
|
||||||
@ -3335,6 +3339,36 @@ class Client::TdOnGetMyCommandsCallback final : public TdQueryCallback {
|
|||||||
PromisedQueryPtr query_;
|
PromisedQueryPtr query_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Client::TdOnGetMyDefaultAdministratorRightsCallback final : public TdQueryCallback {
|
||||||
|
public:
|
||||||
|
TdOnGetMyDefaultAdministratorRightsCallback(bool for_channels, PromisedQueryPtr query)
|
||||||
|
: for_channels_(for_channels), 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::userFullInfo::ID);
|
||||||
|
auto full_info = move_object_as<td_api::userFullInfo>(result);
|
||||||
|
if (full_info->bot_info_ == nullptr) {
|
||||||
|
LOG(ERROR) << "Have no bot info for self";
|
||||||
|
return fail_query_with_error(std::move(query_),
|
||||||
|
make_object<td_api::error>(500, "Requested data is inaccessible"));
|
||||||
|
}
|
||||||
|
auto bot_info = std::move(full_info->bot_info_);
|
||||||
|
const auto *rights = for_channels_ ? bot_info->default_channel_administrator_rights_.get()
|
||||||
|
: bot_info->default_group_administrator_rights_.get();
|
||||||
|
answer_query(JsonChatAdministratorRights(rights, for_channels_ ? ChatType::Channel : ChatType::Supergroup),
|
||||||
|
std::move(query_));
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool for_channels_;
|
||||||
|
PromisedQueryPtr query_;
|
||||||
|
};
|
||||||
|
|
||||||
class Client::TdOnGetChatFullInfoCallback final : public TdQueryCallback {
|
class Client::TdOnGetChatFullInfoCallback final : public TdQueryCallback {
|
||||||
public:
|
public:
|
||||||
TdOnGetChatFullInfoCallback(Client *client, int64 chat_id, PromisedQueryPtr query)
|
TdOnGetChatFullInfoCallback(Client *client, int64 chat_id, PromisedQueryPtr query)
|
||||||
@ -6738,6 +6772,13 @@ td::Status Client::process_delete_my_commands_query(PromisedQueryPtr &query) {
|
|||||||
return Status::OK();
|
return Status::OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
td::Status Client::process_get_my_default_administrator_rights_query(PromisedQueryPtr &query) {
|
||||||
|
bool for_channels = to_bool(query->arg("for_channels"));
|
||||||
|
send_request(make_object<td_api::getUserFullInfo>(my_id_),
|
||||||
|
td::make_unique<TdOnGetMyDefaultAdministratorRightsCallback>(for_channels, std::move(query)));
|
||||||
|
return Status::OK();
|
||||||
|
}
|
||||||
|
|
||||||
td::Status Client::process_set_my_default_administrator_rights_query(PromisedQueryPtr &query) {
|
td::Status Client::process_set_my_default_administrator_rights_query(PromisedQueryPtr &query) {
|
||||||
bool for_channels = to_bool(query->arg("for_channels"));
|
bool for_channels = to_bool(query->arg("for_channels"));
|
||||||
TRY_RESULT(rights, get_chat_administrator_rights(query.get()));
|
TRY_RESULT(rights, get_chat_administrator_rights(query.get()));
|
||||||
@ -8992,6 +9033,25 @@ void Client::json_store_callback_query_payload(td::JsonObjectScope &object,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Client::json_store_administrator_rights(td::JsonObjectScope &object, const td_api::chatAdministratorRights *rights,
|
||||||
|
ChatType chat_type) {
|
||||||
|
object("can_manage_chat", td::JsonBool(rights->can_manage_chat_));
|
||||||
|
object("can_change_info", td::JsonBool(rights->can_change_info_));
|
||||||
|
if (chat_type == ChatType::Channel) {
|
||||||
|
object("can_post_messages", td::JsonBool(rights->can_post_messages_));
|
||||||
|
object("can_edit_messages", td::JsonBool(rights->can_edit_messages_));
|
||||||
|
}
|
||||||
|
object("can_delete_messages", td::JsonBool(rights->can_delete_messages_));
|
||||||
|
object("can_invite_users", td::JsonBool(rights->can_invite_users_));
|
||||||
|
object("can_restrict_members", td::JsonBool(rights->can_restrict_members_));
|
||||||
|
if (chat_type == ChatType::Group || chat_type == ChatType::Supergroup) {
|
||||||
|
object("can_pin_messages", td::JsonBool(rights->can_pin_messages_));
|
||||||
|
}
|
||||||
|
object("can_promote_members", td::JsonBool(rights->can_promote_members_));
|
||||||
|
object("can_manage_video_chats", td::JsonBool(rights->can_manage_video_chats_));
|
||||||
|
object("is_anonymous", td::JsonBool(rights->is_anonymous_));
|
||||||
|
}
|
||||||
|
|
||||||
void Client::json_store_permissions(td::JsonObjectScope &object, const td_api::chatPermissions *permissions) {
|
void Client::json_store_permissions(td::JsonObjectScope &object, const td_api::chatPermissions *permissions) {
|
||||||
object("can_send_messages", td::JsonBool(permissions->can_send_messages_));
|
object("can_send_messages", td::JsonBool(permissions->can_send_messages_));
|
||||||
object("can_send_media_messages", td::JsonBool(permissions->can_send_media_messages_));
|
object("can_send_media_messages", td::JsonBool(permissions->can_send_media_messages_));
|
||||||
|
@ -134,6 +134,7 @@ class Client final : public WebhookActor::Callback {
|
|||||||
class JsonShippingQuery;
|
class JsonShippingQuery;
|
||||||
class JsonPreCheckoutQuery;
|
class JsonPreCheckoutQuery;
|
||||||
class JsonBotCommand;
|
class JsonBotCommand;
|
||||||
|
class JsonChatAdministratorRights;
|
||||||
class JsonChatPhotos;
|
class JsonChatPhotos;
|
||||||
class JsonChatMember;
|
class JsonChatMember;
|
||||||
class JsonChatMembers;
|
class JsonChatMembers;
|
||||||
@ -175,6 +176,7 @@ class Client final : public WebhookActor::Callback {
|
|||||||
class TdOnGetCallbackQueryMessageCallback;
|
class TdOnGetCallbackQueryMessageCallback;
|
||||||
class TdOnGetStickerSetCallback;
|
class TdOnGetStickerSetCallback;
|
||||||
class TdOnGetMyCommandsCallback;
|
class TdOnGetMyCommandsCallback;
|
||||||
|
class TdOnGetMyDefaultAdministratorRightsCallback;
|
||||||
class TdOnGetChatFullInfoCallback;
|
class TdOnGetChatFullInfoCallback;
|
||||||
class TdOnGetChatStickerSetCallback;
|
class TdOnGetChatStickerSetCallback;
|
||||||
class TdOnGetChatPinnedMessageCallback;
|
class TdOnGetChatPinnedMessageCallback;
|
||||||
@ -452,6 +454,7 @@ class Client final : public WebhookActor::Callback {
|
|||||||
Status process_get_me_query(PromisedQueryPtr &query);
|
Status process_get_me_query(PromisedQueryPtr &query);
|
||||||
Status process_get_my_commands_query(PromisedQueryPtr &query);
|
Status process_get_my_commands_query(PromisedQueryPtr &query);
|
||||||
Status process_set_my_commands_query(PromisedQueryPtr &query);
|
Status process_set_my_commands_query(PromisedQueryPtr &query);
|
||||||
|
Status process_get_my_default_administrator_rights_query(PromisedQueryPtr &query);
|
||||||
Status process_set_my_default_administrator_rights_query(PromisedQueryPtr &query);
|
Status process_set_my_default_administrator_rights_query(PromisedQueryPtr &query);
|
||||||
Status process_delete_my_commands_query(PromisedQueryPtr &query);
|
Status process_delete_my_commands_query(PromisedQueryPtr &query);
|
||||||
Status process_get_user_profile_photos_query(PromisedQueryPtr &query);
|
Status process_get_user_profile_photos_query(PromisedQueryPtr &query);
|
||||||
@ -733,6 +736,9 @@ class Client final : public WebhookActor::Callback {
|
|||||||
static void json_store_callback_query_payload(td::JsonObjectScope &object,
|
static void json_store_callback_query_payload(td::JsonObjectScope &object,
|
||||||
const td_api::CallbackQueryPayload *payload);
|
const td_api::CallbackQueryPayload *payload);
|
||||||
|
|
||||||
|
static void json_store_administrator_rights(td::JsonObjectScope &object,
|
||||||
|
const td_api::chatAdministratorRights *rights, ChatType chat_type);
|
||||||
|
|
||||||
static void json_store_permissions(td::JsonObjectScope &object, const td_api::chatPermissions *permissions);
|
static void json_store_permissions(td::JsonObjectScope &object, const td_api::chatPermissions *permissions);
|
||||||
|
|
||||||
void remove_replies_to_message(int64 chat_id, int64 reply_to_message_id, bool only_from_cache);
|
void remove_replies_to_message(int64 chat_id, int64 reply_to_message_id, bool only_from_cache);
|
||||||
|
Loading…
Reference in New Issue
Block a user