From 6513a9137c3a7bf8e16e349c757578948cecf114 Mon Sep 17 00:00:00 2001 From: levlam Date: Sat, 26 Oct 2024 01:22:02 +0300 Subject: [PATCH] Don't fetch user before sending paid message to them. --- telegram-bot-api/Client.cpp | 17 +++++++++++------ telegram-bot-api/Client.h | 5 +++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/telegram-bot-api/Client.cpp b/telegram-bot-api/Client.cpp index 06e6c53..1a71808 100644 --- a/telegram-bot-api/Client.cpp +++ b/telegram-bot-api/Client.cpp @@ -6400,8 +6400,8 @@ void Client::check_chat_access(int64 chat_id, AccessRights access_rights, const } template -void Client::check_chat(td::Slice chat_id_str, AccessRights access_rights, PromisedQueryPtr query, - OnSuccess on_success) { +void Client::check_chat(td::Slice chat_id_str, AccessRights access_rights, PromisedQueryPtr query, OnSuccess on_success, + bool allow_unknown_user) { if (chat_id_str.empty()) { return fail_query(400, "Bad Request: chat_id is empty", std::move(query)); } @@ -6413,6 +6413,9 @@ void Client::check_chat(td::Slice chat_id_str, AccessRights access_rights, Promi } auto chat_id = td::to_integer(chat_id_str); + if (allow_unknown_user && 0 < chat_id && chat_id < (static_cast(1) << 40)) { + return on_success(chat_id, std::move(query)); + } auto chat_info = get_chat(chat_id); if (chat_info != nullptr && chat_info->type == ChatInfo::Type::Private) { const UserInfo *user_info = get_user_info(chat_info->user_id); @@ -6608,7 +6611,8 @@ void Client::check_messages(td::Slice chat_id_str, td::vector message_ids template void Client::check_reply_parameters(td::Slice chat_id_str, InputReplyParameters &&reply_parameters, - int64 message_thread_id, PromisedQueryPtr query, OnSuccess on_success) { + int64 message_thread_id, PromisedQueryPtr query, OnSuccess on_success, + bool allow_unknown_user) { if (chat_id_str == reply_parameters.reply_in_chat_id) { reply_parameters.reply_in_chat_id.clear(); } @@ -6671,7 +6675,8 @@ void Client::check_reply_parameters(td::Slice chat_id_str, InputReplyParameters } check_chat(reply_parameters.reply_in_chat_id, AccessRights::Read, std::move(query), std::move(on_reply_chat_resolved)); - }); + }, + allow_unknown_user); } template @@ -10798,7 +10803,7 @@ td::Status Client::process_send_media_group_query(PromisedQueryPtr &query) { td::make_unique(this, chat_id, message_count, std::move(query))); }; check_reply_parameters(chat_id_str, std::move(reply_parameters), message_thread_id, std::move(query), - std::move(on_success)); + std::move(on_success), allow_paid_broadcast); }); return td::Status::OK(); } @@ -12792,7 +12797,7 @@ void Client::do_send_message(object_ptr input_messa td::make_unique(this, chat_id, std::move(query))); }; check_reply_parameters(chat_id_str, std::move(reply_parameters), message_thread_id, std::move(query), - std::move(on_success)); + std::move(on_success), allow_paid_broadcast); }); } diff --git a/telegram-bot-api/Client.h b/telegram-bot-api/Client.h index 82b4c56..d1ccc4b 100644 --- a/telegram-bot-api/Client.h +++ b/telegram-bot-api/Client.h @@ -346,7 +346,8 @@ class Client final : public WebhookActor::Callback { OnSuccess on_success) const; template - void check_chat(td::Slice chat_id_str, AccessRights access_rights, PromisedQueryPtr query, OnSuccess on_success); + void check_chat(td::Slice chat_id_str, AccessRights access_rights, PromisedQueryPtr query, OnSuccess on_success, + bool allow_unknown_user = false); template void check_chat_no_fail(td::Slice chat_id_str, PromisedQueryPtr query, OnSuccess on_success); @@ -377,7 +378,7 @@ class Client final : public WebhookActor::Callback { template void check_reply_parameters(td::Slice chat_id_str, InputReplyParameters &&reply_parameters, int64 message_thread_id, - PromisedQueryPtr query, OnSuccess on_success); + PromisedQueryPtr query, OnSuccess on_success, bool allow_unknown_user = false); template void resolve_sticker_set(const td::string &sticker_set_name, PromisedQueryPtr query, OnSuccess on_success);