Ejemplo n.º 1
0
bool CClient::OnModeMessage(CModeMessage& Message)
{
	CString sTarget = Message.GetTarget();
	CString sModes = Message.GetModes();

	bool bReturn = false;
	NETWORKMODULECALL(OnUserModeMessage(Message), m_pUser, m_pNetwork, this, &bReturn);
	if (bReturn) return true;

	if (m_pNetwork && m_pNetwork->IsChan(sTarget) && sModes.empty()) {
		// If we are on that channel and already received a
		// /mode reply from the server, we can answer this
		// request ourself.

		CChan *pChan = m_pNetwork->FindChan(sTarget);
		if (pChan && pChan->IsOn() && !pChan->GetModeString().empty()) {
			PutClient(":" + m_pNetwork->GetIRCServer() + " 324 " + GetNick() + " " + sTarget + " " + pChan->GetModeString());
			if (pChan->GetCreationDate() > 0) {
				PutClient(":" + m_pNetwork->GetIRCServer() + " 329 " + GetNick() + " " + sTarget + " " + CString(pChan->GetCreationDate()));
			}
			return true;
		}
	}

	return false;
}