summaryrefslogtreecommitdiff
path: root/modules/protocol/unrealircd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/protocol/unrealircd.cpp')
-rw-r--r--modules/protocol/unrealircd.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/modules/protocol/unrealircd.cpp b/modules/protocol/unrealircd.cpp
index 7e37e1f27..4a2b881a0 100644
--- a/modules/protocol/unrealircd.cpp
+++ b/modules/protocol/unrealircd.cpp
@@ -59,7 +59,7 @@ public:
CanSQLineChannel = true;
CanSZLine = true;
CanSVSHold = true;
- CanClearBans = true;
+ CanClearModes.insert("BAN");
CanCertFP = true;
CanTagMessage = true;
RequiresID = true;
@@ -456,9 +456,13 @@ private:
return true;
}
- void SendClearBans(const MessageSource &user, Channel *c, User* u) override
+ void SendClearModes(const MessageSource &user, Channel *c, User* u, const Anope::string &mode) override
{
- Uplink::Send(user, "SVS2MODE", c->name, "-b", u->GetUID());
+ auto *cm = ModeManager::FindChannelModeByName(mode);
+ if (!cm || !cm->mchar)
+ return;
+
+ Uplink::Send(user, "SVS2MODE", c->name, Anope::printf("-%c", cm->mchar), u->GetUID());
}
bool IsTagValid(const Anope::string &tname, const Anope::string &tvalue) override