From 0cf13d3bf40111136accb2be0712d70653296e6d Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 13 Feb 2023 17:25:33 +0300 Subject: [PATCH] Update TDLib to 1.8.12. --- td | 2 +- telegram-bot-api/Client.cpp | 85 +++++++++++++++++-------------- telegram-bot-api/Client.h | 3 +- telegram-bot-api/HttpServer.h | 2 +- telegram-bot-api/WebhookActor.cpp | 2 +- 5 files changed, 52 insertions(+), 42 deletions(-) diff --git a/td b/td index 3179d35..6c53a61 160000 --- a/td +++ b/td @@ -1 +1 @@ -Subproject commit 3179d35694a28267a0b6273fc9b5bdce3b6b1235 +Subproject commit 6c53a61162e6ea4a753869ee248b8a9e926ffd5d diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 16b7ecf..373e44a 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -735,9 +735,9 @@ class Client::JsonChat final : public Jsonable { object("permissions", JsonChatPermissions(permissions)); } auto everyone_is_administrator = - permissions->can_send_messages_ && permissions->can_send_audios_ && permissions->can_send_documents_ && - permissions->can_send_photos_ && permissions->can_send_videos_ && permissions->can_send_video_notes_ && - permissions->can_send_voice_notes_ && permissions->can_send_polls_ && + permissions->can_send_basic_messages_ && permissions->can_send_audios_ && + permissions->can_send_documents_ && permissions->can_send_photos_ && permissions->can_send_videos_ && + permissions->can_send_video_notes_ && permissions->can_send_voice_notes_ && permissions->can_send_polls_ && permissions->can_send_other_messages_ && permissions->can_add_web_page_previews_ && permissions->can_change_info_ && permissions->can_invite_users_ && permissions->can_pin_messages_; object("all_members_are_administrators", td::JsonBool(everyone_is_administrator)); @@ -4190,7 +4190,7 @@ void Client::send(PromisedQueryPtr query) { if (!query->is_internal()) { query->set_stat_actor(stat_actor_); if (!parameters_->local_mode_ && !is_local_method(query->method()) && - td::Time::now() > parameters_->start_time_ + 10 * 60) { + td::Time::now() > parameters_->start_time_ + 60) { BotStatActor *stat = stat_actor_.get_actor_unsafe(); auto update_per_minute = static_cast(stat->get_minute_update_count(td::Time::now()) * 60); if (stat->get_active_request_count() > 500 + update_per_minute) { @@ -5999,7 +5999,7 @@ td::Result> Client::get_input_me td_api::object_ptr Client::get_message_send_options(bool disable_notification, bool protect_content) { - return make_object(disable_notification, false, protect_content, false, nullptr); + return make_object(disable_notification, false, protect_content, false, nullptr, 0); } td::Result>> Client::get_inline_query_results( @@ -6615,23 +6615,29 @@ td::Result> Client::get_mask_position(c return r_mask_position.move_as_ok(); } -td::Result>> Client::get_input_stickers(const Query *query) const { +td::Result>> Client::get_input_stickers( + const Query *query, object_ptr *sticker_format) const { auto emojis = query->arg("emojis"); auto sticker = get_input_file(query, "png_sticker"); - object_ptr sticker_format; object_ptr mask_position; if (sticker != nullptr) { - sticker_format = make_object(); + if (sticker_format != nullptr) { + *sticker_format = make_object(); + } TRY_RESULT_ASSIGN(mask_position, get_mask_position(query, "mask_position")); } else { sticker = get_input_file(query, "tgs_sticker", true); if (sticker != nullptr) { - sticker_format = make_object(); + if (sticker_format != nullptr) { + *sticker_format = make_object(); + } } else { sticker = get_input_file(query, "webm_sticker", true); if (sticker != nullptr) { - sticker_format = make_object(); + if (sticker_format != nullptr) { + *sticker_format = make_object(); + } } else { if (!query->arg("tgs_sticker").empty()) { return Status::Error(400, "Bad Request: animated sticker must be uploaded as an InputFile"); @@ -6645,8 +6651,8 @@ td::Result>> Client::get_inp } td::vector> stickers; - stickers.push_back(make_object(std::move(sticker), emojis.str(), std::move(sticker_format), - std::move(mask_position))); + stickers.push_back(make_object(std::move(sticker), emojis.str(), std::move(mask_position), + td::vector())); return std::move(stickers); } @@ -8207,19 +8213,22 @@ td::Status Client::process_answer_inline_query_query(PromisedQueryPtr &query) { int32 cache_time = get_integer_arg(query.get(), "cache_time", 300, 0, 24 * 60 * 60); auto next_offset = query->arg("next_offset"); auto switch_pm_text = query->arg("switch_pm_text"); - auto switch_pm_parameter = query->arg("switch_pm_parameter"); + object_ptr button; + if (!switch_pm_text.empty()) { + button = make_object( + switch_pm_text.str(), + make_object(query->arg("switch_pm_parameter").str())); + } TRY_RESULT(results, get_inline_query_results(query.get())); resolve_inline_query_results_bot_usernames( std::move(results), std::move(query), - [this, inline_query_id, is_personal, cache_time, next_offset = next_offset.str(), - switch_pm_text = switch_pm_text.str(), switch_pm_parameter = switch_pm_parameter.str()]( - td::vector> results, PromisedQueryPtr query) { - send_request( - make_object(inline_query_id, is_personal, std::move(results), cache_time, - next_offset, switch_pm_text, switch_pm_parameter), - td::make_unique(std::move(query))); + [this, inline_query_id, is_personal, cache_time, next_offset = next_offset.str(), button = std::move(button)]( + td::vector> results, PromisedQueryPtr query) mutable { + send_request(make_object(inline_query_id, is_personal, std::move(button), + std::move(results), cache_time, next_offset), + td::make_unique(std::move(query))); }); return Status::OK(); } @@ -8995,13 +9004,12 @@ td::Status Client::process_upload_sticker_file_query(PromisedQueryPtr &query) { TRY_RESULT(user_id, get_user_id(query.get())); auto png_sticker = get_input_file(query.get(), "png_sticker"); - check_user( - user_id, std::move(query), [this, user_id, png_sticker = std::move(png_sticker)](PromisedQueryPtr query) mutable { - send_request(make_object( - user_id, make_object(std::move(png_sticker), "", - make_object(), nullptr)), - td::make_unique(this, std::move(query))); - }); + check_user(user_id, std::move(query), + [this, user_id, png_sticker = std::move(png_sticker)](PromisedQueryPtr query) mutable { + send_request(make_object(user_id, make_object(), + std::move(png_sticker)), + td::make_unique(this, std::move(query))); + }); return Status::OK(); } @@ -9009,7 +9017,8 @@ td::Status Client::process_create_new_sticker_set_query(PromisedQueryPtr &query) TRY_RESULT(user_id, get_user_id(query.get())); auto name = query->arg("name"); auto title = query->arg("title"); - TRY_RESULT(stickers, get_input_stickers(query.get())); + object_ptr sticker_format; + TRY_RESULT(stickers, get_input_stickers(query.get(), &sticker_format)); TRY_RESULT(sticker_type, get_sticker_type(query->arg("sticker_type"))); if (to_bool(query->arg("contains_masks"))) { @@ -9017,12 +9026,12 @@ td::Status Client::process_create_new_sticker_set_query(PromisedQueryPtr &query) } check_user(user_id, std::move(query), - [this, user_id, title, name, sticker_type = std::move(sticker_type), - stickers = std::move(stickers)](PromisedQueryPtr query) mutable { - send_request( - make_object(user_id, title.str(), name.str(), std::move(sticker_type), - std::move(stickers), PSTRING() << "bot" << my_id_), - td::make_unique(this, false, std::move(query))); + [this, user_id, title, name, sticker_format = std::move(sticker_format), + sticker_type = std::move(sticker_type), stickers = std::move(stickers)](PromisedQueryPtr query) mutable { + send_request(make_object( + user_id, title.str(), name.str(), std::move(sticker_format), std::move(sticker_type), + false, std::move(stickers), PSTRING() << "bot" << my_id_), + td::make_unique(this, false, std::move(query))); }); return Status::OK(); } @@ -9030,13 +9039,13 @@ td::Status Client::process_create_new_sticker_set_query(PromisedQueryPtr &query) td::Status Client::process_add_sticker_to_set_query(PromisedQueryPtr &query) { TRY_RESULT(user_id, get_user_id(query.get())); auto name = query->arg("name"); - TRY_RESULT(stickers, get_input_stickers(query.get())); + TRY_RESULT(stickers, get_input_stickers(query.get(), nullptr)); CHECK(!stickers.empty()); check_user(user_id, std::move(query), [this, user_id, name, sticker = std::move(stickers[0])](PromisedQueryPtr query) mutable { send_request(make_object(user_id, name.str(), std::move(sticker)), - td::make_unique(this, false, std::move(query))); + td::make_unique(std::move(query))); }); return Status::OK(); } @@ -9048,7 +9057,7 @@ td::Status Client::process_set_sticker_set_thumb_query(PromisedQueryPtr &query) check_user(user_id, std::move(query), [this, user_id, name, thumbnail = std::move(thumbnail)](PromisedQueryPtr query) mutable { send_request(make_object(user_id, name.str(), std::move(thumbnail)), - td::make_unique(this, false, std::move(query))); + td::make_unique(std::move(query))); }); return Status::OK(); } @@ -10119,7 +10128,7 @@ void Client::json_store_permissions(td::JsonObjectScope &object, const td_api::c bool can_send_media_messages = permissions->can_send_audios_ || permissions->can_send_documents_ || permissions->can_send_photos_ || permissions->can_send_videos_ || permissions->can_send_video_notes_ || permissions->can_send_voice_notes_; - object("can_send_messages", td::JsonBool(permissions->can_send_messages_)); + object("can_send_messages", td::JsonBool(permissions->can_send_basic_messages_)); object("can_send_media_messages", td::JsonBool(can_send_media_messages)); object("can_send_audios", td::JsonBool(permissions->can_send_audios_)); object("can_send_documents", td::JsonBool(permissions->can_send_documents_)); diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index 5a0d620..5b1feb4 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -401,7 +401,8 @@ class Client final : public WebhookActor::Callback { static object_ptr mask_index_to_point(int32 index); - td::Result>> get_input_stickers(const Query *query) const; + td::Result>> get_input_stickers( + const Query *query, object_ptr *sticker_format) const; static td::Result get_passport_element_hash(Slice encoded_hash); diff --git a/telegram-bot-api/HttpServer.h b/telegram-bot-api/HttpServer.h index d5f0008..13a03c8 100644 --- a/telegram-bot-api/HttpServer.h +++ b/telegram-bot-api/HttpServer.h @@ -66,7 +66,7 @@ class HttpServer final : public td::TcpListener::Callback { scheduler_id--; } td::create_actor("HttpInboundConnection", td::BufferedFd(std::move(fd)), 0, - 20, 500, creator_(), scheduler_id) + 50, 500, creator_(), scheduler_id) .release(); } diff --git a/telegram-bot-api/WebhookActor.cpp b/telegram-bot-api/WebhookActor.cpp index e21e114..91b4e69 100644 --- a/telegram-bot-api/WebhookActor.cpp +++ b/telegram-bot-api/WebhookActor.cpp @@ -229,7 +229,7 @@ td::Status WebhookActor::create_connection(td::BufferedFd fd) { auto id = connections_.create(Connection()); auto *conn = connections_.get(id); conn->actor_id_ = td::create_actor( - PSLICE() << "Connect:" << id, std::move(fd), std::move(ssl_stream), 0, 20, 60, + PSLICE() << "Connect:" << id, std::move(fd), std::move(ssl_stream), 0, 50, 60, td::ActorShared(actor_id(this), id), slow_scheduler_id_); conn->ip_generation_ = ip_generation_; conn->event_id_ = {};