]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_delaymsg.cpp
Some more text fixes and improvements (#1618).
[user/henk/code/inspircd.git] / src / modules / m_delaymsg.cpp
index f13ea48ead7e9acba3ebae251b09ecaa4e8b3e74..6acaa9a2f2947b7f51f7bacf92813a7120e1faf7 100644 (file)
@@ -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() CXX11_OVERRIDE;
        void OnUserJoin(Membership* memb, bool sync, bool created, CUList&) CXX11_OVERRIDE;
        ModResult OnUserPreMessage(User* user, const MessageTarget& target, MessageDetails& details) CXX11_OVERRIDE;
+       ModResult OnUserPreTagMessage(User* user, const MessageTarget& target, CTCTags::TagMessageDetails& details) CXX11_OVERRIDE;
        void ReadConfig(ConfigStatus& status) CXX11_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&)
@@ -94,11 +103,21 @@ 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;
                }
        }