mirror of
https://github.com/znc/znc.git
synced 2026-08-08 09:52:55 +02:00
Added module hooks for OnUserJoin() and OnUserPart()
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@566 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
+45
-139
@@ -435,8 +435,6 @@ CString CModule::GetModNick() const { return ((m_pUser) ? m_pUser->GetStatusPref
|
||||
|
||||
bool CModule::OnLoad(const CString& sArgs) { return true; }
|
||||
bool CModule::OnBoot() { return true; }
|
||||
void CModule::OnUserAttached() {}
|
||||
void CModule::OnUserDetached() {}
|
||||
void CModule::OnIRCDisconnected() {}
|
||||
void CModule::OnIRCConnected() {}
|
||||
CModule::EModRet CModule::OnBroadcast(CString& sMessage) { return CONTINUE; }
|
||||
@@ -450,7 +448,6 @@ void CModule::OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bo
|
||||
void CModule::OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {}
|
||||
void CModule::OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs) {}
|
||||
|
||||
CModule::EModRet CModule::OnUserRaw(CString& sLine) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnRaw(CString& sLine) { return CONTINUE; }
|
||||
|
||||
CModule::EModRet CModule::OnStatusCommand(const CString& sCommand) { return CONTINUE; }
|
||||
@@ -464,15 +461,21 @@ void CModule::OnKick(const CNick& Nick, const CString& sKickedNick, CChan& Chann
|
||||
void CModule::OnJoin(const CNick& Nick, CChan& Channel) {}
|
||||
void CModule::OnPart(const CNick& Nick, CChan& Channel) {}
|
||||
|
||||
void CModule::OnUserAttached() {}
|
||||
void CModule::OnUserDetached() {}
|
||||
CModule::EModRet CModule::OnUserRaw(CString& sLine) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnUserCTCPReply(CString& sTarget, CString& sMessage) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnCTCPReply(CNick& Nick, CString& sMessage) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnUserCTCP(CString& sTarget, CString& sMessage) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnUserMsg(CString& sTarget, CString& sMessage) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnUserNotice(CString& sTarget, CString& sMessage) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnUserJoin(CString& sChannel, CString& sKey) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnUserPart(CString& sChannel, CString& sMessage) { return CONTINUE; }
|
||||
|
||||
CModule::EModRet CModule::OnCTCPReply(CNick& Nick, CString& sMessage) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnPrivCTCP(CNick& Nick, CString& sMessage) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnChanCTCP(CNick& Nick, CChan& Channel, CString& sMessage) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnUserMsg(CString& sTarget, CString& sMessage) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnPrivMsg(CNick& Nick, CString& sMessage) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnUserNotice(CString& sTarget, CString& sMessage) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnPrivNotice(CNick& Nick, CString& sMessage) { return CONTINUE; }
|
||||
CModule::EModRet CModule::OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage) { return CONTINUE; }
|
||||
|
||||
@@ -531,141 +534,44 @@ bool CModules::OnBoot() {
|
||||
return true;
|
||||
}
|
||||
|
||||
void CModules::OnIRCConnected() {
|
||||
MODUNLOADCHK(OnIRCConnected());
|
||||
}
|
||||
void CModules::OnIRCConnected() { MODUNLOADCHK(OnIRCConnected()); }
|
||||
bool CModules::OnBroadcast(CString& sMessage) { MODHALTCHK(OnBroadcast(sMessage)); }
|
||||
void CModules::OnIRCDisconnected() { MODUNLOADCHK(OnIRCDisconnected()); }
|
||||
bool CModules::OnDCCUserSend(const CNick& RemoteNick, unsigned long uLongIP, unsigned short uPort, const CString& sFile, unsigned long uFileSize) { MODHALTCHK(OnDCCUserSend(RemoteNick, uLongIP, uPort, sFile, uFileSize)); }
|
||||
void CModules::OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange) { MODUNLOADCHK(OnChanPermission(OpNick, Nick, Channel, uMode, bAdded, bNoChange)); }
|
||||
void CModules::OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnOp(OpNick, Nick, Channel, bNoChange)); }
|
||||
void CModules::OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnDeop(OpNick, Nick, Channel, bNoChange)); }
|
||||
void CModules::OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnVoice(OpNick, Nick, Channel, bNoChange)); }
|
||||
void CModules::OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnDevoice(OpNick, Nick, Channel, bNoChange)); }
|
||||
void CModules::OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs) { MODUNLOADCHK(OnRawMode(OpNick, Channel, sModes, sArgs)); }
|
||||
bool CModules::OnRaw(CString& sLine) { MODHALTCHK(OnRaw(sLine)); }
|
||||
|
||||
bool CModules::OnBroadcast(CString& sMessage) {
|
||||
MODHALTCHK(OnBroadcast(sMessage));
|
||||
}
|
||||
void CModules::OnUserAttached() { MODUNLOADCHK(OnUserAttached()); }
|
||||
void CModules::OnUserDetached() { MODUNLOADCHK(OnUserDetached()); }
|
||||
bool CModules::OnUserRaw(CString& sLine) { MODHALTCHK(OnUserRaw(sLine)); }
|
||||
bool CModules::OnUserCTCPReply(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserCTCPReply(sTarget, sMessage)); }
|
||||
bool CModules::OnUserCTCP(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserCTCP(sTarget, sMessage)); }
|
||||
bool CModules::OnUserMsg(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserMsg(sTarget, sMessage)); }
|
||||
bool CModules::OnUserNotice(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserNotice(sTarget, sMessage)); }
|
||||
bool CModules::OnUserJoin(CString& sChannel, CString& sKey) { MODHALTCHK(OnUserJoin(sChannel, sKey)); }
|
||||
bool CModules::OnUserPart(CString& sChannel, CString& sMessage) { MODHALTCHK(OnUserPart(sChannel, sMessage)); }
|
||||
|
||||
void CModules::OnUserAttached() {
|
||||
MODUNLOADCHK(OnUserAttached());
|
||||
}
|
||||
|
||||
void CModules::OnUserDetached() {
|
||||
MODUNLOADCHK(OnUserDetached());
|
||||
}
|
||||
|
||||
void CModules::OnIRCDisconnected() {
|
||||
MODUNLOADCHK(OnIRCDisconnected());
|
||||
}
|
||||
|
||||
bool CModules::OnDCCUserSend(const CNick& RemoteNick, unsigned long uLongIP, unsigned short uPort, const CString& sFile, unsigned long uFileSize) {
|
||||
MODHALTCHK(OnDCCUserSend(RemoteNick, uLongIP, uPort, sFile, uFileSize));
|
||||
}
|
||||
|
||||
void CModules::OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange) {
|
||||
MODUNLOADCHK(OnChanPermission(OpNick, Nick, Channel, uMode, bAdded, bNoChange));
|
||||
}
|
||||
|
||||
void CModules::OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {
|
||||
MODUNLOADCHK(OnOp(OpNick, Nick, Channel, bNoChange));
|
||||
}
|
||||
|
||||
void CModules::OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {
|
||||
MODUNLOADCHK(OnDeop(OpNick, Nick, Channel, bNoChange));
|
||||
}
|
||||
|
||||
void CModules::OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {
|
||||
MODUNLOADCHK(OnVoice(OpNick, Nick, Channel, bNoChange));
|
||||
}
|
||||
|
||||
void CModules::OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {
|
||||
MODUNLOADCHK(OnDevoice(OpNick, Nick, Channel, bNoChange));
|
||||
}
|
||||
|
||||
void CModules::OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs) {
|
||||
MODUNLOADCHK(OnRawMode(OpNick, Channel, sModes, sArgs));
|
||||
}
|
||||
|
||||
bool CModules::OnRaw(CString& sLine) {
|
||||
MODHALTCHK(OnRaw(sLine));
|
||||
}
|
||||
|
||||
bool CModules::OnUserRaw(CString& sLine) {
|
||||
MODHALTCHK(OnUserRaw(sLine));
|
||||
}
|
||||
|
||||
void CModules::OnQuit(const CNick& Nick, const CString& sMessage, const vector<CChan*>& vChans) {
|
||||
MODUNLOADCHK(OnQuit(Nick, sMessage, vChans));
|
||||
}
|
||||
|
||||
void CModules::OnNick(const CNick& Nick, const CString& sNewNick, const vector<CChan*>& vChans) {
|
||||
MODUNLOADCHK(OnNick(Nick, sNewNick, vChans));
|
||||
}
|
||||
|
||||
void CModules::OnKick(const CNick& Nick, const CString& sKickedNick, CChan& Channel, const CString& sMessage) {
|
||||
MODUNLOADCHK(OnKick(Nick, sKickedNick, Channel, sMessage));
|
||||
}
|
||||
|
||||
void CModules::OnJoin(const CNick& Nick, CChan& Channel) {
|
||||
MODUNLOADCHK(OnJoin(Nick, Channel));
|
||||
}
|
||||
|
||||
void CModules::OnPart(const CNick& Nick, CChan& Channel) {
|
||||
MODUNLOADCHK(OnPart(Nick, Channel));
|
||||
}
|
||||
|
||||
bool CModules::OnUserCTCPReply(CString& sTarget, CString& sMessage) {
|
||||
MODHALTCHK(OnUserCTCPReply(sTarget, sMessage));
|
||||
}
|
||||
|
||||
bool CModules::OnCTCPReply(CNick& Nick, CString& sMessage) {
|
||||
MODHALTCHK(OnCTCPReply(Nick, sMessage));
|
||||
}
|
||||
|
||||
bool CModules::OnUserCTCP(CString& sTarget, CString& sMessage) {
|
||||
MODHALTCHK(OnUserCTCP(sTarget, sMessage));
|
||||
}
|
||||
|
||||
bool CModules::OnPrivCTCP(CNick& Nick, CString& sMessage) {
|
||||
MODHALTCHK(OnPrivCTCP(Nick, sMessage));
|
||||
}
|
||||
|
||||
bool CModules::OnChanCTCP(CNick& Nick, CChan& Channel, CString& sMessage) {
|
||||
MODHALTCHK(OnChanCTCP(Nick, Channel, sMessage));
|
||||
}
|
||||
|
||||
bool CModules::OnUserMsg(CString& sTarget, CString& sMessage) {
|
||||
MODHALTCHK(OnUserMsg(sTarget, sMessage));
|
||||
}
|
||||
|
||||
bool CModules::OnPrivMsg(CNick& Nick, CString& sMessage) {
|
||||
MODHALTCHK(OnPrivMsg(Nick, sMessage));
|
||||
}
|
||||
|
||||
bool CModules::OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage) {
|
||||
MODHALTCHK(OnChanMsg(Nick, Channel, sMessage));
|
||||
}
|
||||
|
||||
bool CModules::OnUserNotice(CString& sTarget, CString& sMessage) {
|
||||
MODHALTCHK(OnUserNotice(sTarget, sMessage));
|
||||
}
|
||||
|
||||
bool CModules::OnPrivNotice(CNick& Nick, CString& sMessage) {
|
||||
MODHALTCHK(OnPrivNotice(Nick, sMessage));
|
||||
}
|
||||
|
||||
bool CModules::OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage) {
|
||||
MODHALTCHK(OnChanNotice(Nick, Channel, sMessage));
|
||||
}
|
||||
|
||||
bool CModules::OnStatusCommand(const CString& sCommand) {
|
||||
MODHALTCHK(OnStatusCommand(sCommand));
|
||||
}
|
||||
|
||||
void CModules::OnModCommand(const CString& sCommand) {
|
||||
MODUNLOADCHK(OnModCommand(sCommand));
|
||||
}
|
||||
|
||||
void CModules::OnModNotice(const CString& sMessage) {
|
||||
MODUNLOADCHK(OnModNotice(sMessage));
|
||||
}
|
||||
|
||||
void CModules::OnModCTCP(const CString& sMessage) {
|
||||
MODUNLOADCHK(OnModCTCP(sMessage));
|
||||
}
|
||||
void CModules::OnQuit(const CNick& Nick, const CString& sMessage, const vector<CChan*>& vChans) { MODUNLOADCHK(OnQuit(Nick, sMessage, vChans)); }
|
||||
void CModules::OnNick(const CNick& Nick, const CString& sNewNick, const vector<CChan*>& vChans) { MODUNLOADCHK(OnNick(Nick, sNewNick, vChans)); }
|
||||
void CModules::OnKick(const CNick& Nick, const CString& sKickedNick, CChan& Channel, const CString& sMessage) { MODUNLOADCHK(OnKick(Nick, sKickedNick, Channel, sMessage)); }
|
||||
void CModules::OnJoin(const CNick& Nick, CChan& Channel) { MODUNLOADCHK(OnJoin(Nick, Channel)); }
|
||||
void CModules::OnPart(const CNick& Nick, CChan& Channel) { MODUNLOADCHK(OnPart(Nick, Channel)); }
|
||||
bool CModules::OnCTCPReply(CNick& Nick, CString& sMessage) { MODHALTCHK(OnCTCPReply(Nick, sMessage)); }
|
||||
bool CModules::OnPrivCTCP(CNick& Nick, CString& sMessage) { MODHALTCHK(OnPrivCTCP(Nick, sMessage)); }
|
||||
bool CModules::OnChanCTCP(CNick& Nick, CChan& Channel, CString& sMessage) { MODHALTCHK(OnChanCTCP(Nick, Channel, sMessage)); }
|
||||
bool CModules::OnPrivMsg(CNick& Nick, CString& sMessage) { MODHALTCHK(OnPrivMsg(Nick, sMessage)); }
|
||||
bool CModules::OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage) { MODHALTCHK(OnChanMsg(Nick, Channel, sMessage)); }
|
||||
bool CModules::OnPrivNotice(CNick& Nick, CString& sMessage) { MODHALTCHK(OnPrivNotice(Nick, sMessage)); }
|
||||
bool CModules::OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage) { MODHALTCHK(OnChanNotice(Nick, Channel, sMessage)); }
|
||||
bool CModules::OnStatusCommand(const CString& sCommand) { MODHALTCHK(OnStatusCommand(sCommand)); }
|
||||
void CModules::OnModCommand(const CString& sCommand) { MODUNLOADCHK(OnModCommand(sCommand)); }
|
||||
void CModules::OnModNotice(const CString& sMessage) { MODUNLOADCHK(OnModNotice(sMessage)); }
|
||||
void CModules::OnModCTCP(const CString& sMessage) { MODUNLOADCHK(OnModCTCP(sMessage)); }
|
||||
|
||||
////////////////////
|
||||
// CGlobalModules //
|
||||
|
||||
@@ -198,8 +198,6 @@ public:
|
||||
|
||||
virtual bool OnLoad(const CString& sArgs);
|
||||
virtual bool OnBoot();
|
||||
virtual void OnUserAttached();
|
||||
virtual void OnUserDetached();
|
||||
virtual void OnIRCDisconnected();
|
||||
virtual void OnIRCConnected();
|
||||
virtual EModRet OnBroadcast(CString& sMessage);
|
||||
@@ -213,7 +211,6 @@ public:
|
||||
virtual void OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange);
|
||||
virtual void OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs);
|
||||
|
||||
virtual EModRet OnUserRaw(CString& sLine);
|
||||
virtual EModRet OnRaw(CString& sLine);
|
||||
|
||||
virtual EModRet OnStatusCommand(const CString& sCommand);
|
||||
@@ -227,15 +224,21 @@ public:
|
||||
virtual void OnJoin(const CNick& Nick, CChan& Channel);
|
||||
virtual void OnPart(const CNick& Nick, CChan& Channel);
|
||||
|
||||
virtual void OnUserAttached();
|
||||
virtual void OnUserDetached();
|
||||
virtual EModRet OnUserRaw(CString& sLine);
|
||||
virtual EModRet OnUserCTCPReply(CString& sTarget, CString& sMessage);
|
||||
virtual EModRet OnCTCPReply(CNick& Nick, CString& sMessage);
|
||||
virtual EModRet OnUserCTCP(CString& sTarget, CString& sMessage);
|
||||
virtual EModRet OnUserMsg(CString& sTarget, CString& sMessage);
|
||||
virtual EModRet OnUserNotice(CString& sTarget, CString& sMessage);
|
||||
virtual EModRet OnUserJoin(CString& sChannel, CString& sKey);
|
||||
virtual EModRet OnUserPart(CString& sChannel, CString& sMessage);
|
||||
|
||||
virtual EModRet OnCTCPReply(CNick& Nick, CString& sMessage);
|
||||
virtual EModRet OnPrivCTCP(CNick& Nick, CString& sMessage);
|
||||
virtual EModRet OnChanCTCP(CNick& Nick, CChan& Channel, CString& sMessage);
|
||||
virtual EModRet OnUserMsg(CString& sTarget, CString& sMessage);
|
||||
virtual EModRet OnPrivMsg(CNick& Nick, CString& sMessage);
|
||||
virtual EModRet OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage);
|
||||
virtual EModRet OnUserNotice(CString& sTarget, CString& sMessage);
|
||||
virtual EModRet OnPrivNotice(CNick& Nick, CString& sMessage);
|
||||
virtual EModRet OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage);
|
||||
|
||||
@@ -323,8 +326,6 @@ public:
|
||||
void UnloadAll();
|
||||
|
||||
virtual bool OnBoot(); // Return false to abort
|
||||
virtual void OnUserAttached();
|
||||
virtual void OnUserDetached();
|
||||
virtual void OnIRCDisconnected();
|
||||
virtual void OnIRCConnected();
|
||||
virtual bool OnBroadcast(CString& sMessage);
|
||||
@@ -338,7 +339,6 @@ public:
|
||||
virtual void OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange);
|
||||
virtual void OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs);
|
||||
|
||||
virtual bool OnUserRaw(CString& sLine);
|
||||
virtual bool OnRaw(CString& sLine);
|
||||
|
||||
virtual bool OnStatusCommand(const CString& sCommand);
|
||||
@@ -352,15 +352,21 @@ public:
|
||||
virtual void OnJoin(const CNick& Nick, CChan& Channel);
|
||||
virtual void OnPart(const CNick& Nick, CChan& Channel);
|
||||
|
||||
virtual void OnUserAttached();
|
||||
virtual void OnUserDetached();
|
||||
virtual bool OnUserRaw(CString& sLine);
|
||||
virtual bool OnUserCTCPReply(CString& sTarget, CString& sMessage);
|
||||
virtual bool OnCTCPReply(CNick& Nick, CString& sMessage);
|
||||
virtual bool OnUserCTCP(CString& sTarget, CString& sMessage);
|
||||
virtual bool OnUserMsg(CString& sTarget, CString& sMessage);
|
||||
virtual bool OnUserNotice(CString& sTarget, CString& sMessage);
|
||||
virtual bool OnUserJoin(CString& sChannel, CString& sKey);
|
||||
virtual bool OnUserPart(CString& sChannel, CString& sMessage);
|
||||
|
||||
virtual bool OnCTCPReply(CNick& Nick, CString& sMessage);
|
||||
virtual bool OnPrivCTCP(CNick& Nick, CString& sMessage);
|
||||
virtual bool OnChanCTCP(CNick& Nick, CChan& Channel, CString& sMessage);
|
||||
virtual bool OnUserMsg(CString& sTarget, CString& sMessage);
|
||||
virtual bool OnPrivMsg(CNick& Nick, CString& sMessage);
|
||||
virtual bool OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage);
|
||||
virtual bool OnUserNotice(CString& sTarget, CString& sMessage);
|
||||
virtual bool OnPrivNotice(CNick& Nick, CString& sMessage);
|
||||
virtual bool OnChanNotice(CNick& Nick, CChan& Channel, CString& sMessage);
|
||||
|
||||
|
||||
+51
-8
@@ -86,7 +86,9 @@ void CUserSock::ReadLine(const CString& sData) {
|
||||
}
|
||||
|
||||
return; // Don't forward this msg. ZNC has already registered us.
|
||||
} else if (!m_pUser) {
|
||||
}
|
||||
|
||||
if (!m_pUser) {
|
||||
Close();
|
||||
return;
|
||||
}
|
||||
@@ -116,24 +118,59 @@ void CUserSock::ReadLine(const CString& sData) {
|
||||
} else if (sCommand.CaseCmp("PONG") == 0) {
|
||||
return; // Block pong replies, we already responded to the pings
|
||||
} else if (sCommand.CaseCmp("JOIN") == 0) {
|
||||
CString sChan = sLine.Token(1);
|
||||
CString sChans = sLine.Token(1);
|
||||
CString sKey = sLine.Token(2);
|
||||
|
||||
if (sChan.Left(1) == ":") {
|
||||
sChan.LeftChomp();
|
||||
if (sChans.Left(1) == ":") {
|
||||
sChans.LeftChomp();
|
||||
}
|
||||
|
||||
if (m_pUser) {
|
||||
CChan* pChan = m_pUser->FindChan(sChan);
|
||||
VCString vChans;
|
||||
sChans.Split(",", vChans, false);
|
||||
sChans.clear();
|
||||
|
||||
if (pChan) {
|
||||
pChan->JoinUser(false, sKey);
|
||||
for (unsigned int a = 0; a < vChans.size(); a++) {
|
||||
CString sChannel = vChans[a];
|
||||
CZNC::Get().GetModules().SetUserSock(this);
|
||||
MODULECALLCONT(OnUserJoin(sChannel, sKey));
|
||||
CZNC::Get().GetModules().SetUserSock(NULL);
|
||||
|
||||
CChan* pChan = m_pUser->FindChan(sChannel);
|
||||
|
||||
if (pChan) {
|
||||
pChan->JoinUser(false, sKey);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!sChannel.empty()) {
|
||||
sChans += (sChans.empty()) ? sChannel : CString("," + sChannel);
|
||||
}
|
||||
}
|
||||
|
||||
if (sChans.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
sLine = "JOIN " + sChans;
|
||||
|
||||
if (!sKey.empty()) {
|
||||
sLine += " " + sKey;
|
||||
}
|
||||
}
|
||||
} else if (sCommand.CaseCmp("PART") == 0) {
|
||||
CString sChan = sLine.Token(1);
|
||||
CString sMessage = sLine.Token(2, true);
|
||||
|
||||
if (sMessage.Left(1) == ":") {
|
||||
sMessage.LeftChomp();
|
||||
}
|
||||
|
||||
CZNC::Get().GetModules().SetUserSock(this);
|
||||
MODULECALLRET(OnUserPart(sChan, sMessage));
|
||||
CZNC::Get().GetModules().SetUserSock(NULL);
|
||||
|
||||
if (m_pUser) {
|
||||
CString sChan = sLine.Token(1);
|
||||
CChan* pChan = m_pUser->FindChan(sChan);
|
||||
|
||||
if (pChan && !pChan->IsOn()) {
|
||||
@@ -142,6 +179,12 @@ void CUserSock::ReadLine(const CString& sData) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
sLine = "PART " + sChan;
|
||||
|
||||
if (!sMessage.empty()) {
|
||||
sLine += " :" + sMessage;
|
||||
}
|
||||
} else if (sCommand.CaseCmp("QUIT") == 0) {
|
||||
if (m_pIRCSock) {
|
||||
m_pUser->UserDisconnected(this);
|
||||
|
||||
Reference in New Issue
Block a user