aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/m_delaymsg.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2019-05-15 15:11:31 +0100
committerGravatar Sadie Powell2019-05-15 15:26:55 +0100
commit1d5b18de82a90317291a10acb3b9132324c0e98b (patch)
treebe49087463332fcb617dd88567afce5cea6eb8c6 /src/modules/m_delaymsg.cpp
parentMerge branch 'insp3' into master. (diff)
parentDocument the --disable-auto-extras configure option. (diff)
downloadinspircd++-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.cpp29
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;
}
}