Make option "anti_spam_bot_user_id" public and allow to load the user without network request.

This commit is contained in:
levlam 2022-11-30 13:36:44 +03:00
parent 1ba66081a5
commit bc332ffa37
5 changed files with 30 additions and 8 deletions

View File

@ -1853,7 +1853,7 @@ void ConfigManager::process_app_config(tl_object_ptr<telegram_api::JSONValue> &c
} }
if (key == "telegram_antispam_user_id") { if (key == "telegram_antispam_user_id") {
auto setting_value = get_json_value_long(std::move(key_value->value_), key); auto setting_value = get_json_value_long(std::move(key_value->value_), key);
G()->set_option_integer("telegram_antispam_user_id", setting_value); G()->set_option_integer("anti_spam_bot_user_id", setting_value);
continue; continue;
} }
if (key == "telegram_antispam_group_size_min") { if (key == "telegram_antispam_group_size_min") {

View File

@ -3712,6 +3712,9 @@ ContactsManager::ContactsManager(Td *td, ActorShared<> parent) : td_(td), parent
td_->option_manager_->set_option_integer("replies_bot_chat_id", DialogId(get_replies_bot_user_id()).get()); td_->option_manager_->set_option_integer("replies_bot_chat_id", DialogId(get_replies_bot_user_id()).get());
td_->option_manager_->set_option_integer("group_anonymous_bot_user_id", get_anonymous_bot_user_id().get()); td_->option_manager_->set_option_integer("group_anonymous_bot_user_id", get_anonymous_bot_user_id().get());
td_->option_manager_->set_option_integer("channel_bot_user_id", get_channel_bot_user_id().get()); td_->option_manager_->set_option_integer("channel_bot_user_id", get_channel_bot_user_id().get());
if (!td_->option_manager_->have_option("anti_spam_bot_user_id")) {
td_->option_manager_->set_option_integer("anti_spam_bot_user_id", get_anti_spam_bot_user_id().get());
}
if (G()->parameters().use_chat_info_db) { if (G()->parameters().use_chat_info_db) {
auto next_contacts_sync_date_string = G()->td_db()->get_binlog_pmc()->get("next_contacts_sync_date"); auto next_contacts_sync_date_string = G()->td_db()->get_binlog_pmc()->get("next_contacts_sync_date");
@ -3731,6 +3734,8 @@ ContactsManager::ContactsManager(Td *td, ActorShared<> parent) : td_(td), parent
G()->td_db()->get_sqlite_pmc()->erase_by_prefix("us_bot_info", Auto()); G()->td_db()->get_sqlite_pmc()->erase_by_prefix("us_bot_info", Auto());
} }
on_update_fragment_prefixes();
was_online_local_ = to_integer<int32>(G()->td_db()->get_binlog_pmc()->get("my_was_online_local")); was_online_local_ = to_integer<int32>(G()->td_db()->get_binlog_pmc()->get("my_was_online_local"));
was_online_remote_ = to_integer<int32>(G()->td_db()->get_binlog_pmc()->get("my_was_online_remote")); was_online_remote_ = to_integer<int32>(G()->td_db()->get_binlog_pmc()->get("my_was_online_remote"));
if (was_online_local_ >= G()->unix_time_cached() && !td_->is_online()) { if (was_online_local_ >= G()->unix_time_cached() && !td_->is_online()) {
@ -3791,8 +3796,6 @@ void ContactsManager::start_up() {
if (!pending_location_visibility_expire_date_) { if (!pending_location_visibility_expire_date_) {
try_send_set_location_visibility_query(); try_send_set_location_visibility_query();
} }
on_update_fragment_prefixes();
} }
void ContactsManager::tear_down() { void ContactsManager::tear_down() {
@ -5664,6 +5667,10 @@ UserId ContactsManager::get_channel_bot_user_id() {
return UserId(static_cast<int64>(G()->is_test_dc() ? 936174 : 136817688)); return UserId(static_cast<int64>(G()->is_test_dc() ? 936174 : 136817688));
} }
UserId ContactsManager::get_anti_spam_bot_user_id() {
return UserId(static_cast<int64>(G()->is_test_dc() ? 2200583762ll : 5434988373ll));
}
UserId ContactsManager::add_anonymous_bot_user() { UserId ContactsManager::add_anonymous_bot_user() {
auto user_id = get_anonymous_bot_user_id(); auto user_id = get_anonymous_bot_user_id();
if (!have_user_force(user_id)) { if (!have_user_force(user_id)) {
@ -9774,7 +9781,8 @@ ContactsManager::User *ContactsManager::get_user_force(UserId user_id) {
auto u = get_user_force_impl(user_id); auto u = get_user_force_impl(user_id);
if ((u == nullptr || !u->is_received) && if ((u == nullptr || !u->is_received) &&
(user_id == get_service_notifications_user_id() || user_id == get_replies_bot_user_id() || (user_id == get_service_notifications_user_id() || user_id == get_replies_bot_user_id() ||
user_id == get_anonymous_bot_user_id() || user_id == get_channel_bot_user_id())) { user_id == get_anonymous_bot_user_id() || user_id == get_channel_bot_user_id() ||
user_id == get_anti_spam_bot_user_id())) {
int32 flags = USER_FLAG_HAS_ACCESS_HASH | USER_FLAG_HAS_FIRST_NAME | USER_FLAG_NEED_APPLY_MIN_PHOTO; int32 flags = USER_FLAG_HAS_ACCESS_HASH | USER_FLAG_HAS_FIRST_NAME | USER_FLAG_NEED_APPLY_MIN_PHOTO;
int64 profile_photo_id = 0; int64 profile_photo_id = 0;
int32 profile_photo_dc_id = 1; int32 profile_photo_dc_id = 1;
@ -9819,6 +9827,17 @@ ContactsManager::User *ContactsManager::get_user_force(UserId user_id) {
username = G()->is_test_dc() ? "channelsbot" : "Channel_Bot"; username = G()->is_test_dc() ? "channelsbot" : "Channel_Bot";
bot_info_version = G()->is_test_dc() ? 1 : 4; bot_info_version = G()->is_test_dc() ? 1 : 4;
profile_photo_id = 587627495930570665; profile_photo_id = 587627495930570665;
} else if (user_id == get_service_notifications_user_id()) {
flags |= USER_FLAG_HAS_USERNAME | USER_FLAG_IS_BOT;
if (G()->is_test_dc()) {
first_name = "antispambot";
username = "tantispambot";
} else {
flags |= USER_FLAG_IS_VERIFIED;
first_name = "Telegram Anti-Spam";
username = "tgsantispambot";
profile_photo_id = 5170408289966598902;
}
} }
telegram_api::object_ptr<telegram_api::userProfilePhoto> profile_photo; telegram_api::object_ptr<telegram_api::userProfilePhoto> profile_photo;
@ -9837,6 +9856,8 @@ ContactsManager::User *ContactsManager::get_user_force(UserId user_id) {
on_get_user(std::move(user), "get_user_force"); on_get_user(std::move(user), "get_user_force");
u = get_user(user_id); u = get_user(user_id);
CHECK(u != nullptr && u->is_received); CHECK(u != nullptr && u->is_received);
reload_user(user_id, Promise<Unit>());
} }
return u; return u;
} }
@ -15409,7 +15430,8 @@ bool ContactsManager::get_user(UserId user_id, int left_tries, Promise<Unit> &&p
} }
if (user_id == get_service_notifications_user_id() || user_id == get_replies_bot_user_id() || if (user_id == get_service_notifications_user_id() || user_id == get_replies_bot_user_id() ||
user_id == get_anonymous_bot_user_id() || user_id == get_channel_bot_user_id()) { user_id == get_anonymous_bot_user_id() || user_id == get_channel_bot_user_id() ||
user_id == get_anti_spam_bot_user_id()) {
get_user_force(user_id); get_user_force(user_id);
} }

View File

@ -286,6 +286,8 @@ class ContactsManager final : public Actor {
static UserId get_channel_bot_user_id(); static UserId get_channel_bot_user_id();
static UserId get_anti_spam_bot_user_id();
UserId add_anonymous_bot_user(); UserId add_anonymous_bot_user();
UserId add_channel_bot_user(); UserId add_channel_bot_user();

View File

@ -460,7 +460,7 @@ class GetChannelAdminLogQuery final : public Td::ResultHandler {
td_->contacts_manager_->on_get_users(std::move(events->users_), "on_get_event_log"); td_->contacts_manager_->on_get_users(std::move(events->users_), "on_get_event_log");
td_->contacts_manager_->on_get_chats(std::move(events->chats_), "on_get_event_log"); td_->contacts_manager_->on_get_chats(std::move(events->chats_), "on_get_event_log");
auto anti_spam_user_id = UserId(G()->get_option_integer("telegram_antispam_user_id")); auto anti_spam_user_id = UserId(G()->get_option_integer("anti_spam_bot_user_id"));
auto result = td_api::make_object<td_api::chatEvents>(); auto result = td_api::make_object<td_api::chatEvents>();
result->events_.reserve(events->events_.size()); result->events_.reserve(events->events_.size());
for (auto &event : events->events_) { for (auto &event : events->events_) {

View File

@ -287,8 +287,6 @@ bool OptionManager::is_internal_option(Slice name) {
name == "saved_gifs_limit_premium" || name == "session_count" || name == "stickers_faved_limit_default" || name == "saved_gifs_limit_premium" || name == "session_count" || name == "stickers_faved_limit_default" ||
name == "stickers_faved_limit_premium" || name == "stickers_normal_by_emoji_per_premium_num" || name == "stickers_faved_limit_premium" || name == "stickers_normal_by_emoji_per_premium_num" ||
name == "stickers_premium_by_emoji_num"; name == "stickers_premium_by_emoji_num";
case 't':
return name == "telegram_antispam_user_id";
case 'v': case 'v':
return name == "video_note_size_max"; return name == "video_note_size_max";
case 'w': case 'w':