diff options
| author | 2019-05-15 15:11:31 +0100 | |
|---|---|---|
| committer | 2019-05-15 15:26:55 +0100 | |
| commit | 1d5b18de82a90317291a10acb3b9132324c0e98b (patch) | |
| tree | be49087463332fcb617dd88567afce5cea6eb8c6 /src/modules/m_delaymsg.cpp | |
| parent | Merge branch 'insp3' into master. (diff) | |
| parent | Document the --disable-auto-extras configure option. (diff) | |
| download | inspircd++-1d5b18de82a90317291a10acb3b9132324c0e98b.tar.gz inspircd++-1d5b18de82a90317291a10acb3b9132324c0e98b.tar.bz2 inspircd++-1d5b18de82a90317291a10acb3b9132324c0e98b.zip | |
Merge branch 'insp3' into master.
Diffstat (limited to 'src/modules/m_delaymsg.cpp')
| -rw-r--r-- | src/modules/m_delaymsg.cpp | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/src/modules/m_delaymsg.cpp b/src/modules/m_delaymsg.cpp index a83e2cf63..b6e7aef3d 100644 --- a/src/modules/m_delaymsg.cpp +++ b/src/modules/m_delaymsg.cpp @@ -18,6 +18,7 @@ #include "inspircd.h" +#include "modules/ctctags.h" class DelayMsgMode : public ParamMode<DelayMsgMode, LocalIntExt> { @@ -44,18 +45,26 @@ class DelayMsgMode : public ParamMode<DelayMsgMode, LocalIntExt> } }; -class ModuleDelayMsg : public Module +class ModuleDelayMsg + : public Module + , public CTCTags::EventListener { + private: DelayMsgMode djm; bool allownotice; + ModResult HandleMessage(User* user, const MessageTarget& target, bool notice); + public: - ModuleDelayMsg() : djm(this) + ModuleDelayMsg() + : CTCTags::EventListener(this) + , djm(this) { } Version GetVersion() override; void OnUserJoin(Membership* memb, bool sync, bool created, CUList&) override; ModResult OnUserPreMessage(User* user, const MessageTarget& target, MessageDetails& details) override; + ModResult OnUserPreTagMessage(User* user, const MessageTarget& target, CTCTags::TagMessageDetails& details) override; void ReadConfig(ConfigStatus& status) override; }; @@ -82,7 +91,7 @@ void DelayMsgMode::OnUnset(User* source, Channel* chan) Version ModuleDelayMsg::GetVersion() { - return Version("Provides channelmode +d <int>, to deny messages to a channel until <int> seconds.", VF_VENDOR); + return Version("Provides channel mode +d <int>, to deny messages to a channel until <int> seconds have passed", VF_VENDOR); } void ModuleDelayMsg::OnUserJoin(Membership* memb, bool sync, bool created, CUList&) @@ -95,10 +104,20 @@ void ModuleDelayMsg::OnUserJoin(Membership* memb, bool sync, bool created, CULis ModResult ModuleDelayMsg::OnUserPreMessage(User* user, const MessageTarget& target, MessageDetails& details) { + return HandleMessage(user, target, details.type == MSG_NOTICE); +} + +ModResult ModuleDelayMsg::OnUserPreTagMessage(User* user, const MessageTarget& target, CTCTags::TagMessageDetails& details) +{ + return HandleMessage(user, target, false); +} + +ModResult ModuleDelayMsg::HandleMessage(User* user, const MessageTarget& target, bool notice) +{ if (!IS_LOCAL(user)) return MOD_RES_PASSTHRU; - if ((target.type != MessageTarget::TYPE_CHANNEL) || ((!allownotice) && (details.type == MSG_NOTICE))) + if ((target.type != MessageTarget::TYPE_CHANNEL) || ((!allownotice) && (notice))) return MOD_RES_PASSTHRU; Channel* channel = target.Get<Channel>(); @@ -118,7 +137,7 @@ ModResult ModuleDelayMsg::OnUserPreMessage(User* user, const MessageTarget& targ { if (channel->GetPrefixValue(user) < VOICE_VALUE) { - user->WriteNumeric(ERR_CANNOTSENDTOCHAN, channel->name, InspIRCd::Format("You must wait %d seconds after joining to send to channel (+d)", len)); + user->WriteNumeric(ERR_CANNOTSENDTOCHAN, channel->name, InspIRCd::Format("You must wait %d seconds after joining to send to the channel (+d is set)", len)); return MOD_RES_DENY; } } |
