diff --git a/Chan.cpp b/Chan.cpp index c603d795..8e94bb58 100644 --- a/Chan.cpp +++ b/Chan.cpp @@ -125,8 +125,17 @@ void CChan::SendBuffer() { } void CChan::DetachUser() { - m_pUser->PutUser(":" + m_pUser->GetIRCNick().GetNickMask() + " PART " + GetName()); - m_bDetached = true; + if (!m_bDetached) { + m_pUser->PutUser(":" + m_pUser->GetIRCNick().GetNickMask() + " PART " + GetName()); + m_bDetached = true; + } +} + +void CChan::AttachUser() { + if (m_bDetached) { + m_pUser->PutUser(":" + m_pUser->GetIRCNick().GetNickMask() + " JOIN " + GetName()); + m_bDetached = false; + } } CString CChan::GetModeString() const { diff --git a/Chan.h b/Chan.h index 18559d45..bbd48306 100644 --- a/Chan.h +++ b/Chan.h @@ -50,6 +50,7 @@ public: void Cycle() const; void JoinUser(bool bForce = false, const CString& sKey = ""); void DetachUser(); + void AttachUser(); void SendBuffer(); void IncClientRequests();