#include "inspircd.h"
+#include "modules/ctctags.h"
class DelayMsgMode : public ParamMode<DelayMsgMode, LocalIntExt>
{
}
ModeAction OnSet(User* source, Channel* chan, std::string& parameter) CXX11_OVERRIDE;
- void OnUnset(User* source, Channel* chan);
+ void OnUnset(User* source, Channel* chan) CXX11_OVERRIDE;
void SerializeParam(Channel* chan, intptr_t n, std::string& out)
{
}
};
-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;
};
}
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>();