summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/ctables.h12
-rw-r--r--src/command_parse.cpp6
-rw-r--r--src/commands.cpp11
3 files changed, 25 insertions, 4 deletions
diff --git a/include/ctables.h b/include/ctables.h
index a3fcdfbd4..22c0ef67e 100644
--- a/include/ctables.h
+++ b/include/ctables.h
@@ -236,6 +236,18 @@ class CoreExport Command : public CommandBase
/** Registers this command with the command parser. */
void RegisterService() CXX11_OVERRIDE;
+
+ /** Tells the user they did not specify enough parameters.
+ * @param user The user who issued the command.
+ * @param parameters The parameters for the command.
+ */
+ virtual void TellNotEnoughParameters(LocalUser* user, const Params& parameters);
+
+ /** Tells the user they need to be registered to execute this command.
+ * @param user The user who issued the command.
+ * @param parameters The parameters for the command.
+ */
+ virtual void TellNotRegistered(LocalUser* user, const Params& parameters);
};
class CoreExport SplitCommand : public Command
diff --git a/src/command_parse.cpp b/src/command_parse.cpp
index c4e55c3ca..717431087 100644
--- a/src/command_parse.cpp
+++ b/src/command_parse.cpp
@@ -283,9 +283,7 @@ void CommandParser::ProcessCommand(LocalUser* user, std::string& command, Comman
if (command_p.size() < handler->min_params)
{
user->CommandFloodPenalty += failpenalty;
- user->WriteNumeric(ERR_NEEDMOREPARAMS, command, "Not enough parameters.");
- if ((ServerInstance->Config->SyntaxHints) && (user->registered == REG_ALL) && (handler->syntax.length()))
- user->WriteNumeric(RPL_SYNTAX, handler->name, handler->syntax);
+ handler->TellNotEnoughParameters(user, command_p);
FOREACH_MOD(OnCommandBlocked, (command, command_p, user));
return;
}
@@ -293,7 +291,7 @@ void CommandParser::ProcessCommand(LocalUser* user, std::string& command, Comman
if ((user->registered != REG_ALL) && (!handler->works_before_reg))
{
user->CommandFloodPenalty += failpenalty;
- user->WriteNumeric(ERR_NOTREGISTERED, command, "You have not registered");
+ handler->TellNotRegistered(user, command_p);
FOREACH_MOD(OnCommandBlocked, (command, command_p, user));
}
else
diff --git a/src/commands.cpp b/src/commands.cpp
index 8343cfaac..d1746bc5f 100644
--- a/src/commands.cpp
+++ b/src/commands.cpp
@@ -66,6 +66,17 @@ void Command::RegisterService()
throw ModuleException("Command already exists: " + name);
}
+void Command::TellNotEnoughParameters(LocalUser* user, const Params& parameters)
+{
+ user->WriteNumeric(ERR_NEEDMOREPARAMS, name, "Not enough parameters.");
+ if (ServerInstance->Config->SyntaxHints && user->registered == REG_ALL && syntax.length())
+ user->WriteNumeric(RPL_SYNTAX, name, syntax);
+}
+
+void Command::TellNotRegistered(LocalUser* user, const Params& parameters)
+{
+ user->WriteNumeric(ERR_NOTREGISTERED, name, "You have not registered.");
+}
SplitCommand::SplitCommand(Module* me, const std::string& cmd, unsigned int minpara, unsigned int maxpara)
: Command(me, cmd, minpara, maxpara)