/*
* InspIRCd -- Internet Relay Chat Daemon
*
+ * Copyright (C) 2019 Robby <robby@chatbelgie.be>
+ * Copyright (C) 2017-2018 Sadie Powell <sadie@witchery.services>
* Copyright (C) 2016 Attila Molnar <attilamolnar@hush.com>
*
* This file is part of InspIRCd. InspIRCd is free software: you can
#include "inspircd.h"
+#include "modules/away.h"
#define INSPIRCD_MONITOR_MANAGER_ONLY
#include "m_monitor.cpp"
RPL_ENDOFWATCHLIST = 607,
// RPL_CLEARWATCH = 608, // unused
RPL_NOWISAWAY = 609,
- ERR_TOOMANYWATCH = 512
+ ERR_TOOMANYWATCH = 512,
+ ERR_INVALIDWATCHNICK = 942
};
class CommandWatch : public SplitCommand
}
else if (result == IRCv3::Monitor::Manager::WR_INVALIDNICK)
{
- user->WriteNumeric(942, nick, "Invalid nickname");
+ user->WriteNumeric(ERR_INVALIDWATCHNICK, nick, "Invalid nickname");
return;
}
else if (result != IRCv3::Monitor::Manager::WR_OK)
, manager(managerref)
{
allow_empty_last_param = false;
- syntax = "[<C|L|S|l|+<nick1>|-<nick>>]";
+ syntax = "C|L|l|S|(+|-)<nick> [(+|-)<nick>]+";
}
- CmdResult HandleLocal(const std::vector<std::string>& parameters, LocalUser* user) CXX11_OVERRIDE
+ CmdResult HandleLocal(LocalUser* user, const Params& parameters) CXX11_OVERRIDE
{
if (parameters.empty())
{
}
};
-class ModuleWatch : public Module
+class ModuleWatch
+ : public Module
+ , public Away::EventListener
{
IRCv3::Monitor::Manager manager;
CommandWatch cmd;
public:
ModuleWatch()
- : manager(this, "watch")
+ : Away::EventListener(this)
+ , manager(this, "watch")
, cmd(this, manager)
{
}
void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
{
ConfigTag* tag = ServerInstance->Config->ConfValue("watch");
- cmd.maxwatch = tag->getInt("maxwatch", 30, 1);
+ cmd.maxwatch = tag->getUInt("maxwatch", 30, 1);
}
void OnPostConnect(User* user) CXX11_OVERRIDE
Offline(user, user->nick);
}
- ModResult OnSetAway(User* user, const std::string& awaymsg) CXX11_OVERRIDE
+ void OnUserAway(User* user) CXX11_OVERRIDE
{
- if (awaymsg.empty())
- SendAlert(user, user->nick, RPL_NOTAWAY, "is no longer away", ServerInstance->Time());
- else
- SendAlert(user, user->nick, RPL_GONEAWAY, awaymsg.c_str(), user->awaytime);
+ SendAlert(user, user->nick, RPL_GONEAWAY, user->awaymsg.c_str(), user->awaytime);
+ }
- return MOD_RES_PASSTHRU;
+ void OnUserBack(User* user) CXX11_OVERRIDE
+ {
+ SendAlert(user, user->nick, RPL_NOTAWAY, "is no longer away", ServerInstance->Time());
}
void On005Numeric(std::map<std::string, std::string>& tokens) CXX11_OVERRIDE
Version GetVersion() CXX11_OVERRIDE
{
- return Version("Provides WATCH support", VF_VENDOR);
+ return Version("Adds the /WATCH command which allows users to find out when their friends are connected to the server.", VF_VENDOR);
}
};