diff options
author | Adam <Adam@anope.org> | 2011-07-14 02:31:12 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2011-07-14 02:31:12 -0400 |
commit | f858164deed48f2dcacd5ffc06a55398a54da7e8 (patch) | |
tree | 89c3cf36bd8e94942370135218d67d6d17ee222e /src/command.cpp | |
parent | 924f6849fee4598a1a3a7f1a98d96b79e5ffd3b4 (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.cpp | 64 |
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; } |