From eafb9375d2011803a35d2e778e6cc92cfa13aa19 Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 2 Aug 2021 23:57:11 +0300 Subject: [PATCH 01/15] Allow to change tag verbosity level. --- telegram-bot-api/ClientManager.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/telegram-bot-api/ClientManager.cpp b/telegram-bot-api/ClientManager.cpp index f042de1..d84eccf 100644 --- a/telegram-bot-api/ClientManager.cpp +++ b/telegram-bot-api/ClientManager.cpp @@ -147,16 +147,28 @@ void ClientManager::get_stats(td::PromiseActor promise, td::StringBuilder sb(buf.as_slice()); td::Slice id_filter; + int new_verbosity_level = -1; + td::string tag; for (auto &arg : args) { if (arg.first == "id") { id_filter = arg.second; } if (arg.first == "v") { - auto r_verbosity = td::to_integer_safe(arg.second); - if (r_verbosity.is_ok()) { - parameters_->shared_data_->next_verbosity_level_ = r_verbosity.ok(); + auto r_new_verbosity_level = td::to_integer_safe(arg.second); + if (r_new_verbosity_level.is_ok()) { + new_verbosity_level = r_new_verbosity_level.ok(); } } + if (arg.first == "tag") { + tag = arg.second; + } + } + if (new_verbosity_level > 0) { + if (tag.empty()) { + parameters_->shared_data_->next_verbosity_level_ = new_verbosity_level; + } else { + td::ClientActor::execute(td::td_api::make_object(tag, new_verbosity_level)); + } } auto now = td::Time::now(); From 60acf1e402486429ae09ecfb53736e8925166d92 Mon Sep 17 00:00:00 2001 From: levlam Date: Tue, 10 Aug 2021 12:50:02 +0300 Subject: [PATCH 02/15] Store separate size of query_list_. --- telegram-bot-api/ClientParameters.h | 1 + telegram-bot-api/Query.cpp | 1 + telegram-bot-api/Query.h | 3 +++ telegram-bot-api/telegram-bot-api.cpp | 5 +++-- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/telegram-bot-api/ClientParameters.h b/telegram-bot-api/ClientParameters.h index a0f2333..b08bde7 100644 --- a/telegram-bot-api/ClientParameters.h +++ b/telegram-bot-api/ClientParameters.h @@ -32,6 +32,7 @@ struct SharedData { std::atomic next_verbosity_level_{-1}; // not thread-safe + size_t query_list_size_ = 0; td::ListNode query_list_; td::unique_ptr webhook_db_; td::unique_ptr tqueue_; diff --git a/telegram-bot-api/Query.cpp b/telegram-bot-api/Query.cpp index c8925de..41c66dd 100644 --- a/telegram-bot-api/Query.cpp +++ b/telegram-bot-api/Query.cpp @@ -47,6 +47,7 @@ Query::Query(td::vector &&container, td::Slice token, bool is_t if (shared_data_) { shared_data_->query_count_++; if (method_ != "getupdates") { + shared_data_->query_list_size_++; shared_data_->query_list_.put(this); } } diff --git a/telegram-bot-api/Query.h b/telegram-bot-api/Query.h index 5ccb65d..92cb9bb 100644 --- a/telegram-bot-api/Query.h +++ b/telegram-bot-api/Query.h @@ -110,6 +110,9 @@ class Query : public td::ListNode { ~Query() { if (shared_data_) { shared_data_->query_count_--; + if (!empty()) { + shared_data_->query_list_size_--; + } } } diff --git a/telegram-bot-api/telegram-bot-api.cpp b/telegram-bot-api/telegram-bot-api.cpp index 58fdef3..35666b2 100644 --- a/telegram-bot-api/telegram-bot-api.cpp +++ b/telegram-bot-api/telegram-bot-api.cpp @@ -144,13 +144,14 @@ static void dump_statistics(const std::shared_ptr &shared_data, LOG(WARNING) << td::tag("buffer_mem", td::format::as_size(td::BufferAllocator::get_buffer_mem())); LOG(WARNING) << td::tag("buffer_slice_size", td::format::as_size(td::BufferAllocator::get_buffer_slice_size())); + auto query_list_size = shared_data->query_list_size_; auto query_count = shared_data->query_count_.load(); - LOG(WARNING) << td::tag("pending queries", query_count); + LOG(WARNING) << td::tag("pending queries", query_count) << td::tag("pending requests", query_list_size); td::uint64 i = 0; bool was_gap = false; for (auto end = &shared_data->query_list_, cur = end->prev; cur != end; cur = cur->prev, i++) { - if (i < 20 || i > query_count - 20 || i % (query_count / 50 + 1) == 0) { + if (i < 20 || i > query_list_size - 20 || i % (query_list_size / 50 + 1) == 0) { if (was_gap) { LOG(WARNING) << "..."; was_gap = false; From 0256738f23a5f17ac9853b9c1695e0858c2d1ebc Mon Sep 17 00:00:00 2001 From: levlam Date: Thu, 12 Aug 2021 20:43:24 +0300 Subject: [PATCH 03/15] Update CentOS 8 repo name. --- build.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.html b/build.html index 338e025..029b409 100644 --- a/build.html +++ b/build.html @@ -334,7 +334,7 @@ function onOptionsChanged() { cmake = 'cmake3'; packages += ' gperf'; } else { - commands.push(sudo + 'dnf --enablerepo=PowerTools install gperf'); + commands.push(sudo + 'dnf --enablerepo=powertools install gperf'); } packages += ' ' + cmake; commands.push(sudo + 'yum install -y ' + packages); From d598402a3c532bf2058c2092a13c6dae272cf157 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 13 Aug 2021 19:36:11 +0300 Subject: [PATCH 04/15] Remove unneeded check for unavailable supergroup member count. --- telegram-bot-api/Client.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index ef4ab11..3e7e44f 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -3241,9 +3241,6 @@ class Client::TdOnGetSupergroupMembersCountCallback : public TdQueryCallback { CHECK(result->get_id() == td_api::supergroupFullInfo::ID); auto supergroup_full_info = move_object_as(result); - if (supergroup_full_info->member_count_ == 0) { - return fail_query(400, "Bad Request: need administrator rights", std::move(query_)); - } return answer_query(td::VirtuallyJsonableInt(supergroup_full_info->member_count_), std::move(query_)); } From 25946a5c8ef28e97a5f8ca289efa1323edc285cd Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 1 Sep 2021 19:10:34 +0300 Subject: [PATCH 05/15] Enable CMP0074 policy to suppress CMake warning. --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 245e6a8..a47fc77 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,6 +27,10 @@ if (POLICY CMP0060) # link libraries by full path cmake_policy(SET CMP0060 NEW) endif() +if (POLICY CMP0074) + # use environment variables to find libraries + cmake_policy(SET CMP0074 NEW) +endif() include(PreventInSourceBuild) prevent_in_source_build() From cfa7124e768c4b56059162b3865b7350fd20575f Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 3 Sep 2021 19:35:10 +0300 Subject: [PATCH 06/15] Install gperf through vcpkg on Windows. --- build.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.html b/build.html index 029b409..f63ad6b 100644 --- a/build.html +++ b/build.html @@ -249,7 +249,6 @@ function onOptionsChanged() { pre_text.push('Download and install Microsoft Visual Studio. Enable C++ support while installing.'); pre_text.push('Download and install CMake; choose "Add CMake to the system PATH" option while installing.'); pre_text.push('Download and install Git.'); - pre_text.push('Download and install gperf. Add the path to gperf.exe to the PATH environment variable.'); } if (os_linux && linux_distro === 'Other') { var compiler = use_clang ? 'clang >= 3.4' : 'g++ >= 4.9.2'; @@ -410,9 +409,9 @@ function onOptionsChanged() { commands.push('cd vcpkg'); commands.push(local + 'bootstrap-vcpkg.bat'); if (build_64bit) { - commands.push(local + 'vcpkg.exe install openssl:x64-windows zlib:x64-windows'); + commands.push(local + 'vcpkg.exe install gperf openssl:x64-windows zlib:x64-windows'); } else { - commands.push(local + 'vcpkg.exe install openssl:x86-windows zlib:x86-windows'); + commands.push(local + 'vcpkg.exe install gperf openssl:x86-windows zlib:x86-windows'); } commands.push('cd ..'); } From 937fa526b90aaafd745a73839702d2069220e33d Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 6 Sep 2021 16:51:45 +0300 Subject: [PATCH 07/15] Remove unused field. --- telegram-bot-api/Client.cpp | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 3e7e44f..48a469b 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -1435,15 +1435,9 @@ class Client::JsonVoiceChatScheduled : public Jsonable { class Client::JsonVoiceChatStarted : public Jsonable { public: - explicit JsonVoiceChatStarted(const td_api::messageVoiceChatStarted *voice_chat_started) - : voice_chat_started_(voice_chat_started) { - } void store(JsonValueScope *scope) const { auto object = scope->enter_object(); } - - private: - const td_api::messageVoiceChatStarted *voice_chat_started_; }; class Client::JsonVoiceChatEnded : public Jsonable { @@ -1874,11 +1868,9 @@ void Client::JsonMessage::store(JsonValueScope *scope) const { object("voice_chat_scheduled", JsonVoiceChatScheduled(content)); break; } - case td_api::messageVoiceChatStarted::ID: { - auto content = static_cast(message_->content.get()); - object("voice_chat_started", JsonVoiceChatStarted(content)); + case td_api::messageVoiceChatStarted::ID: + object("voice_chat_started", JsonVoiceChatStarted()); break; - } case td_api::messageVoiceChatEnded::ID: { auto content = static_cast(message_->content.get()); object("voice_chat_ended", JsonVoiceChatEnded(content)); From 40ff6f637ba3c754ea891eaff38cae34314e88cb Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 8 Sep 2021 17:21:28 +0300 Subject: [PATCH 08/15] Update TDLib to 1.7.7. --- td | 2 +- telegram-bot-api/Client.cpp | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/td b/td index 91f8bb4..c582ab0 160000 --- a/td +++ b/td @@ -1 +1 @@ -Subproject commit 91f8bb48ac9507439993919461ed470b6268e051 +Subproject commit c582ab0bbfaa9ed2566de501f7e03b65a4c3613c diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 48a469b..97c590c 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -458,7 +458,8 @@ class Client::JsonVectorEntities : public Jsonable { void store(JsonValueScope *scope) const { auto array = scope->enter_array(); for (auto &entity : entities_) { - if (entity->type_->get_id() != td_api::textEntityTypeBankCardNumber::ID) { + auto entity_type = entity->type_->get_id(); + if (entity_type != td_api::textEntityTypeBankCardNumber::ID && entity_type != td_api::textEntityTypeMediaTimestamp::ID) { array << JsonEntity(entity.get(), client_); } } @@ -1838,6 +1839,8 @@ void Client::JsonMessage::store(JsonValueScope *scope) const { break; case td_api::messageCustomServiceAction::ID: break; + case td_api::messageChatSetTheme::ID: + break; case td_api::messageWebsiteConnected::ID: { auto chat = client_->get_chat(message_->chat_id); if (chat->type != ChatInfo::Type::Private) { @@ -4401,7 +4404,7 @@ void Client::on_update(object_ptr result) { add_update_chat_member(move_object_as(result)); break; default: - // we are not interested in this updates + // we are not interested in this update break; } } @@ -8920,6 +8923,8 @@ bool Client::need_skip_update_message(int64 chat_id, const object_ptr Date: Wed, 8 Sep 2021 17:22:40 +0300 Subject: [PATCH 09/15] Update version to 5.3.2. --- CMakeLists.txt | 2 +- telegram-bot-api/telegram-bot-api.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a47fc77..9c8cf79 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ if (POLICY CMP0065) cmake_policy(SET CMP0065 NEW) endif() -project(TelegramBotApi VERSION 5.3.1 LANGUAGES CXX) +project(TelegramBotApi VERSION 5.3.2 LANGUAGES CXX) add_subdirectory(td EXCLUDE_FROM_ALL) diff --git a/telegram-bot-api/telegram-bot-api.cpp b/telegram-bot-api/telegram-bot-api.cpp index 35666b2..56930dd 100644 --- a/telegram-bot-api/telegram-bot-api.cpp +++ b/telegram-bot-api/telegram-bot-api.cpp @@ -193,7 +193,7 @@ int main(int argc, char *argv[]) { auto start_time = td::Time::now(); auto shared_data = std::make_shared(); auto parameters = std::make_unique(); - parameters->version_ = "5.3.1"; + parameters->version_ = "5.3.2"; parameters->shared_data_ = shared_data; parameters->start_time_ = start_time; auto net_query_stats = td::create_net_query_stats(); From 05ebe83f2fdb8287f352c575ec8e43cdefc65905 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 10 Sep 2021 17:38:27 +0300 Subject: [PATCH 10/15] Add TELEGRAM_BOT_API_ENABLE_LTO build option. --- CMakeLists.txt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c8cf79..2a33b9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,11 @@ endif() project(TelegramBotApi VERSION 5.3.2 LANGUAGES CXX) +if (POLICY CMP0069) + option(TELEGRAM_BOT_API_ENABLE_LTO "Use \"ON\" to enable Link Time Optimization.") + set(TD_ENABLE_LTO "${TELEGRAM_BOT_API_ENABLE_LTO}" CACHE STRING "Enable LTO" FORCE) +endif() + add_subdirectory(td EXCLUDE_FROM_ALL) if (NOT DEFINED CMAKE_MODULE_PATH) @@ -35,6 +40,19 @@ endif() include(PreventInSourceBuild) prevent_in_source_build() +if (POLICY CMP0069 AND TELEGRAM_BOT_API_ENABLE_LTO) + cmake_policy(SET CMP0069 NEW) + include(CheckIPOSupported) + check_ipo_supported(RESULT IPO_SUPPORTED LANGUAGES CXX) + if (IPO_SUPPORTED) + string(REPLACE ";" " " CXX_FLAGS_IPO "${CMAKE_CXX_COMPILE_OPTIONS_IPO}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_FLAGS_IPO}") + + string(REPLACE ";" " " LINK_FLAGS_IPO "${CMAKE_CXX_LINK_OPTIONS_IPO}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINK_FLAGS_IPO}") + endif() +endif() + set(CMAKE_THREAD_PREFER_PTHREAD ON) set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) From 87981c105d4eab6fb50df1683ca76a60e2191279 Mon Sep 17 00:00:00 2001 From: levlam Date: Sun, 12 Sep 2021 13:51:22 +0300 Subject: [PATCH 11/15] Print stack trace to stderr after receiving signal RTMIN+2. --- telegram-bot-api/telegram-bot-api.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/telegram-bot-api/telegram-bot-api.cpp b/telegram-bot-api/telegram-bot-api.cpp index 56930dd..ea2594d 100644 --- a/telegram-bot-api/telegram-bot-api.cpp +++ b/telegram-bot-api/telegram-bot-api.cpp @@ -84,6 +84,10 @@ void print_log() { td::signal_safe_write("------------------------\n"); } +static void dump_stacktrace_signal_handler(int sig) { + td::Stacktrace::print_to_stderr(); +} + static void fail_signal_handler(int sig) { td::signal_safe_write_signal_number(sig); td::Stacktrace::PrintOptions options; @@ -187,6 +191,7 @@ int main(int argc, char *argv[]) { td::set_runtime_signal_handler(0, change_verbosity_level_signal_handler).ensure(); td::set_runtime_signal_handler(1, dump_log_signal_handler).ensure(); + td::set_runtime_signal_handler(2, dump_stacktrace_signal_handler).ensure(); td::init_openssl_threads(); From a1e41a1dc13c8f5d1fe70e116db287426e0967bc Mon Sep 17 00:00:00 2001 From: levlam Date: Sun, 12 Sep 2021 20:55:52 +0300 Subject: [PATCH 12/15] Use Debian 10 build instructions for Debian 11 and combine build instructions for Debian 8 and 9. --- build.html | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/build.html b/build.html index f63ad6b..7e845f0 100644 --- a/build.html +++ b/build.html @@ -34,9 +34,8 @@ select.large { font-size: large; } - - - + + @@ -338,9 +337,8 @@ function onOptionsChanged() { packages += ' ' + cmake; commands.push(sudo + 'yum install -y ' + packages); break; - case 'Debian 8': - case 'Debian 9': - case 'Debian 10': + case 'Debian 8/9': + case 'Debian 10+': case 'Ubuntu 14': case 'Ubuntu 16': case 'Ubuntu 18': @@ -361,7 +359,7 @@ function onOptionsChanged() { } if (use_clang) { packages += ' clang' + getClangVersionSuffix() + ' libc++-dev'; - if (linux_distro === 'Debian 10' || linux_distro === 'Ubuntu 18' || linux_distro === 'Ubuntu 20') { + if (linux_distro === 'Debian 10+' || linux_distro === 'Ubuntu 18' || linux_distro === 'Ubuntu 20') { packages += ' libc++abi-dev'; } } else { From 9461e3c2ae537fa3cf443033085a538776f3efc6 Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 15 Sep 2021 10:16:53 +0300 Subject: [PATCH 13/15] Fix gperf install instructions through vcpkg. --- build.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.html b/build.html index 7e845f0..9eebdff 100644 --- a/build.html +++ b/build.html @@ -407,9 +407,9 @@ function onOptionsChanged() { commands.push('cd vcpkg'); commands.push(local + 'bootstrap-vcpkg.bat'); if (build_64bit) { - commands.push(local + 'vcpkg.exe install gperf openssl:x64-windows zlib:x64-windows'); + commands.push(local + 'vcpkg.exe install gperf:x64-windows openssl:x64-windows zlib:x64-windows'); } else { - commands.push(local + 'vcpkg.exe install gperf openssl:x86-windows zlib:x86-windows'); + commands.push(local + 'vcpkg.exe install gperf:x86-windows openssl:x86-windows zlib:x86-windows'); } commands.push('cd ..'); } From 0034afbcba0503c589586818597913d2c97d9a2d Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 20 Sep 2021 16:58:22 +0300 Subject: [PATCH 14/15] Update TDLib to 1.7.8. --- td | 2 +- telegram-bot-api/Client.cpp | 131 ++++++++++++++++++------------------ telegram-bot-api/Client.h | 98 +++++++++++++-------------- 3 files changed, 115 insertions(+), 116 deletions(-) diff --git a/td b/td index c582ab0..0126cec 160000 --- a/td +++ b/td @@ -1 +1 @@ -Subproject commit c582ab0bbfaa9ed2566de501f7e03b65a4c3613c +Subproject commit 0126cec2686e3b95cc1b6dfb5676d364da0e091b diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 97c590c..ac4ab7d 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -323,7 +323,7 @@ class Client::JsonDatedFiles : public Jsonable { class Client::JsonUser : public Jsonable { public: - JsonUser(int32 user_id, const Client *client, bool full_bot_info = false) + JsonUser(int64 user_id, const Client *client, bool full_bot_info = false) : user_id_(user_id), client_(client), full_bot_info_(full_bot_info) { } void store(JsonValueScope *scope) const { @@ -350,14 +350,14 @@ class Client::JsonUser : public Jsonable { } private: - int32 user_id_; + int64 user_id_; const Client *client_; bool full_bot_info_; }; class Client::JsonUsers : public Jsonable { public: - JsonUsers(const td::vector &user_ids, const Client *client) : user_ids_(user_ids), client_(client) { + JsonUsers(const td::vector &user_ids, const Client *client) : user_ids_(user_ids), client_(client) { } void store(JsonValueScope *scope) const { auto array = scope->enter_array(); @@ -367,7 +367,7 @@ class Client::JsonUsers : public Jsonable { } private: - const td::vector &user_ids_; + const td::vector &user_ids_; const Client *client_; }; @@ -459,7 +459,8 @@ class Client::JsonVectorEntities : public Jsonable { auto array = scope->enter_array(); for (auto &entity : entities_) { auto entity_type = entity->type_->get_id(); - if (entity_type != td_api::textEntityTypeBankCardNumber::ID && entity_type != td_api::textEntityTypeMediaTimestamp::ID) { + if (entity_type != td_api::textEntityTypeBankCardNumber::ID && + entity_type != td_api::textEntityTypeMediaTimestamp::ID) { array << JsonEntity(entity.get(), client_); } } @@ -1726,7 +1727,7 @@ void Client::JsonMessage::store(JsonValueScope *scope) const { } case td_api::messageChatAddMembers::ID: { auto message_add_members = static_cast(message_->content.get()); - int32 user_id = client_->choose_added_member_id(message_add_members); + int64 user_id = client_->choose_added_member_id(message_add_members); if (user_id > 0) { object("new_chat_participant", JsonUser(user_id, client_)); object("new_chat_member", JsonUser(user_id, client_)); @@ -1746,7 +1747,7 @@ void Client::JsonMessage::store(JsonValueScope *scope) const { } case td_api::messageChatDeleteMember::ID: { auto message_delete_member = static_cast(message_->content.get()); - int32 user_id = message_delete_member->user_id_; + int64 user_id = message_delete_member->user_id_; object("left_chat_participant", JsonUser(user_id, client_)); object("left_chat_member", JsonUser(user_id, client_)); break; @@ -1928,7 +1929,7 @@ class Client::JsonMessageId : public Jsonable { class Client::JsonInlineQuery : public Jsonable { public: - JsonInlineQuery(int64 inline_query_id, int32 sender_user_id, const td_api::location *user_location, + JsonInlineQuery(int64 inline_query_id, int64 sender_user_id, const td_api::location *user_location, const td_api::ChatType *chat_type, const td::string &query, const td::string &offset, const Client *client) : inline_query_id_(inline_query_id) @@ -1984,7 +1985,7 @@ class Client::JsonInlineQuery : public Jsonable { private: int64 inline_query_id_; - int32 sender_user_id_; + int64 sender_user_id_; const td_api::location *user_location_; const td_api::ChatType *chat_type_; const td::string &query_; @@ -1994,7 +1995,7 @@ class Client::JsonInlineQuery : public Jsonable { class Client::JsonChosenInlineResult : public Jsonable { public: - JsonChosenInlineResult(int32 sender_user_id, const td_api::location *user_location, const td::string &query, + JsonChosenInlineResult(int64 sender_user_id, const td_api::location *user_location, const td::string &query, const td::string &result_id, const td::string &inline_message_id, const Client *client) : sender_user_id_(sender_user_id) , user_location_(user_location) @@ -2018,7 +2019,7 @@ class Client::JsonChosenInlineResult : public Jsonable { } private: - int32 sender_user_id_; + int64 sender_user_id_; const td_api::location *user_location_; const td::string &query_; const td::string &result_id_; @@ -2028,7 +2029,7 @@ class Client::JsonChosenInlineResult : public Jsonable { class Client::JsonCallbackQuery : public Jsonable { public: - JsonCallbackQuery(int64 callback_query_id, int32 sender_user_id, int64 chat_id, int64 message_id, + JsonCallbackQuery(int64 callback_query_id, int64 sender_user_id, int64 chat_id, int64 message_id, const MessageInfo *message_info, int64 chat_instance, td_api::CallbackQueryPayload *payload, const Client *client) : callback_query_id_(callback_query_id) @@ -2056,7 +2057,7 @@ class Client::JsonCallbackQuery : public Jsonable { private: int64 callback_query_id_; - int32 sender_user_id_; + int64 sender_user_id_; int64 chat_id_; int64 message_id_; const MessageInfo *message_info_; @@ -2067,7 +2068,7 @@ class Client::JsonCallbackQuery : public Jsonable { class Client::JsonInlineCallbackQuery : public Jsonable { public: - JsonInlineCallbackQuery(int64 callback_query_id, int32 sender_user_id, const td::string &inline_message_id, + JsonInlineCallbackQuery(int64 callback_query_id, int64 sender_user_id, const td::string &inline_message_id, int64 chat_instance, td_api::CallbackQueryPayload *payload, const Client *client) : callback_query_id_(callback_query_id) , sender_user_id_(sender_user_id) @@ -2088,7 +2089,7 @@ class Client::JsonInlineCallbackQuery : public Jsonable { private: int64 callback_query_id_; - int32 sender_user_id_; + int64 sender_user_id_; const td::string &inline_message_id_; int64 chat_instance_; td_api::CallbackQueryPayload *payload_; @@ -2974,7 +2975,7 @@ class Client::TdOnGetEditedMessageCallback : public TdQueryCallback { class Client::TdOnGetCallbackQueryMessageCallback : public TdQueryCallback { public: - TdOnGetCallbackQueryMessageCallback(Client *client, int32 user_id, int state) + TdOnGetCallbackQueryMessageCallback(Client *client, int64 user_id, int state) : client_(client), user_id_(user_id), state_(state) { } @@ -2993,13 +2994,13 @@ class Client::TdOnGetCallbackQueryMessageCallback : public TdQueryCallback { private: Client *client_; - int32 user_id_; + int64 user_id_; int state_; }; class Client::TdOnGetStickerSetCallback : public TdQueryCallback { public: - TdOnGetStickerSetCallback(Client *client, int64 set_id, int32 new_callback_query_user_id, int64 new_message_chat_id) + TdOnGetStickerSetCallback(Client *client, int64 set_id, int64 new_callback_query_user_id, int64 new_message_chat_id) : client_(client) , set_id_(set_id) , new_callback_query_user_id_(new_callback_query_user_id) @@ -3025,7 +3026,7 @@ class Client::TdOnGetStickerSetCallback : public TdQueryCallback { private: Client *client_; int64 set_id_; - int32 new_callback_query_user_id_; + int64 new_callback_query_user_id_; int64 new_message_chat_id_; }; @@ -3539,7 +3540,7 @@ void Client::on_get_edited_message(object_ptr edited_message) { } } -void Client::on_get_callback_query_message(object_ptr message, int32 user_id, int state) { +void Client::on_get_callback_query_message(object_ptr message, int64 user_id, int state) { CHECK(user_id != 0); auto &queue = new_callback_query_queues_[user_id]; CHECK(queue.has_active_request_); @@ -3573,7 +3574,7 @@ void Client::on_get_callback_query_message(object_ptr message, process_new_callback_query_queue(user_id, state + 1); } -void Client::on_get_sticker_set(int64 set_id, int32 new_callback_query_user_id, int64 new_message_chat_id, +void Client::on_get_sticker_set(int64 set_id, int64 new_callback_query_user_id, int64 new_message_chat_id, object_ptr sticker_set) { if (new_callback_query_user_id != 0) { auto &queue = new_callback_query_queues_[new_callback_query_user_id]; @@ -3623,7 +3624,7 @@ void Client::check_user_read_access(const UserInfo *user_info, PromisedQueryPtr } template -void Client::check_user(int32 user_id, PromisedQueryPtr query, OnSuccess on_success) { +void Client::check_user(int64 user_id, PromisedQueryPtr query, OnSuccess on_success) { const UserInfo *user_info = get_user_info(user_id); if (user_info != nullptr) { return check_user_read_access(user_info, std::move(query), std::move(on_success)); @@ -3633,7 +3634,7 @@ void Client::check_user(int32 user_id, PromisedQueryPtr query, OnSuccess on_succ } template -void Client::check_user_no_fail(int32 user_id, PromisedQueryPtr query, OnSuccess on_success) { +void Client::check_user_no_fail(int64 user_id, PromisedQueryPtr query, OnSuccess on_success) { const UserInfo *user_info = get_user_info(user_id); if (user_info != nullptr) { on_success(std::move(query)); @@ -3933,7 +3934,7 @@ void Client::resolve_inline_query_results_bot_usernames(td::vectorsecond.empty()); @@ -3968,7 +3969,7 @@ void Client::on_resolve_bot_username(const td::string &username, int32 user_id) } template -void Client::get_chat_member(int64 chat_id, int32 user_id, PromisedQueryPtr query, OnSuccess on_success) { +void Client::get_chat_member(int64 chat_id, int64 user_id, PromisedQueryPtr query, OnSuccess on_success) { check_user_no_fail( user_id, std::move(query), [this, chat_id, user_id, on_success = std::move(on_success)](PromisedQueryPtr query) mutable { @@ -4325,17 +4326,15 @@ void Client::on_update(object_ptr result) { my_id_ = -1; } else { CHECK(update->value_->get_id() == td_api::optionValueInteger::ID); - my_id_ = static_cast(move_object_as(update->value_)->value_); + my_id_ = move_object_as(update->value_)->value_; } } if (name == "group_anonymous_bot_user_id" && update->value_->get_id() == td_api::optionValueInteger::ID) { - group_anonymous_bot_user_id_ = - static_cast(move_object_as(update->value_)->value_); + group_anonymous_bot_user_id_ = move_object_as(update->value_)->value_; } if (name == "telegram_service_notifications_chat_id" && update->value_->get_id() == td_api::optionValueInteger::ID) { - service_notifications_user_id_ = - static_cast(move_object_as(update->value_)->value_); + service_notifications_user_id_ = move_object_as(update->value_)->value_; } if (name == "authorization_date") { if (update->value_->get_id() == td_api::optionValueEmpty::ID) { @@ -4635,7 +4634,7 @@ td::Result> Client::get_inline_ TRY_RESULT(request_write_access, get_json_object_bool_field(login_url_object, "request_write_access")); TRY_RESULT(forward_text, get_json_object_string_field(login_url_object, "forward_text")); - int32 bot_user_id = 0; + int64 bot_user_id = 0; if (bot_username.empty()) { bot_user_id = my_id_; } else { @@ -5490,7 +5489,7 @@ td::Result Client::get_bot_command_scope(JsonValue &&va return BotCommandScope(make_object(0), std::move(chat_id)); } - TRY_RESULT(user_id, get_json_object_int_field(object, "user_id", false)); + TRY_RESULT(user_id, get_json_object_long_field(object, "user_id", false)); if (user_id <= 0) { return Status::Error(400, "Invalid user_id specified"); } @@ -5829,7 +5828,7 @@ td::Result> Client::get_text_entity_t if (type == "text_mention") { TRY_RESULT(user, get_json_object_field(object, "user", JsonValue::Type::Object, false)); CHECK(user.type() == JsonValue::Type::Object); - TRY_RESULT(user_id, get_json_object_int_field(user.get_object(), "id", false)); + TRY_RESULT(user_id, get_json_object_long_field(user.get_object(), "id", false)); return make_object(user_id); } if (type == "mention" || type == "hashtag" || type == "cashtag" || type == "bot_command" || type == "url" || @@ -6186,8 +6185,8 @@ td::Result Client::get_inline_message_id(const Query *query, Slice fi return s_arg; } -td::Result Client::get_user_id(const Query *query, Slice field_name) { - int32 user_id = get_integer_arg(query, field_name, 0, 0); +td::Result Client::get_user_id(const Query *query, Slice field_name) { + int64 user_id = td::max(td::to_integer(query->arg(field_name)), static_cast(0)); if (user_id == 0) { return Status::Error(400, PSLICE() << "Invalid " << field_name << " specified"); } @@ -6236,9 +6235,9 @@ void Client::on_message_send_succeeded(object_ptr &&message, in auto &query = pending_send_message_queries_[query_id]; if (query.is_multisend) { query.messages.push_back(td::json_encode(JsonMessage(message_info, true, "sent message", this))); - query.awaited_messages--; + query.awaited_message_count--; - if (query.awaited_messages == 0) { + if (query.awaited_message_count == 0) { if (query.error == nullptr) { answer_query(JsonMessages(query.messages), std::move(query.query)); } else { @@ -6247,7 +6246,7 @@ void Client::on_message_send_succeeded(object_ptr &&message, in pending_send_message_queries_.erase(query_id); } } else { - CHECK(query.awaited_messages == 1); + CHECK(query.awaited_message_count == 1); if (query.query->method() == "copymessage") { answer_query(JsonMessageId(new_message_id), std::move(query.query)); } else { @@ -6266,14 +6265,14 @@ void Client::on_message_send_failed(int64 chat_id, int64 old_message_id, int64 n if (query.error == nullptr) { query.error = std::move(error); } - query.awaited_messages--; + query.awaited_message_count--; - if (query.awaited_messages == 0) { + if (query.awaited_message_count == 0) { fail_query_with_error(std::move(query.query), std::move(query.error)); pending_send_message_queries_.erase(query_id); } } else { - CHECK(query.awaited_messages == 1); + CHECK(query.awaited_message_count == 1); fail_query_with_error(std::move(query.query), std::move(error)); pending_send_message_queries_.erase(query_id); } @@ -8030,7 +8029,7 @@ void Client::on_sent_message(object_ptr &&message, int64 query_ yet_unsent_message.send_message_query_id = query_id; auto emplace_result = yet_unsent_messages_.emplace(yet_unsent_message_id, yet_unsent_message); CHECK(emplace_result.second); - pending_send_message_queries_[query_id].awaited_messages++; + pending_send_message_queries_[query_id].awaited_message_count++; } void Client::abort_long_poll(bool from_set_webhook) { @@ -8195,7 +8194,7 @@ void Client::long_poll_wakeup(bool force_flag) { } } -void Client::add_user(std::unordered_map &users, object_ptr &&user) { +void Client::add_user(std::unordered_map &users, object_ptr &&user) { auto user_info = &users[user->id_]; user_info->first_name = std::move(user->first_name_); user_info->last_name = std::move(user->last_name_); @@ -8228,17 +8227,17 @@ void Client::add_user(std::unordered_map &users, object_ptrsecond; } -void Client::set_user_bio(int32 user_id, td::string &&bio) { +void Client::set_user_bio(int64 user_id, td::string &&bio) { auto user_info = &users_[user_id]; user_info->bio = std::move(bio); } -void Client::add_group(std::unordered_map &groups, object_ptr &&group) { +void Client::add_group(std::unordered_map &groups, object_ptr &&group) { auto group_info = &groups[group->id_]; group_info->member_count = group->member_count_; group_info->left = group->status_->get_id() == td_api::chatMemberStatusLeft::ID; @@ -8250,22 +8249,22 @@ void Client::add_group(std::unordered_map &groups, object_ptr< } } -const Client::GroupInfo *Client::get_group_info(int32 group_id) const { +const Client::GroupInfo *Client::get_group_info(int64 group_id) const { auto it = groups_.find(group_id); return it == groups_.end() ? nullptr : &it->second; } -void Client::set_group_description(int32 group_id, td::string &&descripton) { +void Client::set_group_description(int64 group_id, td::string &&descripton) { auto group_info = &groups_[group_id]; group_info->description = std::move(descripton); } -void Client::set_group_invite_link(int32 group_id, td::string &&invite_link) { +void Client::set_group_invite_link(int64 group_id, td::string &&invite_link) { auto group_info = &groups_[group_id]; group_info->invite_link = std::move(invite_link); } -void Client::add_supergroup(std::unordered_map &supergroups, +void Client::add_supergroup(std::unordered_map &supergroups, object_ptr &&supergroup) { auto supergroup_info = &supergroups[supergroup->id_]; supergroup_info->username = std::move(supergroup->username_); @@ -8275,42 +8274,42 @@ void Client::add_supergroup(std::unordered_map &supergrou supergroup_info->has_location = supergroup->has_location_; } -void Client::set_supergroup_description(int32 supergroup_id, td::string &&descripton) { +void Client::set_supergroup_description(int64 supergroup_id, td::string &&descripton) { auto supergroup_info = &supergroups_[supergroup_id]; supergroup_info->description = std::move(descripton); } -void Client::set_supergroup_invite_link(int32 supergroup_id, td::string &&invite_link) { +void Client::set_supergroup_invite_link(int64 supergroup_id, td::string &&invite_link) { auto supergroup_info = &supergroups_[supergroup_id]; supergroup_info->invite_link = std::move(invite_link); } -void Client::set_supergroup_sticker_set_id(int32 supergroup_id, int64 sticker_set_id) { +void Client::set_supergroup_sticker_set_id(int64 supergroup_id, int64 sticker_set_id) { auto supergroup_info = &supergroups_[supergroup_id]; supergroup_info->sticker_set_id = sticker_set_id; } -void Client::set_supergroup_can_set_sticker_set(int32 supergroup_id, bool can_set_sticker_set) { +void Client::set_supergroup_can_set_sticker_set(int64 supergroup_id, bool can_set_sticker_set) { auto supergroup_info = &supergroups_[supergroup_id]; supergroup_info->can_set_sticker_set = can_set_sticker_set; } -void Client::set_supergroup_slow_mode_delay(int32 supergroup_id, int32 slow_mode_delay) { +void Client::set_supergroup_slow_mode_delay(int64 supergroup_id, int32 slow_mode_delay) { auto supergroup_info = &supergroups_[supergroup_id]; supergroup_info->slow_mode_delay = slow_mode_delay; } -void Client::set_supergroup_linked_chat_id(int32 supergroup_id, int64 linked_chat_id) { +void Client::set_supergroup_linked_chat_id(int64 supergroup_id, int64 linked_chat_id) { auto supergroup_info = &supergroups_[supergroup_id]; supergroup_info->linked_chat_id = linked_chat_id; } -void Client::set_supergroup_location(int32 supergroup_id, object_ptr location) { +void Client::set_supergroup_location(int64 supergroup_id, object_ptr location) { auto supergroup_info = &supergroups_[supergroup_id]; supergroup_info->location = std::move(location); } -const Client::SupergroupInfo *Client::get_supergroup_info(int32 supergroup_id) const { +const Client::SupergroupInfo *Client::get_supergroup_info(int64 supergroup_id) const { auto it = supergroups_.find(supergroup_id); return it == supergroups_.end() ? nullptr : &it->second; } @@ -8643,7 +8642,7 @@ void Client::add_update_poll_answer(object_ptr &&updat add_update(UpdateType::PollAnswer, JsonPollAnswer(update.get(), this), 86400, update->poll_id_); } -void Client::add_new_inline_query(int64 inline_query_id, int32 sender_user_id, object_ptr location, +void Client::add_new_inline_query(int64 inline_query_id, int64 sender_user_id, object_ptr location, object_ptr chat_type, const td::string &query, const td::string &offset) { add_update(UpdateType::InlineQuery, @@ -8651,7 +8650,7 @@ void Client::add_new_inline_query(int64 inline_query_id, int32 sender_user_id, o sender_user_id + (static_cast(1) << 33)); } -void Client::add_new_chosen_inline_result(int32 sender_user_id, object_ptr location, +void Client::add_new_chosen_inline_result(int64 sender_user_id, object_ptr location, const td::string &query, const td::string &result_id, const td::string &inline_message_id) { add_update(UpdateType::ChosenInlineResult, @@ -8670,7 +8669,7 @@ void Client::add_new_callback_query(object_ptr & process_new_callback_query_queue(user_id, 0); } -void Client::process_new_callback_query_queue(int32 user_id, int state) { +void Client::process_new_callback_query_queue(int64 user_id, int state) { auto &queue = new_callback_query_queues_[user_id]; if (queue.has_active_request_) { CHECK(state == 0); @@ -8786,7 +8785,7 @@ void Client::add_update_chat_member(object_ptr &&updat } } -td::int32 Client::choose_added_member_id(const td_api::messageChatAddMembers *message_add_members) const { +td::int64 Client::choose_added_member_id(const td_api::messageChatAddMembers *message_add_members) const { CHECK(message_add_members != nullptr); for (auto &member_user_id : message_add_members->member_user_ids_) { if (member_user_id == my_id_) { @@ -9561,12 +9560,12 @@ td::int32 Client::as_client_message_id(int64 message_id) { return result; } -td::int64 Client::get_supergroup_chat_id(int32 supergroup_id) { - return static_cast(-1000000000000ll) - static_cast(supergroup_id); +td::int64 Client::get_supergroup_chat_id(int64 supergroup_id) { + return static_cast(-1000000000000ll) - supergroup_id; } -td::int64 Client::get_basic_group_chat_id(int32 basic_group_id) { - return -static_cast(basic_group_id); +td::int64 Client::get_basic_group_chat_id(int64 basic_group_id) { + return -basic_group_id; } constexpr Client::int64 Client::GREAT_MINDS_SET_ID; diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index 02b1f4b..58b3624 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -191,9 +191,9 @@ class Client : public WebhookActor::Callback { void on_get_edited_message(object_ptr edited_message); - void on_get_callback_query_message(object_ptr message, int32 user_id, int state); + void on_get_callback_query_message(object_ptr message, int64 user_id, int state); - void on_get_sticker_set(int64 set_id, int32 new_callback_query_user_id, int64 new_message_chat_id, + void on_get_sticker_set(int64 set_id, int64 new_callback_query_user_id, int64 new_message_chat_id, object_ptr sticker_set); void on_get_sticker_set_name(int64 set_id, const td::string &name); @@ -234,10 +234,10 @@ class Client : public WebhookActor::Callback { class TdOnResolveBotUsernameCallback; template - void check_user(int32 user_id, PromisedQueryPtr query, OnSuccess on_success); + void check_user(int64 user_id, PromisedQueryPtr query, OnSuccess on_success); template - void check_user_no_fail(int32 user_id, PromisedQueryPtr query, OnSuccess on_success); + void check_user_no_fail(int64 user_id, PromisedQueryPtr query, OnSuccess on_success); template static void check_user_read_access(const UserInfo *user_info, PromisedQueryPtr query, OnSuccess on_success); @@ -271,7 +271,7 @@ class Client : public WebhookActor::Callback { PromisedQueryPtr query, OnSuccess on_success); template - void get_chat_member(int64 chat_id, int32 user_id, PromisedQueryPtr query, OnSuccess on_success); + void get_chat_member(int64 chat_id, int64 user_id, PromisedQueryPtr query, OnSuccess on_success); void send_request(object_ptr &&f, std::unique_ptr handler); void do_send_request(object_ptr &&f, std::unique_ptr handler); @@ -337,10 +337,10 @@ class Client : public WebhookActor::Callback { struct BotCommandScope { object_ptr scope_; td::string chat_id_; - td::int32 user_id_ = 0; + td::int64 user_id_ = 0; explicit BotCommandScope(object_ptr scope, td::string chat_id = td::string(), - td::int32 user_id = 0) + td::int64 user_id = 0) : scope_(std::move(scope)), chat_id_(std::move(chat_id)), user_id_(user_id) { } }; @@ -421,7 +421,7 @@ class Client : public WebhookActor::Callback { static td::Result get_inline_message_id(const Query *query, Slice field_name = Slice("inline_message_id")); - static td::Result get_user_id(const Query *query, Slice field_name = Slice("user_id")); + static td::Result get_user_id(const Query *query, Slice field_name = Slice("user_id")); int64 extract_yet_unsent_message_query_id(int64 chat_id, int64 message_id, bool *is_reply_to_message_deleted); @@ -535,7 +535,7 @@ class Client : public WebhookActor::Callback { void fix_inline_query_results_bot_user_ids(td::vector> &results) const; void resolve_bot_usernames(PromisedQueryPtr query, td::Promise on_success); - void on_resolve_bot_username(const td::string &username, int32 user_id); + void on_resolve_bot_username(const td::string &username, int64 user_id); void abort_long_poll(bool from_set_webhook); @@ -576,9 +576,9 @@ class Client : public WebhookActor::Callback { bool can_read_all_group_messages = false; bool is_inline_bot = false; }; - static void add_user(std::unordered_map &users, object_ptr &&user); - void set_user_bio(int32 user_id, td::string &&bio); - const UserInfo *get_user_info(int32 user_id) const; + static void add_user(std::unordered_map &users, object_ptr &&user); + void set_user_bio(int64 user_id, td::string &&bio); + const UserInfo *get_user_info(int64 user_id) const; struct GroupInfo { td::string description; @@ -587,12 +587,12 @@ class Client : public WebhookActor::Callback { bool left = false; bool kicked = false; bool is_active = false; - int32 upgraded_to_supergroup_id = 0; + int64 upgraded_to_supergroup_id = 0; }; - static void add_group(std::unordered_map &groups, object_ptr &&group); - void set_group_description(int32 group_id, td::string &&descripton); - void set_group_invite_link(int32 group_id, td::string &&invite_link); - const GroupInfo *get_group_info(int32 group_id) const; + static void add_group(std::unordered_map &groups, object_ptr &&group); + void set_group_description(int64 group_id, td::string &&descripton); + void set_group_invite_link(int64 group_id, td::string &&invite_link); + const GroupInfo *get_group_info(int64 group_id) const; struct SupergroupInfo { td::string username; @@ -608,16 +608,16 @@ class Client : public WebhookActor::Callback { bool can_set_sticker_set = false; bool has_location = false; }; - static void add_supergroup(std::unordered_map &supergroups, + static void add_supergroup(std::unordered_map &supergroups, object_ptr &&supergroup); - void set_supergroup_description(int32 supergroup_id, td::string &&descripton); - void set_supergroup_invite_link(int32 supergroup_id, td::string &&invite_link); - void set_supergroup_sticker_set_id(int32 supergroup_id, int64 sticker_set_id); - void set_supergroup_can_set_sticker_set(int32 supergroup_id, bool can_set_sticker_set); - void set_supergroup_slow_mode_delay(int32 supergroup_id, int32 slow_mode_delay); - void set_supergroup_linked_chat_id(int32 supergroup_id, int64 linked_chat_id); - void set_supergroup_location(int32 supergroup_id, object_ptr location); - const SupergroupInfo *get_supergroup_info(int32 supergroup_id) const; + void set_supergroup_description(int64 supergroup_id, td::string &&descripton); + void set_supergroup_invite_link(int64 supergroup_id, td::string &&invite_link); + void set_supergroup_sticker_set_id(int64 supergroup_id, int64 sticker_set_id); + void set_supergroup_can_set_sticker_set(int64 supergroup_id, bool can_set_sticker_set); + void set_supergroup_slow_mode_delay(int64 supergroup_id, int32 slow_mode_delay); + void set_supergroup_linked_chat_id(int64 supergroup_id, int64 linked_chat_id); + void set_supergroup_location(int64 supergroup_id, object_ptr location); + const SupergroupInfo *get_supergroup_info(int64 supergroup_id) const; struct ChatInfo { enum class Type { Private, Group, Supergroup, Unknown }; @@ -627,9 +627,9 @@ class Client : public WebhookActor::Callback { object_ptr photo; object_ptr permissions; union { - int32 user_id; - int32 group_id; - int32 supergroup_id; + int64 user_id; + int64 group_id; + int64 supergroup_id; }; }; ChatInfo *add_chat(int64 chat_id); @@ -647,13 +647,13 @@ class Client : public WebhookActor::Callback { mutable const MessageInfo *lru_prev = nullptr; int64 id = 0; - int32 sender_user_id = 0; + int64 sender_user_id = 0; int64 sender_chat_id = 0; int64 chat_id = 0; int32 date = 0; int32 edit_date = 0; int64 initial_chat_id = 0; - int32 initial_sender_user_id = 0; + int64 initial_sender_user_id = 0; int64 initial_sender_chat_id = 0; int32 initial_send_date = 0; int64 initial_message_id = 0; @@ -662,7 +662,7 @@ class Client : public WebhookActor::Callback { td::string author_signature; int64 reply_to_message_id = 0; int64 media_album_id = 0; - int32 via_bot_user_id = 0; + int64 via_bot_user_id = 0; object_ptr content; object_ptr reply_markup; @@ -690,7 +690,7 @@ class Client : public WebhookActor::Callback { Slice get_sticker_set_name(int64 sticker_set_id) const; - int32 choose_added_member_id(const td_api::messageChatAddMembers *message_add_members) const; + int64 choose_added_member_id(const td_api::messageChatAddMembers *message_add_members) const; bool need_skip_update_message(int64 chat_id, const object_ptr &message, bool is_edited) const; @@ -748,23 +748,23 @@ class Client : public WebhookActor::Callback { static int32 as_client_message_id(int64 message_id); - static int64 get_supergroup_chat_id(int32 supergroup_id); + static int64 get_supergroup_chat_id(int64 supergroup_id); - static int64 get_basic_group_chat_id(int32 basic_group_id); + static int64 get_basic_group_chat_id(int64 basic_group_id); void add_update_poll(object_ptr &&update); void add_update_poll_answer(object_ptr &&update); - void add_new_inline_query(int64 inline_query_id, int32 sender_user_id, object_ptr location, + void add_new_inline_query(int64 inline_query_id, int64 sender_user_id, object_ptr location, object_ptr chat_type, const td::string &query, const td::string &offset); - void add_new_chosen_inline_result(int32 sender_user_id, object_ptr location, + void add_new_chosen_inline_result(int64 sender_user_id, object_ptr location, const td::string &query, const td::string &result_id, const td::string &inline_message_id); void add_new_callback_query(object_ptr &&query); - void process_new_callback_query_queue(int32 user_id, int state); + void process_new_callback_query_queue(int64 user_id, int state); void add_new_inline_callback_query(object_ptr &&query); @@ -842,19 +842,19 @@ class Client : public WebhookActor::Callback { int64 tqueue_id_; double start_time_ = 0; - int32 my_id_ = -1; + int64 my_id_ = -1; int32 authorization_date_ = -1; - int32 group_anonymous_bot_user_id_ = 0; - int32 service_notifications_user_id_ = 0; + int64 group_anonymous_bot_user_id_ = 0; + int64 service_notifications_user_id_ = 0; static std::unordered_map methods_; MessageInfo messages_lru_root_; std::unordered_map, FullMessageIdHash> messages_; // message cache - std::unordered_map users_; // user info cache - std::unordered_map groups_; // group info cache - std::unordered_map supergroups_; // supergroup info cache + std::unordered_map users_; // user info cache + std::unordered_map groups_; // group info cache + std::unordered_map supergroups_; // supergroup info cache std::unordered_map chats_; // chat info cache std::unordered_map, FullMessageIdHash> @@ -877,7 +877,7 @@ class Client : public WebhookActor::Callback { struct PendingSendMessageQuery { PromisedQueryPtr query; bool is_multisend = false; - int32 awaited_messages = 0; + int32 awaited_message_count = 0; td::vector messages; object_ptr error; }; @@ -903,14 +903,14 @@ class Client : public WebhookActor::Callback { std::queue> queue_; bool has_active_request_ = false; }; - std::unordered_map new_callback_query_queues_; // sender_user_id -> queue + std::unordered_map new_callback_query_queues_; // sender_user_id -> queue std::unordered_map sticker_set_names_; - int32 cur_temp_bot_user_id_ = 1; - std::unordered_map bot_user_ids_; + int64 cur_temp_bot_user_id_ = 1; + std::unordered_map bot_user_ids_; std::unordered_set unresolved_bot_usernames_; - std::unordered_map temp_to_real_bot_user_id_; + std::unordered_map temp_to_real_bot_user_id_; std::unordered_map> awaiting_bot_resolve_queries_; struct PendingBotResolveQuery { From 36b0c4426a0e88aa88300b56c08f35442c15dded Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 20 Sep 2021 23:56:53 +0300 Subject: [PATCH 15/15] Update version to 5.3.3. --- CMakeLists.txt | 2 +- telegram-bot-api/telegram-bot-api.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a33b9a..e875fcf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ if (POLICY CMP0065) cmake_policy(SET CMP0065 NEW) endif() -project(TelegramBotApi VERSION 5.3.2 LANGUAGES CXX) +project(TelegramBotApi VERSION 5.3.3 LANGUAGES CXX) if (POLICY CMP0069) option(TELEGRAM_BOT_API_ENABLE_LTO "Use \"ON\" to enable Link Time Optimization.") diff --git a/telegram-bot-api/telegram-bot-api.cpp b/telegram-bot-api/telegram-bot-api.cpp index ea2594d..f6da025 100644 --- a/telegram-bot-api/telegram-bot-api.cpp +++ b/telegram-bot-api/telegram-bot-api.cpp @@ -198,7 +198,7 @@ int main(int argc, char *argv[]) { auto start_time = td::Time::now(); auto shared_data = std::make_shared(); auto parameters = std::make_unique(); - parameters->version_ = "5.3.2"; + parameters->version_ = "5.3.3"; parameters->shared_data_ = shared_data; parameters->start_time_ = start_time; auto net_query_stats = td::create_net_query_stats();