Implement invite-notify

This commit is contained in:
Alexey Sokolov
2025-04-18 22:23:01 +01:00
parent 9ab81d1dad
commit 5befe2f7f8
14 changed files with 95 additions and 16 deletions
+24 -8
View File
@@ -85,6 +85,7 @@ CClient::CClient()
m_bCapNotify(false),
m_bAwayNotify(false),
m_bAccountNotify(false),
m_bInviteNotify(false),
m_bExtendedJoin(false),
m_bNamesx(false),
m_bUHNames(false),
@@ -587,14 +588,25 @@ void CClient::PutClient(const CString& sLine) {
}
bool CClient::PutClient(const CMessage& Message) {
if (!m_bAwayNotify && Message.GetType() == CMessage::Type::Away) {
return false;
} else if (!m_bAccountNotify &&
Message.GetType() == CMessage::Type::Account) {
return false;
} else if (!m_bMessageTagCap &&
Message.GetType() == CMessage::Type::TagMsg) {
return false;
switch (Message.GetType()) {
case CMessage::Type::Away:
if (!m_bAwayNotify) return false;
break;
case CMessage::Type::Account:
if (!m_bAccountNotify) return false;
break;
case CMessage::Type::TagMsg:
if (!m_bMessageTagCap) return false;
break;
case CMessage::Type::Invite:
if (!m_bInviteNotify &&
!CNick(Message.As<CInviteMessage>().GetInvitedNick())
.NickEquals(m_sNick)) {
return false;
}
break;
default:
break;
}
CMessage Msg(Message);
@@ -854,6 +866,10 @@ CClient::CoreCaps() {
[](CClient* pClient, bool bVal) {
pClient->m_bCapNotify = bVal;
}},
{"invite-notify",
[](CClient* pClient, bool bVal) {
pClient->m_bInviteNotify = bVal;
}},
{"chghost", [](CClient* pClient,
bool bVal) { pClient->m_bChgHost = bVal; }},
{"sasl",
+10 -3
View File
@@ -386,6 +386,7 @@ bool CIRCSock::OnCapabilityMessage(CMessage& Message) {
{"multi-prefix", [this](bool bVal) { m_bNamesx = bVal; }},
{"userhost-in-names", [this](bool bVal) { m_bUHNames = bVal; }},
{"cap-notify", [](bool bVal) {}},
{"invite-notify", [](bool bVal) {}},
{"server-time", [this](bool bVal) { m_bServerTime = bVal; }},
{"znc.in/server-time-iso", [this](bool bVal) { m_bServerTime = bVal; }},
{"chghost", [](bool) {}},
@@ -596,10 +597,16 @@ bool CIRCSock::OnErrorMessage(CMessage& Message) {
return true;
}
bool CIRCSock::OnInviteMessage(CMessage& Message) {
bool CIRCSock::OnInviteMessage(CInviteMessage& Message) {
Message.SetChan(GetNetwork()->FindChan(Message.GetChannel()));
bool bResult = false;
IRCSOCKMODULECALL(OnInvite(Message.GetNick(), Message.GetParam(1)),
&bResult);
IRCSOCKMODULECALL(OnInviteMessage(Message), &bResult);
if (bResult) return true;
CNick InvitedNick = Message.GetInvitedNick();
if (InvitedNick.NickEquals(GetNick())) {
IRCSOCKMODULECALL(OnInvite(Message.GetNick(), Message.GetParam(1)),
&bResult);
}
return bResult;
}
+6
View File
@@ -890,6 +890,9 @@ CModule::EModRet CModule::OnPrivTagMessage(CTargetMessage& Message) {
CModule::EModRet CModule::OnChanTagMessage(CTargetMessage& Message) {
return CONTINUE;
}
CModule::EModRet CModule::OnInviteMessage(CInviteMessage& Message) {
return CONTINUE;
}
CModule::EModRet CModule::OnUserJoin(CString& sChannel, CString& sKey) {
return CONTINUE;
}
@@ -1448,6 +1451,9 @@ bool CModules::OnPrivTagMessage(CTargetMessage& Message) {
bool CModules::OnChanTagMessage(CTargetMessage& Message) {
MODHALTCHK(OnChanTagMessage(Message));
}
bool CModules::OnInviteMessage(CInviteMessage& Message) {
MODHALTCHK(OnInviteMessage(Message));
}
bool CModules::OnUserJoin(CString& sChannel, CString& sKey) {
MODHALTCHK(OnUserJoin(sChannel, sKey));
}