From 977780d8ef8cc2d28690d66eff4292b7d9bbd1a7 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Fri, 9 May 2025 14:47:31 +0100 Subject: Store user away state and add it to the anope.user RPC event. --- modules/protocol/inspircd.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'modules/protocol') diff --git a/modules/protocol/inspircd.cpp b/modules/protocol/inspircd.cpp index 9535778ae..8ea6b7f7a 100644 --- a/modules/protocol/inspircd.cpp +++ b/modules/protocol/inspircd.cpp @@ -1056,17 +1056,22 @@ public: }; struct IRCDMessageAway final - : Message::Away + : IRCDMessage { - IRCDMessageAway(Module *creator) : Message::Away(creator, "AWAY") { SetFlag(FLAG_REQUIRE_USER); } + IRCDMessageAway(Module *creator) + : IRCDMessage(creator, "AWAY") + { + SetFlag(FLAG_REQUIRE_USER); + SetFlag(FLAG_SOFT_LIMIT); + } void Run(MessageSource &source, const std::vector ¶ms, const Anope::map &tags) override { - std::vector newparams(params); - if (newparams.size() > 1) - newparams.erase(newparams.begin()); - - Message::Away::Run(source, newparams, tags); + auto *u = source.GetUser(); + if (params.size() == 2) + u->SetAway(params[1], IRCD->ExtractTimestamp(params[0])); + else + u->SetAway(); } }; -- cgit