summaryrefslogtreecommitdiff
path: root/src/command.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-07-14 02:31:12 -0400
committerAdam <Adam@anope.org>2011-07-14 02:31:12 -0400
commitf858164deed48f2dcacd5ffc06a55398a54da7e8 (patch)
tree89c3cf36bd8e94942370135218d67d6d17ee222e /src/command.cpp
parent924f6849fee4598a1a3a7f1a98d96b79e5ffd3b4 (diff)
Rewrote how commands are handled within Anope.
This allows naming commands and having spaces within command names.
Diffstat (limited to 'src/command.cpp')
-rw-r--r--src/command.cpp64
1 files changed, 38 insertions, 26 deletions
diff --git a/src/command.cpp b/src/command.cpp
index f13be6ee5..8803edf05 100644
--- a/src/command.cpp
+++ b/src/command.cpp
@@ -7,6 +7,7 @@
#include "services.h"
#include "modules.h"
+#include "commands.h"
void CommandSource::Reply(const char *message, ...)
{
@@ -42,29 +43,25 @@ void CommandSource::DoReply()
const Anope::string &message = *it;
// Send to the user if the reply is more than one line
- if (!this->fantasy || !this->ci || this->reply.size() > 1)
+ if (!this->c || !this->c->ci || this->reply.size() > 1)
u->SendMessage(this->service, message);
- else if (this->ci->botflags.HasFlag(BS_MSG_PRIVMSG))
- ircdproto->SendPrivmsg(this->service, this->ci->name, message.c_str());
- else if (this->ci->botflags.HasFlag(BS_MSG_NOTICE))
- ircdproto->SendNotice(this->service, this->ci->name, message.c_str());
- else if (this->ci->botflags.HasFlag(BS_MSG_NOTICEOPS))
- ircdproto->SendNoticeChanops(this->service, this->ci->c, message.c_str());
+ else if (this->c->ci->botflags.HasFlag(BS_MSG_PRIVMSG))
+ ircdproto->SendPrivmsg(this->service, this->c->name, message.c_str());
+ else if (this->c->ci->botflags.HasFlag(BS_MSG_NOTICE))
+ ircdproto->SendNotice(this->service, this->c->name, message.c_str());
+ else if (this->c->ci->botflags.HasFlag(BS_MSG_NOTICEOPS))
+ ircdproto->SendNoticeChanops(this->service, this->c, message.c_str());
else
u->SendMessage(this->service, message);
}
}
-Command::Command(const Anope::string &sname, size_t min_params, size_t max_params, const Anope::string &spermission) : Flags<CommandFlag>(CommandFlagStrings), MaxParams(max_params), MinParams(min_params), name(sname), permission(spermission)
+Command::Command(Module *owner, const Anope::string &sname, size_t min_params, size_t max_params, const Anope::string &spermission) : Service(owner, sname), Flags<CommandFlag>(CommandFlagStrings), MaxParams(max_params), MinParams(min_params), permission(spermission), module(owner)
{
- this->module = NULL;
- this->service = NULL;
}
Command::~Command()
{
- if (this->module)
- this->module->DelCommand(this->service, this);
}
void Command::SetDesc(const Anope::string &d)
@@ -72,37 +69,52 @@ void Command::SetDesc(const Anope::string &d)
this->desc = d;
}
-const Anope::string &Command::GetDesc() const
+void Command::ClearSyntax()
{
- return this->desc;
+ this->syntax.clear();
}
-void Command::OnServHelp(CommandSource &source)
+void Command::SetSyntax(const Anope::string &s)
{
- source.Reply(" %-14s %s", this->name.c_str(), translate(source.u, (this->GetDesc().c_str())));
+ this->syntax.push_back(s);
}
-bool Command::OnHelp(CommandSource &source, const Anope::string &subcommand) { return false; }
+void Command::SendSyntax(CommandSource &source)
+{
+ if (!this->syntax.empty())
+ {
+ source.Reply(_("Syntax: \002%s %s\002"), source.command.c_str(), this->syntax[0].c_str());
+ for (unsigned i = 1, j = this->syntax.size(); i < j; ++i)
+ source.Reply(" \002%s %s\002", source.command.c_str(), this->syntax[i].c_str());
+ }
+}
-void Command::OnSyntaxError(CommandSource &source, const Anope::string &subcommand) { }
+void Command::SendSyntax(CommandSource &source, const Anope::string &syntax)
+{
+ source.Reply(_("Syntax: \002%s %s\002"), source.command.c_str(), syntax.c_str());
+ source.Reply(MORE_INFO, Config->UseStrictPrivMsgString.c_str(), source.owner->nick.c_str(), source.command.c_str());
+}
-void Command::SetPermission(const Anope::string &reststr)
+const Anope::string &Command::GetDesc() const
{
- this->permission = reststr;
+ return this->desc;
}
-bool Command::AddSubcommand(Module *creator, Command *c)
+void Command::OnServHelp(CommandSource &source)
{
- return false;
+ source.Reply(" %-14s %s", source.command.c_str(), translate(source.u, (this->GetDesc().c_str())));
}
-bool Command::DelSubcommand(Command *c)
+bool Command::OnHelp(CommandSource &source, const Anope::string &subcommand) { return false; }
+
+void Command::OnSyntaxError(CommandSource &source, const Anope::string &subcommand)
{
- return false;
+ this->SendSyntax(source);
+ source.Reply(MORE_INFO, Config->UseStrictPrivMsgString.c_str(), source.owner->nick.c_str(), source.command.c_str());
}
-Command *Command::FindSubcommand(const Anope::string &subcommand)
+void Command::SetPermission(const Anope::string &reststr)
{
- return NULL;
+ this->permission = reststr;
}