1
0
mirror of https://github.com/anope/anope.git synced 2026-06-28 22:16:37 +02:00

Changed cs_status to use new command API.

git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1964 5417fbe8-f217-4b02-8779-1006273d7864
This commit is contained in:
cyberbotx
2009-02-09 23:01:59 +00:00
parent de6a85bdf5
commit fc0deb2181
+53 -49
View File
@@ -15,76 +15,80 @@
#include "module.h"
int do_status(User * u);
void myChanServHelp(User * u);
void myChanServHelp(User *u);
class CommandCSStatus : public Command
{
public:
CommandCSStatus() : Command("STATUS", 2, 2)
{
}
CommandResult Execute(User *u, std::vector<std::string> &params)
{
ChannelInfo *ci;
User *u2;
const char *nick, *chan;
const char *temp = NULL;
chan = params[0].c_str();
nick = params[1].c_str();
if (!(ci = cs_findchan(chan)))
{
temp = chan;
chan = nick;
nick = temp;
ci = cs_findchan(chan);
}
if (!ci)
notice_lang(s_ChanServ, u, CHAN_STATUS_NOT_REGGED, temp);
else if (ci->flags & CI_VERBOTEN)
notice_lang(s_ChanServ, u, CHAN_STATUS_FORBIDDEN, chan);
else if ((u2 = finduser(nick)))
notice_lang(s_ChanServ, u, CHAN_STATUS_INFO, chan, nick, get_access(u2, ci));
else /* !u2 */
notice_lang(s_ChanServ, u, CHAN_STATUS_NOTONLINE, nick);
return MOD_CONT;
}
bool OnHelp(User *u, const std::string &subcommand)
{
if (!is_services_admin(u))
return false;
notice_lang(s_ChanServ, u, CHAN_SERVADMIN_HELP_STATUS);
return true;
}
void OnSyntaxError(User *u)
{
syntax_error(s_ChanServ, u, "STATUS", CHAN_STATUS_SYNTAX);
}
};
class CSStatus : public Module
{
public:
CSStatus(const std::string &modname, const std::string &creator) : Module(modname, creator)
{
Command *c;
this->SetAuthor("Anope");
this->SetVersion("$Id$");
this->SetType(CORE);
c = createCommand("STATUS", do_status, is_services_admin, -1, -1, -1, CHAN_SERVADMIN_HELP_STATUS, CHAN_SERVADMIN_HELP_STATUS);
this->AddCommand(CHANSERV, c, MOD_UNIQUE);
this->AddCommand(CHANSERV, new CommandCSStatus(), MOD_UNIQUE);
this->SetChanHelp(myChanServHelp);
}
};
/**
* Add the help response to anopes /cs help output.
* @param u The user who is requesting help
**/
void myChanServHelp(User * u)
void myChanServHelp(User *u)
{
if (is_services_admin(u)) {
if (is_services_admin(u))
notice_lang(s_ChanServ, u, CHAN_HELP_CMD_STATUS);
}
}
/**
* The /cs status command.
* @param u The user who issued the command
* @param MOD_CONT to continue processing other modules, MOD_STOP to stop processing.
**/
int do_status(User * u)
{
ChannelInfo *ci;
User *u2;
char *nick, *chan;
char *temp = NULL;
chan = strtok(NULL, " ");
nick = strtok(NULL, " ");
if (!nick || strtok(NULL, " ")) {
notice_lang(s_ChanServ, u, CHAN_STATUS_SYNTAX);
return MOD_CONT;
}
if (!(ci = cs_findchan(chan))) {
temp = chan;
chan = nick;
nick = temp;
ci = cs_findchan(chan);
}
if (!ci) {
notice_lang(s_ChanServ, u, CHAN_STATUS_NOT_REGGED, temp);
} else if (ci->flags & CI_VERBOTEN) {
notice_lang(s_ChanServ, u, CHAN_STATUS_FORBIDDEN, chan);
return MOD_CONT;
} else if ((u2 = finduser(nick)) != NULL) {
notice_lang(s_ChanServ, u, CHAN_STATUS_INFO, chan, nick,
get_access(u2, ci));
} else { /* !u2 */
notice_lang(s_ChanServ, u, CHAN_STATUS_NOTONLINE, nick);
}
return MOD_CONT;
}
MODULE_INIT("cs_status", CSStatus)