From d32ac7c18404f6e2147dc628b197b5e8dae2995e Mon Sep 17 00:00:00 2001 From: Eli Young Date: Fri, 7 Apr 2017 19:14:52 -0700 Subject: [PATCH] Log user quit messages Since OnIRCDisconnected() doesn't include the quit message, and OnQuit() isn't called when the user quits, we need to hook OnSendToIRCMessage(). --- modules/log.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/modules/log.cpp b/modules/log.cpp index 013cc9bc..8fd2ba7b 100644 --- a/modules/log.cpp +++ b/modules/log.cpp @@ -114,6 +114,8 @@ class CLogMod : public CModule { const vector& vChans) override; EModRet OnTopic(CNick& Nick, CChan& Channel, CString& sTopic) override; + EModRet OnSendToIRCMessage(CMessage& Message) override; + /* notices */ EModRet OnUserNotice(CString& sTarget, CString& sMessage) override; EModRet OnPrivNotice(CNick& Nick, CString& sMessage) override; @@ -399,6 +401,17 @@ void CLogMod::OnQuit(const CNick& Nick, const CString& sMessage, } } +CModule::EModRet CLogMod::OnSendToIRCMessage(CMessage& Message) { + if (Message.GetType() != CMessage::Type::Quit) { + return CONTINUE; + } + CIRCNetwork* pNetwork = Message.GetNetwork(); + OnQuit(pNetwork->GetIRCNick(), + Message.As().GetReason(), + pNetwork->GetChans()); + return CONTINUE; +} + void CLogMod::OnJoin(const CNick& Nick, CChan& Channel) { if (!HasNV("joins") || GetNV("joins").ToBool()) PutLog("*** Joins: " + Nick.GetNick() + " (" + Nick.GetIdent() + "@" +