diff options
author | Sadie Powell <sadie@witchery.services> | 2025-01-13 15:35:13 +0000 |
---|---|---|
committer | Sadie Powell <sadie@witchery.services> | 2025-01-13 15:35:13 +0000 |
commit | 9d165f13e790ca03fc0352b3cfcf493e6fdd78c6 (patch) | |
tree | 1eccf5e976363eed5b21039ad177c10b319c7afd /modules/nickserv/ns_set_keepmodes.cpp | |
parent | 3582bc0f584fa9afb20988e7938085557fdebb75 (diff) |
Allow skipping user modes in keepmodes.
Diffstat (limited to 'modules/nickserv/ns_set_keepmodes.cpp')
-rw-r--r-- | modules/nickserv/ns_set_keepmodes.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
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<const Anope::string>("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); } } } |