kickrejoin: Modernize and add test.

This commit is contained in:
RealKindOne authored and Alexey Sokolov committed 2026-09-13 11:27:31 +01:00
1 parent ec49f11be6
commit 9dbf062d87
2 files changed
+23 -5

No files matched your search

+6 -5
View File
@@ -109,15 +109,16 @@ class CRejoinMod : public CModule {
PutModule(t_s("Rejoin delay is disabled"));
}
void OnKick(const CNick& OpNick, const CString& sKickedNick, CChan& pChan,
const CString& sMessage) override {
void OnKickMessage(CKickMessage& Message) override {
const CString sKickedNick = Message.GetKickedNick();
CChan& Channel = *Message.GetChan();
if (GetNetwork()->GetCurNick().Equals(sKickedNick)) {
if (!delay) {
PutIRC("JOIN " + pChan.GetName() + " " + pChan.GetKey());
pChan.Enable();
PutIRC("JOIN " + Channel.GetName() + " " + Channel.GetKey());
Channel.Enable();
return;
}
AddTimer(new CRejoinJob(this, delay, 1, "Rejoin " + pChan.GetName(),
AddTimer(new CRejoinJob(this, delay, 1, "Rejoin " + Channel.GetName(),
"Rejoin channel after a delay"));
}
}
+17
View File
@@ -911,5 +911,22 @@ TEST_F(ZNCTest, FloodDetachModule) {
client.ReadUntil("Channel #test-ctcp was flooded");
}
TEST_F(ZNCTest, KickRejoinModule) {
auto znc = Run();
auto ircd = ConnectIRCd();
auto client = LoginClient();
client.Write("znc loadmod kickrejoin");
client.ReadUntil("Loaded module");
ircd.Write(":server 001 nick :Hello");
ircd.Write(":nick JOIN :#test");
ircd.Write(":server 353 nick = #test :nick @foobar");
ircd.Write(":server 366 nick #test :End of /NAMES list");
ircd.Write(":foobar!user@host KICK #test nick :Kicked!");
ircd.ReadUntil("JOIN #test");
}
} // namespace
} // namespace znc_inttest