mirror of
https://github.com/anope/anope.git
synced 2026-07-04 09:23:13 +02:00
Merged os_umode into os_mode
This commit is contained in:
+34
-14
@@ -18,43 +18,63 @@ class CommandOSMode : public Command
|
||||
public:
|
||||
CommandOSMode() : Command("MODE", 2, 2, "operserv/mode")
|
||||
{
|
||||
this->SetDesc("Change a channel's modes");
|
||||
this->SetDesc("Change channel or user modes");
|
||||
}
|
||||
|
||||
CommandReturn Execute(CommandSource &source, const std::vector<Anope::string> ¶ms)
|
||||
{
|
||||
User *u = source.u;
|
||||
const Anope::string &chan = params[0];
|
||||
const Anope::string &target = params[0];
|
||||
const Anope::string &modes = params[1];
|
||||
Channel *c;
|
||||
|
||||
if (!(c = findchan(chan)))
|
||||
source.Reply(LanguageString::CHAN_X_NOT_IN_USE, chan.c_str());
|
||||
else if (c->bouncy_modes)
|
||||
source.Reply(_("Services is unable to change modes. Are your servers' U:lines configured correctly?"));
|
||||
if (target[0] == '#')
|
||||
{
|
||||
Channel *c = findchan(target);
|
||||
if (!c)
|
||||
source.Reply(LanguageString::CHAN_X_NOT_IN_USE, target.c_str());
|
||||
else if (c->bouncy_modes)
|
||||
source.Reply(_("Services is unable to change modes. Are your servers' U:lines configured correctly?"));
|
||||
else
|
||||
{
|
||||
c->SetModes(OperServ, false, modes.c_str());
|
||||
|
||||
if (Config->WallOSMode)
|
||||
ircdproto->SendGlobops(OperServ, "\2%s\2 used MODE %s on %s", u->nick.c_str(), modes.c_str(), c->name.c_str());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
c->SetModes(OperServ, false, modes.c_str());
|
||||
User *u2 = finduser(target);
|
||||
if (!u2)
|
||||
source.Reply(LanguageString::NICK_X_NOT_IN_USE, target.c_str());
|
||||
else
|
||||
{
|
||||
u2->SetModes(OperServ, "%s", modes.c_str());
|
||||
source.Reply(_("Changed usermodes of \002%s\002 to %s."), u2->nick.c_str(), modes.c_str());
|
||||
|
||||
if (Config->WallOSMode)
|
||||
ircdproto->SendGlobops(OperServ, "%s used MODE %s on %s", u->nick.c_str(), modes.c_str(), chan.c_str());
|
||||
u2->SendMessage(OperServ, _("\002%s\002 changed your usermodes to %s."), u->nick.c_str(), modes.c_str());
|
||||
|
||||
if (Config->WallOSMode)
|
||||
ircdproto->SendGlobops(OperServ, "\2%s\2 used MODE %s %s", u->nick.c_str(), modes.c_str(), u2->nick.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
return MOD_CONT;
|
||||
}
|
||||
|
||||
bool OnHelp(CommandSource &source, const Anope::string &subcommand)
|
||||
{
|
||||
source.Reply(_("Syntax: \002MODE \037channel\037 \037modes\037\002\n"
|
||||
source.Reply(_("Syntax: \002MODE {\037channel\037|\037user\037} \037modes\037\002\n"
|
||||
" \n"
|
||||
"Allows Services operators to set channel modes for any\n"
|
||||
"channel. Parameters are the same as for the standard /MODE\n"
|
||||
"Allows Services operators to change modes for any channel or\n"
|
||||
"user. Parameters are the same as for the standard /MODE\n"
|
||||
"command."));
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnSyntaxError(CommandSource &source, const Anope::string &subcommand)
|
||||
{
|
||||
SyntaxError(source, "MODE", _("MODE \037channel\037 \037modes\037"));
|
||||
SyntaxError(source, "MODE", _("MODE {\037channel\037|\037user\037} \037modes\037"));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user