From 9d165f13e790ca03fc0352b3cfcf493e6fdd78c6 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Mon, 13 Jan 2025 15:35:13 +0000 Subject: Allow skipping user modes in keepmodes. --- modules/nickserv/ns_set_keepmodes.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'modules') diff --git a/modules/nickserv/ns_set_keepmodes.cpp b/modules/nickserv/ns_set_keepmodes.cpp index f282d403a..34ba3f7e9 100644 --- a/modules/nickserv/ns_set_keepmodes.cpp +++ b/modules/nickserv/ns_set_keepmodes.cpp @@ -191,13 +191,13 @@ public: { if (keep_modes.HasExt(u->Account())) { + const auto norestore = Config->GetModule(this)->Get("norestore"); User::ModeList modes = u->Account()->last_modes; for (const auto &[last_mode, last_value] : modes) { - UserMode *um = ModeManager::FindUserModeByName(last_mode); - /* if the null user can set the mode, then it's probably safe */ - if (um && um->CanSet(NULL)) - u->SetMode(NULL, last_mode, last_value); + auto *um = ModeManager::FindUserModeByName(last_mode); + if (um && um->CanSet(nullptr) && norestore.find(um->mchar) == Anope::string::npos) + u->SetMode(nullptr, last_mode, last_value); } } } -- cgit