summaryrefslogtreecommitdiff
path: root/src/modules/m_timedbans.cpp
diff options
context:
space:
mode:
authorgenius3000 <genius3000@g3k.solutions>2016-11-21 22:00:27 -0700
committergenius3000 <genius3000@g3k.solutions>2017-11-06 22:27:14 -0700
commit3eefb336c670d5b2f39696913717e0c47b75232c (patch)
tree00875e5c1cad94df8bd4de5f596250eb08f7bdd0 /src/modules/m_timedbans.cpp
parent9375c633371ee8d25adc5cf756590077e5100bb5 (diff)
Improve (synchronize) the notices in m_timedbans
* Send to remote servers upon setting * Send to halfop if available upon expiry
Diffstat (limited to 'src/modules/m_timedbans.cpp')
-rw-r--r--src/modules/m_timedbans.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/modules/m_timedbans.cpp b/src/modules/m_timedbans.cpp
index 61095d6eb..bbbc518bd 100644
--- a/src/modules/m_timedbans.cpp
+++ b/src/modules/m_timedbans.cpp
@@ -117,11 +117,13 @@ class CommandTban : public Command
T.chan = channel;
TimedBanList.push_back(T);
+ const std::string addban = user->nick + " added a timed ban on " + mask + " lasting for " + ConvToStr(duration) + " seconds.";
// If halfop is loaded, send notice to halfops and above, otherwise send to ops and above
ModeHandler* mh = ServerInstance->Modes->FindMode('h', MODETYPE_CHANNEL);
char pfxchar = (mh && mh->name == "halfop") ? mh->GetPrefix() : '@';
- channel->WriteAllExcept(ServerInstance->FakeClient, true, pfxchar, tmp, "NOTICE %s :%s added a timed ban on %s lasting for %ld seconds.", channel->name.c_str(), user->nick.c_str(), mask.c_str(), duration);
+ channel->WriteAllExcept(ServerInstance->FakeClient, true, pfxchar, tmp, "NOTICE %s :%s", channel->name.c_str(), addban.c_str());
+ ServerInstance->PI->SendChannelNotice(channel, pfxchar, addban);
return CMD_SUCCESS;
}
@@ -207,9 +209,13 @@ class ModuleTimedBans : public Module
setban.push_back(mask);
CUList empty;
- std::string expiry = "*** Timed ban on " + chan + " expired.";
- cr->WriteAllExcept(ServerInstance->FakeClient, true, '@', empty, "NOTICE %s :%s", cr->name.c_str(), expiry.c_str());
- ServerInstance->PI->SendChannelNotice(cr, '@', expiry);
+ const std::string expiry = "*** Timed ban on " + chan + " expired.";
+ // If halfop is loaded, send notice to halfops and above, otherwise send to ops and above
+ ModeHandler* mh = ServerInstance->Modes->FindMode('h', MODETYPE_CHANNEL);
+ char pfxchar = (mh && mh->name == "halfop") ? mh->GetPrefix() : '@';
+
+ cr->WriteAllExcept(ServerInstance->FakeClient, true, pfxchar, empty, "NOTICE %s :%s", cr->name.c_str(), expiry.c_str());
+ ServerInstance->PI->SendChannelNotice(cr, pfxchar, expiry);
ServerInstance->SendGlobalMode(setban, ServerInstance->FakeClient);
}