diff --git a/IRCSock.cpp b/IRCSock.cpp index ff40d730..7867f6d6 100644 --- a/IRCSock.cpp +++ b/IRCSock.cpp @@ -711,6 +711,8 @@ void CIRCSock::ReadLine(const CString& sData) { } // Don't forward any CAP stuff to the client return; + } else if (sCmd.Equals("INVITE")) { + NETWORKMODULECALL(OnInvite(sLine.Token(3).TrimPrefix_n(":")), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); } } diff --git a/Modules.cpp b/Modules.cpp index 7d1a9fec..33600418 100644 --- a/Modules.cpp +++ b/Modules.cpp @@ -513,6 +513,7 @@ void CModule::OnNick(const CNick& Nick, const CString& sNewNick, const vectorGetIRCNick().GetNick())) + return HALT; + return CONTINUE; + } + private: void SetInterval(int i) { diff --git a/modules/nickserv.cpp b/modules/nickserv.cpp index 186396e9..f2fc65bd 100644 --- a/modules/nickserv.cpp +++ b/modules/nickserv.cpp @@ -43,9 +43,27 @@ public: } else if (sCmdName == "clear") { m_sPass = ""; DelNV("Password"); - } else { - PutModule("Commands: set , clear"); - } + } else if (sCmdName == "ghost") { + if(sCommand.Token(1).empty()) { + PutModule("Syntax: ghost "); + } else { + PutIRC("PRIVMSG NickServ :GHOST " + sCommand.Token(1) + " " + m_sPass); + } + } else if (sCmdName == "group") { + CString sConfNick = m_pUser->GetNick(); + PutIRC("PRIVMSG NickServ :GROUP " + sConfNick + " " + m_sPass); + } else if (sCmdName == "recover") { + if(sCommand.Token(1).empty()) + PutModule("Syntax: recover "); + else + PutIRC("PRIVMSG NickServ :RECOVER " + sCommand.Token(1) + " " + m_sPass); + } else if (sCmdName == "release") { + if(sCommand.Token(1).empty()) + PutModule("Syntax: release "); + else + PutIRC("PRIVMSG NickServ :RELEASE " + sCommand.Token(1) + " " + m_sPass); + } else + PutModule("Commands: set , clear, ghost , group, release , recover "); } void HandleMessage(CNick& Nick, const CString& sMessage)