Add td_api::reorderActiveBotUsernames.
This commit is contained in:
parent
93c3b5cc07
commit
ea56e6865a
@ -7649,12 +7649,15 @@ getBotName bot_user_id:int53 language_code:string = Text;
|
|||||||
//@description Changes a profile photo for a bot @bot_user_id Identifier of the target bot @photo Profile photo to set; pass null to delete the chat photo
|
//@description Changes a profile photo for a bot @bot_user_id Identifier of the target bot @photo Profile photo to set; pass null to delete the chat photo
|
||||||
setBotProfilePhoto bot_user_id:int53 photo:InputChatPhoto = Ok;
|
setBotProfilePhoto bot_user_id:int53 photo:InputChatPhoto = Ok;
|
||||||
|
|
||||||
//@description Changes active state for a username of a bot. The editable username can't be disabled. May return an error with a message "USERNAMES_ACTIVE_TOO_MUCH" if the maximum number of active usernames has been reached
|
//@description Changes active state for a username of a bot. The editable username can't be disabled. May return an error with a message "USERNAMES_ACTIVE_TOO_MUCH" if the maximum number of active usernames has been reached. Can be called only if userTypeBot.can_be_edited == true
|
||||||
//@bot_user_id Identifier of the target bot
|
//@bot_user_id Identifier of the target bot
|
||||||
//@username The username to change
|
//@username The username to change
|
||||||
//@is_active Pass true to activate the username; pass false to disable it
|
//@is_active Pass true to activate the username; pass false to disable it
|
||||||
toggleBotUsernameIsActive bot_user_id:int53 username:string is_active:Bool = Ok;
|
toggleBotUsernameIsActive bot_user_id:int53 username:string is_active:Bool = Ok;
|
||||||
|
|
||||||
|
//@description Changes order of active usernames of a bot. Can be called only if userTypeBot.can_be_edited == true @bot_user_id Identifier of the target bot @usernames The new order of active usernames. All currently active usernames must be specified
|
||||||
|
reorderActiveBotUsernames bot_user_id:int53 usernames:vector<string> = Ok;
|
||||||
|
|
||||||
//@description Sets the text shown in the chat with a bot if the chat is empty. Can be called only if userTypeBot.can_be_edited == true
|
//@description Sets the text shown in the chat with a bot if the chat is empty. Can be called only if userTypeBot.can_be_edited == true
|
||||||
//@bot_user_id Identifier of the target bot
|
//@bot_user_id Identifier of the target bot
|
||||||
//@language_code A two-letter ISO 639-1 language code. If empty, the description will be shown to all users, for which language there are no dedicated description
|
//@language_code A two-letter ISO 639-1 language code. If empty, the description will be shown to all users, for which language there are no dedicated description
|
||||||
|
@ -858,12 +858,14 @@ class ToggleUsernameQuery final : public Td::ResultHandler {
|
|||||||
|
|
||||||
bool result = result_ptr.ok();
|
bool result = result_ptr.ok();
|
||||||
LOG(DEBUG) << "Receive result for ToggleUsernameQuery: " << result;
|
LOG(DEBUG) << "Receive result for ToggleUsernameQuery: " << result;
|
||||||
td_->contacts_manager_->on_update_username_is_active(std::move(username_), is_active_, std::move(promise_));
|
td_->contacts_manager_->on_update_username_is_active(td_->contacts_manager_->get_my_id(), std::move(username_),
|
||||||
|
is_active_, std::move(promise_));
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_error(Status status) final {
|
void on_error(Status status) final {
|
||||||
if (status.message() == "USERNAME_NOT_MODIFIED") {
|
if (status.message() == "USERNAME_NOT_MODIFIED") {
|
||||||
td_->contacts_manager_->on_update_username_is_active(std::move(username_), is_active_, std::move(promise_));
|
td_->contacts_manager_->on_update_username_is_active(td_->contacts_manager_->get_my_id(), std::move(username_),
|
||||||
|
is_active_, std::move(promise_));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
promise_.set_error(std::move(status));
|
promise_.set_error(std::move(status));
|
||||||
@ -895,12 +897,14 @@ class ReorderUsernamesQuery final : public Td::ResultHandler {
|
|||||||
return on_error(Status::Error(500, "Usernames weren't updated"));
|
return on_error(Status::Error(500, "Usernames weren't updated"));
|
||||||
}
|
}
|
||||||
|
|
||||||
td_->contacts_manager_->on_update_active_usernames_order(std::move(usernames_), std::move(promise_));
|
td_->contacts_manager_->on_update_active_usernames_order(td_->contacts_manager_->get_my_id(), std::move(usernames_),
|
||||||
|
std::move(promise_));
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_error(Status status) final {
|
void on_error(Status status) final {
|
||||||
if (status.message() == "USERNAME_NOT_MODIFIED") {
|
if (status.message() == "USERNAME_NOT_MODIFIED") {
|
||||||
td_->contacts_manager_->on_update_active_usernames_order(std::move(usernames_), std::move(promise_));
|
td_->contacts_manager_->on_update_active_usernames_order(td_->contacts_manager_->get_my_id(),
|
||||||
|
std::move(usernames_), std::move(promise_));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
promise_.set_error(std::move(status));
|
promise_.set_error(std::move(status));
|
||||||
@ -937,13 +941,58 @@ class ToggleBotUsernameQuery final : public Td::ResultHandler {
|
|||||||
|
|
||||||
bool result = result_ptr.ok();
|
bool result = result_ptr.ok();
|
||||||
LOG(DEBUG) << "Receive result for ToggleBotUsernameQuery: " << result;
|
LOG(DEBUG) << "Receive result for ToggleBotUsernameQuery: " << result;
|
||||||
td_->contacts_manager_->on_update_bot_username_is_active(bot_user_id_, std::move(username_), is_active_,
|
td_->contacts_manager_->on_update_username_is_active(bot_user_id_, std::move(username_), is_active_,
|
||||||
std::move(promise_));
|
std::move(promise_));
|
||||||
}
|
}
|
||||||
|
|
||||||
void on_error(Status status) final {
|
void on_error(Status status) final {
|
||||||
if (status.message() == "USERNAME_NOT_MODIFIED") {
|
if (status.message() == "USERNAME_NOT_MODIFIED") {
|
||||||
td_->contacts_manager_->on_update_bot_username_is_active(bot_user_id_, std::move(username_), is_active_,
|
td_->contacts_manager_->on_update_username_is_active(bot_user_id_, std::move(username_), is_active_,
|
||||||
|
std::move(promise_));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
promise_.set_error(std::move(status));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class ReorderBotUsernamesQuery final : public Td::ResultHandler {
|
||||||
|
Promise<Unit> promise_;
|
||||||
|
UserId bot_user_id_;
|
||||||
|
vector<string> usernames_;
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit ReorderBotUsernamesQuery(Promise<Unit> &&promise) : promise_(std::move(promise)) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void send(UserId bot_user_id, vector<string> &&usernames) {
|
||||||
|
bot_user_id_ = bot_user_id;
|
||||||
|
usernames_ = usernames;
|
||||||
|
auto r_input_user = td_->contacts_manager_->get_input_user(bot_user_id_);
|
||||||
|
if (r_input_user.is_error()) {
|
||||||
|
return on_error(r_input_user.move_as_error());
|
||||||
|
}
|
||||||
|
send_query(G()->net_query_creator().create(
|
||||||
|
telegram_api::bots_reorderUsernames(r_input_user.move_as_ok(), std::move(usernames)), {{bot_user_id_}}));
|
||||||
|
}
|
||||||
|
|
||||||
|
void on_result(BufferSlice packet) final {
|
||||||
|
auto result_ptr = fetch_result<telegram_api::bots_reorderUsernames>(packet);
|
||||||
|
if (result_ptr.is_error()) {
|
||||||
|
return on_error(result_ptr.move_as_error());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool result = result_ptr.ok();
|
||||||
|
LOG(DEBUG) << "Receive result for ReorderBotUsernamesQuery: " << result;
|
||||||
|
if (!result) {
|
||||||
|
return on_error(Status::Error(500, "Usernames weren't updated"));
|
||||||
|
}
|
||||||
|
|
||||||
|
td_->contacts_manager_->on_update_active_usernames_order(bot_user_id_, std::move(usernames_), std::move(promise_));
|
||||||
|
}
|
||||||
|
|
||||||
|
void on_error(Status status) final {
|
||||||
|
if (status.message() == "USERNAME_NOT_MODIFIED") {
|
||||||
|
td_->contacts_manager_->on_update_active_usernames_order(bot_user_id_, std::move(usernames_),
|
||||||
std::move(promise_));
|
std::move(promise_));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -7566,8 +7615,8 @@ void ContactsManager::reorder_usernames_impl(vector<string> &&usernames, Promise
|
|||||||
td_->create_handler<ReorderUsernamesQuery>(std::move(promise))->send(std::move(usernames));
|
td_->create_handler<ReorderUsernamesQuery>(std::move(promise))->send(std::move(usernames));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContactsManager::on_update_username_is_active(string &&username, bool is_active, Promise<Unit> &&promise) {
|
void ContactsManager::on_update_username_is_active(UserId user_id, string &&username, bool is_active,
|
||||||
auto user_id = get_my_id();
|
Promise<Unit> &&promise) {
|
||||||
User *u = get_user(user_id);
|
User *u = get_user(user_id);
|
||||||
CHECK(u != nullptr);
|
CHECK(u != nullptr);
|
||||||
if (!u->usernames.can_toggle(username)) {
|
if (!u->usernames.can_toggle(username)) {
|
||||||
@ -7578,8 +7627,8 @@ void ContactsManager::on_update_username_is_active(string &&username, bool is_ac
|
|||||||
promise.set_value(Unit());
|
promise.set_value(Unit());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContactsManager::on_update_active_usernames_order(vector<string> &&usernames, Promise<Unit> &&promise) {
|
void ContactsManager::on_update_active_usernames_order(UserId user_id, vector<string> &&usernames,
|
||||||
auto user_id = get_my_id();
|
Promise<Unit> &&promise) {
|
||||||
User *u = get_user(user_id);
|
User *u = get_user(user_id);
|
||||||
CHECK(u != nullptr);
|
CHECK(u != nullptr);
|
||||||
if (!u->usernames.can_reorder_to(usernames)) {
|
if (!u->usernames.can_reorder_to(usernames)) {
|
||||||
@ -7604,16 +7653,20 @@ void ContactsManager::toggle_bot_username_is_active(UserId bot_user_id, string &
|
|||||||
td_->create_handler<ToggleBotUsernameQuery>(std::move(promise))->send(bot_user_id, std::move(username), is_active);
|
td_->create_handler<ToggleBotUsernameQuery>(std::move(promise))->send(bot_user_id, std::move(username), is_active);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContactsManager::on_update_bot_username_is_active(UserId bot_user_id, string &&username, bool is_active,
|
void ContactsManager::reorder_bot_usernames(UserId bot_user_id, vector<string> &&usernames, Promise<Unit> &&promise) {
|
||||||
Promise<Unit> &&promise) {
|
TRY_RESULT_PROMISE(promise, bot_data, get_bot_data(bot_user_id));
|
||||||
User *u = get_user(bot_user_id);
|
if (!bot_data.can_be_edited) {
|
||||||
CHECK(u != nullptr);
|
return promise.set_error(Status::Error(400, "The bot can't be edited"));
|
||||||
if (!u->usernames.can_toggle(username)) {
|
|
||||||
return reload_user(bot_user_id, std::move(promise));
|
|
||||||
}
|
}
|
||||||
on_update_user_usernames(u, bot_user_id, u->usernames.toggle(username, is_active));
|
const User *u = get_user(bot_user_id);
|
||||||
update_user(u, bot_user_id);
|
CHECK(u != nullptr);
|
||||||
promise.set_value(Unit());
|
if (!u->usernames.can_reorder_to(usernames)) {
|
||||||
|
return promise.set_error(Status::Error(400, "Invalid username order specified"));
|
||||||
|
}
|
||||||
|
if (usernames.size() <= 1) {
|
||||||
|
return promise.set_value(Unit());
|
||||||
|
}
|
||||||
|
td_->create_handler<ReorderBotUsernamesQuery>(std::move(promise))->send(bot_user_id, std::move(usernames));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContactsManager::set_emoji_status(EmojiStatus emoji_status, Promise<Unit> &&promise) {
|
void ContactsManager::set_emoji_status(EmojiStatus emoji_status, Promise<Unit> &&promise) {
|
||||||
|
@ -304,11 +304,9 @@ class ContactsManager final : public Actor {
|
|||||||
|
|
||||||
UserId add_channel_bot_user();
|
UserId add_channel_bot_user();
|
||||||
|
|
||||||
void on_update_username_is_active(string &&username, bool is_active, Promise<Unit> &&promise);
|
void on_update_username_is_active(UserId user_id, string &&username, bool is_active, Promise<Unit> &&promise);
|
||||||
|
|
||||||
void on_update_active_usernames_order(vector<string> &&usernames, Promise<Unit> &&promise);
|
void on_update_active_usernames_order(UserId user_id, vector<string> &&usernames, Promise<Unit> &&promise);
|
||||||
|
|
||||||
void on_update_bot_username_is_active(UserId bot_user_id, string &&username, bool is_active, Promise<Unit> &&promise);
|
|
||||||
|
|
||||||
void on_update_channel_username_is_active(ChannelId channel_id, string &&username, bool is_active,
|
void on_update_channel_username_is_active(ChannelId channel_id, string &&username, bool is_active,
|
||||||
Promise<Unit> &&promise);
|
Promise<Unit> &&promise);
|
||||||
@ -403,6 +401,8 @@ class ContactsManager final : public Actor {
|
|||||||
|
|
||||||
void toggle_bot_username_is_active(UserId bot_user_id, string &&username, bool is_active, Promise<Unit> &&promise);
|
void toggle_bot_username_is_active(UserId bot_user_id, string &&username, bool is_active, Promise<Unit> &&promise);
|
||||||
|
|
||||||
|
void reorder_bot_usernames(UserId bot_user_id, vector<string> &&usernames, Promise<Unit> &&promise);
|
||||||
|
|
||||||
void set_emoji_status(EmojiStatus emoji_status, Promise<Unit> &&promise);
|
void set_emoji_status(EmojiStatus emoji_status, Promise<Unit> &&promise);
|
||||||
|
|
||||||
void set_chat_description(ChatId chat_id, const string &description, Promise<Unit> &&promise);
|
void set_chat_description(ChatId chat_id, const string &description, Promise<Unit> &&promise);
|
||||||
|
@ -7035,6 +7035,16 @@ void Td::on_request(uint64 id, td_api::toggleBotUsernameIsActive &request) {
|
|||||||
request.is_active_, std::move(promise));
|
request.is_active_, std::move(promise));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Td::on_request(uint64 id, td_api::reorderActiveBotUsernames &request) {
|
||||||
|
CHECK_IS_USER();
|
||||||
|
for (auto &username : request.usernames_) {
|
||||||
|
CLEAN_INPUT_STRING(username);
|
||||||
|
}
|
||||||
|
CREATE_OK_REQUEST_PROMISE();
|
||||||
|
contacts_manager_->reorder_bot_usernames(UserId(request.bot_user_id_), std::move(request.usernames_),
|
||||||
|
std::move(promise));
|
||||||
|
}
|
||||||
|
|
||||||
void Td::on_request(uint64 id, td_api::setBotInfoDescription &request) {
|
void Td::on_request(uint64 id, td_api::setBotInfoDescription &request) {
|
||||||
CLEAN_INPUT_STRING(request.description_);
|
CLEAN_INPUT_STRING(request.description_);
|
||||||
CREATE_OK_REQUEST_PROMISE();
|
CREATE_OK_REQUEST_PROMISE();
|
||||||
|
@ -1145,6 +1145,8 @@ class Td final : public Actor {
|
|||||||
|
|
||||||
void on_request(uint64 id, td_api::toggleBotUsernameIsActive &request);
|
void on_request(uint64 id, td_api::toggleBotUsernameIsActive &request);
|
||||||
|
|
||||||
|
void on_request(uint64 id, td_api::reorderActiveBotUsernames &request);
|
||||||
|
|
||||||
void on_request(uint64 id, td_api::setBotInfoDescription &request);
|
void on_request(uint64 id, td_api::setBotInfoDescription &request);
|
||||||
|
|
||||||
void on_request(uint64 id, const td_api::getBotInfoDescription &request);
|
void on_request(uint64 id, const td_api::getBotInfoDescription &request);
|
||||||
|
@ -5032,6 +5032,17 @@ class CliClient final : public Actor {
|
|||||||
InputChatPhoto input_chat_photo;
|
InputChatPhoto input_chat_photo;
|
||||||
get_args(args, bot_user_id, input_chat_photo);
|
get_args(args, bot_user_id, input_chat_photo);
|
||||||
send_request(td_api::make_object<td_api::setBotProfilePhoto>(bot_user_id, input_chat_photo));
|
send_request(td_api::make_object<td_api::setBotProfilePhoto>(bot_user_id, input_chat_photo));
|
||||||
|
} else if (op == "tbunia") {
|
||||||
|
UserId bot_user_id;
|
||||||
|
string username;
|
||||||
|
bool is_active;
|
||||||
|
get_args(args, bot_user_id, username, is_active);
|
||||||
|
send_request(td_api::make_object<td_api::toggleBotUsernameIsActive>(bot_user_id, username, is_active));
|
||||||
|
} else if (op == "rabun") {
|
||||||
|
UserId bot_user_id;
|
||||||
|
string usernames;
|
||||||
|
get_args(args, bot_user_id, usernames);
|
||||||
|
send_request(td_api::make_object<td_api::reorderActiveBotUsernames>(bot_user_id, autosplit_str(usernames)));
|
||||||
} else if (op == "sbid") {
|
} else if (op == "sbid") {
|
||||||
UserId bot_user_id;
|
UserId bot_user_id;
|
||||||
string language_code;
|
string language_code;
|
||||||
|
Loading…
Reference in New Issue
Block a user