diff --git a/include/znc/Modules.h b/include/znc/Modules.h
index ba25e326..183d6e05 100644
--- a/include/znc/Modules.h
+++ b/include/znc/Modules.h
@@ -679,6 +679,7 @@ public:
* @return See CModule::EModRet.
*/
virtual EModRet OnUserRaw(CString& sLine);
+ virtual EModRet OnUserRawMessage(CMessage& Message);
/** This module hook is called when a client sends a CTCP reply.
* @param sTarget The target for the CTCP reply. Could be a channel
* name or a nick name.
@@ -686,6 +687,7 @@ public:
* @return See CModule::EModRet.
*/
virtual EModRet OnUserCTCPReply(CString& sTarget, CString& sMessage);
+ virtual EModRet OnUserCTCPReplyMessage(CCTCPMessage& Message);
/** This module hook is called when a client sends a CTCP request.
* @param sTarget The target for the CTCP request. Could be a channel
* name or a nick name.
@@ -695,6 +697,7 @@ public:
* CModule::OnUserAction() instead.
*/
virtual EModRet OnUserCTCP(CString& sTarget, CString& sMessage);
+ virtual EModRet OnUserCTCPMessage(CCTCPMessage& Message);
/** Called when a client sends a CTCP ACTION request ("/me").
* @param sTarget The target for the CTCP ACTION. Could be a channel
* name or a nick name.
@@ -703,6 +706,7 @@ public:
* @note CModule::OnUserCTCP() will not be called for this message.
*/
virtual EModRet OnUserAction(CString& sTarget, CString& sMessage);
+ virtual EModRet OnUserActionMessage(CActionMessage& Message);
/** This module hook is called when a user sends a normal IRC message.
* @param sTarget The target of the message. Could be a channel name or
* a nick name.
@@ -710,6 +714,7 @@ public:
* @return See CModule::EModRet.
*/
virtual EModRet OnUserMsg(CString& sTarget, CString& sMessage);
+ virtual EModRet OnUserTextMessage(CTextMessage& Message);
/** This module hook is called when a user sends a notice message.
* @param sTarget The target of the message. Could be a channel name or
* a nick name.
@@ -717,24 +722,28 @@ public:
* @return See CModule::EModRet.
*/
virtual EModRet OnUserNotice(CString& sTarget, CString& sMessage);
+ virtual EModRet OnUserNoticeMessage(CNoticeMessage& Message);
/** This hooks is called when a user sends a JOIN message.
* @param sChannel The channel name the join is for.
* @param sKey The key for the channel.
* @return See CModule::EModRet.
*/
virtual EModRet OnUserJoin(CString& sChannel, CString& sKey);
+ virtual EModRet OnUserJoinMessage(CJoinMessage& Message);
/** This hooks is called when a user sends a PART message.
* @param sChannel The channel name the part is for.
* @param sMessage The part message the client sent.
* @return See CModule::EModRet.
*/
virtual EModRet OnUserPart(CString& sChannel, CString& sMessage);
+ virtual EModRet OnUserPartMessage(CPartMessage& Message);
/** This module hook is called when a user wants to change a channel topic.
* @param sChannel The channel.
* @param sTopic The new topic which the user sent.
* @return See CModule::EModRet.
*/
virtual EModRet OnUserTopic(CString& sChannel, CString& sTopic);
+ virtual EModRet OnUserTopicMessage(CTopicMessage& Message);
/** This hook is called when a user requests a channel's topic.
* @param sChannel The channel for which the request is.
* @return See CModule::EModRet.
@@ -745,6 +754,7 @@ public:
* @return See CModule::EModRet.
*/
virtual EModRet OnUserQuit(CString& sMessage);
+ virtual EModRet OnUserQuitMessage(CQuitMessage& Message);
/** Called when we receive a CTCP reply from IRC.
* @param Nick The nick the CTCP reply is from.
@@ -1075,6 +1085,7 @@ public:
* @param sLine The raw traffic line which the client sent.
*/
virtual EModRet OnUnknownUserRaw(CClient* pClient, CString& sLine);
+ virtual EModRet OnUnknownUserRawMessage(CMessage& Message);
/** Called when a client told us CAP LS. Use ssCaps.insert("cap-name")
* for announcing capabilities which your module supports.
@@ -1230,16 +1241,26 @@ public:
bool OnClientLogin();
bool OnClientDisconnect();
bool OnUserRaw(CString& sLine);
+ bool OnUserRawMessage(CMessage& Message);
bool OnUserCTCPReply(CString& sTarget, CString& sMessage);
+ bool OnUserCTCPReplyMessage(CCTCPMessage& Message);
bool OnUserCTCP(CString& sTarget, CString& sMessage);
+ bool OnUserCTCPMessage(CCTCPMessage& Message);
bool OnUserAction(CString& sTarget, CString& sMessage);
+ bool OnUserActionMessage(CActionMessage& Message);
bool OnUserMsg(CString& sTarget, CString& sMessage);
+ bool OnUserTextMessage(CTextMessage& Message);
bool OnUserNotice(CString& sTarget, CString& sMessage);
+ bool OnUserNoticeMessage(CNoticeMessage& Message);
bool OnUserJoin(CString& sChannel, CString& sKey);
+ bool OnUserJoinMessage(CJoinMessage& Message);
bool OnUserPart(CString& sChannel, CString& sMessage);
+ bool OnUserPartMessage(CPartMessage& Message);
bool OnUserTopic(CString& sChannel, CString& sTopic);
+ bool OnUserTopicMessage(CTopicMessage& Message);
bool OnUserTopicRequest(CString& sChannel);
bool OnUserQuit(CString& sMessage);
+ bool OnUserQuitMessage(CQuitMessage& Message);
bool OnCTCPReply(CNick& Nick, CString& sMessage);
bool OnPrivCTCP(CNick& Nick, CString& sMessage);
@@ -1298,6 +1319,7 @@ public:
bool OnLoginAttempt(std::shared_ptr Auth);
bool OnFailedLogin(const CString& sUsername, const CString& sRemoteIP);
bool OnUnknownUserRaw(CClient* pClient, CString& sLine);
+ bool OnUnknownUserRawMessage(CMessage& Message);
bool OnClientCapLs(CClient* pClient, SCString& ssCaps);
bool IsClientCapSupported(CClient* pClient, const CString& sCap, bool bState);
bool OnClientCapRequest(CClient* pClient, const CString& sCap, bool bState);
diff --git a/src/Modules.cpp b/src/Modules.cpp
index 9b848e2c..48f47937 100644
--- a/src/Modules.cpp
+++ b/src/Modules.cpp
@@ -683,16 +683,87 @@ CModule::EModRet CModule::OnPrivBufferPlayMessage(CMessage& Message) {
void CModule::OnClientLogin() {}
void CModule::OnClientDisconnect() {}
CModule::EModRet CModule::OnUserRaw(CString& sLine) { return CONTINUE; }
+CModule::EModRet CModule::OnUserRawMessage(CMessage& Message) { return CONTINUE; }
CModule::EModRet CModule::OnUserCTCPReply(CString& sTarget, CString& sMessage) { return CONTINUE; }
+CModule::EModRet CModule::OnUserCTCPReplyMessage(CCTCPMessage& Message) {
+ CString sTarget = Message.GetTarget();
+ CString sText = Message.GetText();
+ EModRet ret = OnUserCTCPReply(sTarget, sText);
+ Message.SetTarget(sTarget);
+ Message.SetText(sText);
+ return ret;
+}
CModule::EModRet CModule::OnUserCTCP(CString& sTarget, CString& sMessage) { return CONTINUE; }
+CModule::EModRet CModule::OnUserCTCPMessage(CCTCPMessage& Message) {
+ CString sTarget = Message.GetTarget();
+ CString sText = Message.GetText();
+ EModRet ret = OnUserCTCP(sTarget, sText);
+ Message.SetTarget(sTarget);
+ Message.SetText(sText);
+ return ret;
+}
CModule::EModRet CModule::OnUserAction(CString& sTarget, CString& sMessage) { return CONTINUE; }
+CModule::EModRet CModule::OnUserActionMessage(CActionMessage& Message) {
+ CString sTarget = Message.GetTarget();
+ CString sText = Message.GetText();
+ EModRet ret = OnUserAction(sTarget, sText);
+ Message.SetTarget(sTarget);
+ Message.SetText(sText);
+ return ret;
+}
CModule::EModRet CModule::OnUserMsg(CString& sTarget, CString& sMessage) { return CONTINUE; }
+CModule::EModRet CModule::OnUserTextMessage(CTextMessage& Message) {
+ CString sTarget = Message.GetTarget();
+ CString sText = Message.GetText();
+ EModRet ret = OnUserMsg(sTarget, sText);
+ Message.SetTarget(sTarget);
+ Message.SetText(sText);
+ return ret;
+}
CModule::EModRet CModule::OnUserNotice(CString& sTarget, CString& sMessage) { return CONTINUE; }
+CModule::EModRet CModule::OnUserNoticeMessage(CNoticeMessage& Message) {
+ CString sTarget = Message.GetTarget();
+ CString sText = Message.GetText();
+ EModRet ret = OnUserNotice(sTarget, sText);
+ Message.SetTarget(sTarget);
+ Message.SetText(sText);
+ return ret;
+}
CModule::EModRet CModule::OnUserJoin(CString& sChannel, CString& sKey) { return CONTINUE; }
+CModule::EModRet CModule::OnUserJoinMessage(CJoinMessage& Message) {
+ CString sChan = Message.GetTarget();
+ CString sKey = Message.GetKey();
+ EModRet ret = OnUserJoin(sChan, sKey);
+ Message.SetTarget(sChan);
+ Message.SetKey(sKey);
+ return ret;
+}
CModule::EModRet CModule::OnUserPart(CString& sChannel, CString& sMessage) { return CONTINUE; }
+CModule::EModRet CModule::OnUserPartMessage(CPartMessage& Message) {
+ CString sChan = Message.GetTarget();
+ CString sReason = Message.GetReason();
+ EModRet ret = OnUserPart(sChan, sReason);
+ Message.SetTarget(sChan);
+ Message.SetReason(sReason);
+ return ret;
+}
CModule::EModRet CModule::OnUserTopic(CString& sChannel, CString& sTopic) { return CONTINUE; }
+CModule::EModRet CModule::OnUserTopicMessage(CTopicMessage& Message) {
+ CString sChan = Message.GetTarget();
+ CString sTopic = Message.GetTopic();
+ EModRet ret = OnUserTopic(sChan, sTopic);
+ Message.SetTarget(sChan);
+ Message.SetTopic(sTopic);
+ return ret;
+}
CModule::EModRet CModule::OnUserTopicRequest(CString& sChannel) { return CONTINUE; }
CModule::EModRet CModule::OnUserQuit(CString& sMessage) { return CONTINUE; }
+CModule::EModRet CModule::OnUserQuitMessage(CQuitMessage& Message) {
+ CString sReason = Message.GetReason();
+ EModRet ret = OnUserQuit(sReason);
+ Message.SetReason(sReason);
+ return ret;
+}
CModule::EModRet CModule::OnCTCPReply(CNick& Nick, CString& sMessage) { return CONTINUE; }
CModule::EModRet CModule::OnPrivCTCP(CNick& Nick, CString& sMessage) { return CONTINUE; }
@@ -824,6 +895,7 @@ void CModule::OnClientConnect(CZNCSock* pClient, const CString& sHost, unsigned
CModule::EModRet CModule::OnLoginAttempt(std::shared_ptr Auth) { return CONTINUE; }
void CModule::OnFailedLogin(const CString& sUsername, const CString& sRemoteIP) {}
CModule::EModRet CModule::OnUnknownUserRaw(CClient* pClient, CString& sLine) { return CONTINUE; }
+CModule::EModRet CModule::OnUnknownUserRawMessage(CMessage& Message) { return CONTINUE; }
void CModule::OnClientCapLs(CClient* pClient, SCString& ssCaps) {}
bool CModule::IsClientCapSupported(CClient* pClient, const CString& sCap, bool bState) { return false; }
void CModule::OnClientCapRequest(CClient* pClient, const CString& sCap, bool bState) {}
@@ -897,16 +969,26 @@ bool CModules::OnRawMessage(CMessage& Message) { MODHALTCHK(OnRawMessage(Message
bool CModules::OnClientLogin() { MODUNLOADCHK(OnClientLogin()); return false; }
bool CModules::OnClientDisconnect() { MODUNLOADCHK(OnClientDisconnect()); return false; }
bool CModules::OnUserRaw(CString& sLine) { MODHALTCHK(OnUserRaw(sLine)); }
+bool CModules::OnUserRawMessage(CMessage& Message) { MODHALTCHK(OnUserRawMessage(Message)); }
bool CModules::OnUserCTCPReply(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserCTCPReply(sTarget, sMessage)); }
+bool CModules::OnUserCTCPReplyMessage(CCTCPMessage& Message) { MODHALTCHK(OnUserCTCPReplyMessage(Message)); }
bool CModules::OnUserCTCP(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserCTCP(sTarget, sMessage)); }
+bool CModules::OnUserCTCPMessage(CCTCPMessage& Message) { MODHALTCHK(OnUserCTCPMessage(Message)); }
bool CModules::OnUserAction(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserAction(sTarget, sMessage)); }
+bool CModules::OnUserActionMessage(CActionMessage& Message) { MODHALTCHK(OnUserActionMessage(Message)); }
bool CModules::OnUserMsg(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserMsg(sTarget, sMessage)); }
+bool CModules::OnUserTextMessage(CTextMessage& Message) { MODHALTCHK(OnUserTextMessage(Message)); }
bool CModules::OnUserNotice(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserNotice(sTarget, sMessage)); }
+bool CModules::OnUserNoticeMessage(CNoticeMessage& Message) { MODHALTCHK(OnUserNoticeMessage(Message)); }
bool CModules::OnUserJoin(CString& sChannel, CString& sKey) { MODHALTCHK(OnUserJoin(sChannel, sKey)); }
+bool CModules::OnUserJoinMessage(CJoinMessage& Message) { MODHALTCHK(OnUserJoinMessage(Message)); }
bool CModules::OnUserPart(CString& sChannel, CString& sMessage) { MODHALTCHK(OnUserPart(sChannel, sMessage)); }
+bool CModules::OnUserPartMessage(CPartMessage& Message) { MODHALTCHK(OnUserPartMessage(Message)); }
bool CModules::OnUserTopic(CString& sChannel, CString& sTopic) { MODHALTCHK(OnUserTopic(sChannel, sTopic)); }
+bool CModules::OnUserTopicMessage(CTopicMessage& Message) { MODHALTCHK(OnUserTopicMessage(Message)); }
bool CModules::OnUserTopicRequest(CString& sChannel) { MODHALTCHK(OnUserTopicRequest(sChannel)); }
bool CModules::OnUserQuit(CString& sMessage) { MODHALTCHK(OnUserQuit(sMessage)); }
+bool CModules::OnUserQuitMessage(CQuitMessage& Message) { MODHALTCHK(OnUserQuitMessage(Message)); }
bool CModules::OnQuit(const CNick& Nick, const CString& sMessage, const vector& vChans) { MODUNLOADCHK(OnQuit(Nick, sMessage, vChans)); return false; }
bool CModules::OnQuitMessage(CQuitMessage& Message, const vector& vChans) { MODUNLOADCHK(OnQuitMessage(Message, vChans)); return false; }
@@ -1014,6 +1096,10 @@ bool CModules::OnUnknownUserRaw(CClient* pClient, CString& sLine) {
MODHALTCHK(OnUnknownUserRaw(pClient, sLine));
}
+bool CModules::OnUnknownUserRawMessage(CMessage& Message) {
+ MODHALTCHK(OnUnknownUserRawMessage(Message));
+}
+
bool CModules::OnClientCapLs(CClient* pClient, SCString& ssCaps) {
MODUNLOADCHK(OnClientCapLs(pClient, ssCaps));
return false;