diff --git a/modules/awaystore.cpp b/modules/awaystore.cpp index b0347737..a26cea1b 100644 --- a/modules/awaystore.cpp +++ b/modules/awaystore.cpp @@ -26,9 +26,12 @@ #define REQUIRESSL +#include #include #include #include +#include +#include using std::vector; using std::map; @@ -203,6 +206,7 @@ public: m_bIsAway = false; m_bBootError = false; m_saveMessages = true; + m_chanMessages = false; SetAwayTime(300); AddTimer(new CAwayJob(this, 60, 0, "AwayJob", "Checks for idle and saves messages every 1 minute")); @@ -242,6 +246,11 @@ public: uIndex++; m_saveMessages = false; } + if (sMyArgs.Token(uIndex) == "-chans") + { + uIndex++; + m_chanMessages = true; + } if (sMyArgs.Token(uIndex) == "-notimer") { SetAwayTime(0); @@ -397,6 +406,15 @@ public: return(CONTINUE); } + EModRet OnChanMsg(CNick& nick, CChan& channel, CString& sMessage) override + { + if(m_bIsAway && m_chanMessages && sMessage.AsLower().find(m_pNetwork->GetCurNick().AsLower()) != CString::npos) { + AddMessage(time(nullptr), nick, channel.GetName() + " " + sMessage); + } + + return(CONTINUE); + } + EModRet OnPrivAction(CNick& Nick, CString& sMessage) override { if (m_bIsAway) { @@ -495,6 +513,7 @@ private: vector m_vMessages; CString m_sReason; bool m_saveMessages; + bool m_chanMessages; }; @@ -515,7 +534,7 @@ void CAwayJob::RunJob() template<> void TModInfo(CModInfo& Info) { Info.SetWikiPage("awaystore"); Info.SetHasArgs(true); - Info.SetArgsHelpText("[ -notimer | -timer N ] passw0rd . N is number of seconds, 600 by default."); + Info.SetArgsHelpText("[ -notimer | -timer N ] [-chans] passw0rd . N is number of seconds, 600 by default."); } NETWORKMODULEDEFS(CAway, "Adds auto-away with logging, useful when you use ZNC from different locations")