summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/botserv/assign.cpp2
-rw-r--r--modules/botserv/bot.cpp3
-rw-r--r--modules/botserv/info.cpp5
-rw-r--r--modules/botserv/kick.cpp28
-rw-r--r--modules/botserv/set.cpp2
-rw-r--r--modules/chanserv/access.cpp39
-rw-r--r--modules/chanserv/akick.cpp2
-rw-r--r--modules/chanserv/clone.cpp2
-rw-r--r--modules/chanserv/entrymsg.cpp37
-rw-r--r--modules/chanserv/flags.cpp4
-rw-r--r--modules/chanserv/kick.cpp2
-rw-r--r--modules/chanserv/list.cpp2
-rw-r--r--modules/chanserv/log.cpp4
-rw-r--r--modules/chanserv/main/chanserv.cpp2
-rw-r--r--modules/chanserv/mode.cpp86
-rw-r--r--modules/chanserv/register.cpp2
-rw-r--r--modules/chanserv/set.cpp24
-rw-r--r--modules/chanserv/status.cpp8
-rw-r--r--modules/chanserv/statusupdate.cpp63
-rw-r--r--modules/chanserv/topic.cpp25
-rw-r--r--modules/chanserv/unban.cpp1
-rw-r--r--modules/chanserv/updown.cpp201
-rw-r--r--modules/chanserv/xop.cpp2
-rw-r--r--modules/hostserv/add.cpp2
-rw-r--r--modules/hostserv/list.cpp2
-rw-r--r--modules/hostserv/request.cpp2
-rw-r--r--modules/memoserv/del.cpp2
-rw-r--r--modules/memoserv/ignore.cpp2
-rw-r--r--modules/memoserv/info.cpp8
-rw-r--r--modules/memoserv/list.cpp2
-rw-r--r--modules/memoserv/main/memoserv.cpp10
-rw-r--r--modules/memoserv/read.cpp3
-rw-r--r--modules/memoserv/send.cpp6
-rw-r--r--modules/memoserv/set.cpp12
-rw-r--r--modules/nickserv/access.cpp6
-rw-r--r--modules/nickserv/cert.cpp2
-rw-r--r--modules/nickserv/main/nickserv.cpp5
-rw-r--r--modules/nickserv/recover.cpp2
-rw-r--r--modules/nickserv/register.cpp4
-rw-r--r--modules/nickserv/resetpass.cpp2
-rw-r--r--modules/nickserv/set.cpp13
-rw-r--r--modules/nickserv/status.cpp2
-rw-r--r--modules/operserv/akill.cpp7
-rw-r--r--modules/operserv/config.cpp2
-rw-r--r--modules/operserv/dns.cpp2
-rw-r--r--modules/operserv/ignore.cpp4
-rw-r--r--modules/operserv/jupe.cpp39
-rw-r--r--modules/operserv/kill.cpp23
-rw-r--r--modules/operserv/logsearch.cpp6
-rw-r--r--modules/operserv/mode.cpp14
-rw-r--r--modules/operserv/modinfo.cpp51
-rw-r--r--modules/operserv/module.cpp10
-rw-r--r--modules/operserv/noop.cpp14
-rw-r--r--modules/operserv/oline.cpp4
-rw-r--r--modules/operserv/oper.cpp8
-rw-r--r--modules/operserv/set.cpp31
-rw-r--r--modules/operserv/shutdown.cpp3
-rw-r--r--modules/operserv/svs.cpp92
-rw-r--r--modules/operserv/sxline.cpp14
-rw-r--r--modules/operserv/update.cpp1
60 files changed, 636 insertions, 322 deletions
diff --git a/modules/botserv/assign.cpp b/modules/botserv/assign.cpp
index a26b869fe..95691b6a9 100644
--- a/modules/botserv/assign.cpp
+++ b/modules/botserv/assign.cpp
@@ -207,7 +207,9 @@ class CommandBSSetNoBot : public Command
source.Reply(_("No-bot mode is now \002off\002 for \002{0}\002."), ci->GetName());
}
else
+ {
this->OnSyntaxError(source, source.command);
+ }
}
bool OnHelp(CommandSource &source, const Anope::string &) override
diff --git a/modules/botserv/bot.cpp b/modules/botserv/bot.cpp
index 2e33b7ccb..30550df56 100644
--- a/modules/botserv/bot.cpp
+++ b/modules/botserv/bot.cpp
@@ -216,6 +216,7 @@ class CommandBSBot : public Command
return;
}
+#warning "xline on the stack"
/* The new nick is really different, so we remove the Q line for the old nick. */
//XLine x_del(bi->nick);
//IRCD->SendSQLineDel(&x_del);
@@ -373,7 +374,9 @@ class CommandBSBot : public Command
this->DoDel(source, params);
}
else
+ {
this->OnSyntaxError(source, "");
+ }
}
bool OnHelp(CommandSource &source, const Anope::string &subcommand) override
diff --git a/modules/botserv/info.cpp b/modules/botserv/info.cpp
index 4de86643f..bc4db8b0f 100644
--- a/modules/botserv/info.cpp
+++ b/modules/botserv/info.cpp
@@ -76,9 +76,6 @@ class CommandBSInfo : public Command
source.Reply(_("Information for channel \002{0}\002:"), ci->GetName());
info[_("Bot nick")] = ci->GetBot() ? ci->GetBot()->nick : _("not assigned yet");
- Anope::string enabled = Language::Translate(source.nc, _("Enabled"));
- Anope::string disabled = Language::Translate(source.nc, _("Disabled"));
-
EventManager::Get()->Dispatch(&Event::ServiceBotEvent::OnServiceBot, source, bi, ci, info);
std::vector<Anope::string> replies;
@@ -88,7 +85,9 @@ class CommandBSInfo : public Command
source.Reply(replies[i]);
}
else
+ {
source.Reply(_("\002{0}\002 is not a valid bot or registered channel."), query);
+ }
}
bool OnHelp(CommandSource &source, const Anope::string &subcommand) override
diff --git a/modules/botserv/kick.cpp b/modules/botserv/kick.cpp
index 1b9d67fc7..4411ee4ed 100644
--- a/modules/botserv/kick.cpp
+++ b/modules/botserv/kick.cpp
@@ -898,7 +898,9 @@ class CommandBSKickFlood : public CommandBSKickBase
source.Reply(_("Bot won't kick for \002flood\002 anymore."));
}
else
+ {
this->OnSyntaxError(source, params[1]);
+ }
}
bool OnHelp(CommandSource &source, const Anope::string &subcommand) override
@@ -998,7 +1000,9 @@ class CommandBSKickRepeat : public CommandBSKickBase
source.Reply(_("Bot won't kick for \002repeats\002 anymore."));
}
else
+ {
this->OnSyntaxError(source, params[1]);
+ }
}
bool OnHelp(CommandSource &source, const Anope::string &subcommand) override
@@ -1110,7 +1114,9 @@ class CommandBSSetDontKickOps : public Command
source.Reply(_("Bot \002will kick ops\002 on channel \002{0}\002."), ci->GetName());
}
else
+ {
this->OnSyntaxError(source, source.command);
+ }
}
bool OnHelp(CommandSource &source, const Anope::string &) override
@@ -1174,7 +1180,9 @@ class CommandBSSetDontKickVoices : public Command
source.Reply(_("Bot \002will kick voices\002 on channel %s."), ci->GetName().c_str());
}
else
+ {
this->OnSyntaxError(source, source.command);
+ }
}
bool OnHelp(CommandSource &source, const Anope::string &) override
@@ -1402,7 +1410,9 @@ class BSKick : public Module
info[_("Bad words kicker")] = enabled;
}
else
+ {
info[_("Bad words kicker")] = disabled;
+ }
if (kd && kd->GetBolds())
{
@@ -1412,7 +1422,9 @@ class BSKick : public Module
info[_("Bolds kicker")] = enabled;
}
else
+ {
info[_("Bolds kicker")] = disabled;
+ }
if (kd && kd->GetCaps())
{
@@ -1422,7 +1434,9 @@ class BSKick : public Module
info[_("Caps kicker")] = Anope::printf(_("%s (minimum %d/%d%%)"), enabled.c_str(), kd->GetCapsMin(), kd->GetCapsPercent());
}
else
+ {
info[_("Caps kicker")] = disabled;
+ }
if (kd && kd->GetColors())
{
@@ -1432,7 +1446,9 @@ class BSKick : public Module
info[_("Colors kicker")] = enabled;
}
else
+ {
info[_("Colors kicker")] = disabled;
+ }
if (kd && kd->GetFlood())
{
@@ -1442,7 +1458,9 @@ class BSKick : public Module
info[_("Flood kicker")] = Anope::printf(_("%s (%d lines in %ds)"), enabled.c_str(), kd->GetFloodLines(), kd->GetFloodSecs());
}
else
+ {
info[_("Flood kicker")] = disabled;
+ }
if (kd && kd->GetRepeat())
{
@@ -1452,7 +1470,9 @@ class BSKick : public Module
info[_("Repeat kicker")] = Anope::printf(_("%s (%d times)"), enabled.c_str(), kd->GetRepeatTimes());
}
else
+ {
info[_("Repeat kicker")] = disabled;
+ }
if (kd && kd->GetReverses())
{
@@ -1462,7 +1482,9 @@ class BSKick : public Module
info[_("Reverses kicker")] = enabled;
}
else
+ {
info[_("Reverses kicker")] = disabled;
+ }
if (kd && kd->GetUnderlines())
{
@@ -1472,7 +1494,9 @@ class BSKick : public Module
info[_("Underlines kicker")] = enabled;
}
else
+ {
info[_("Underlines kicker")] = disabled;
+ }
if (kd && kd->GetItalics())
{
@@ -1482,7 +1506,9 @@ class BSKick : public Module
info[_("Italics kicker")] = enabled;
}
else
+ {
info[_("Italics kicker")] = disabled;
+ }
if (kd && kd->GetAmsgs())
{
@@ -1492,7 +1518,9 @@ class BSKick : public Module
info[_("AMSG kicker")] = enabled;
}
else
+ {
info[_("AMSG kicker")] = disabled;
+ }
if (kd && kd->GetDontKickOps())
info.AddOption(_("Ops protection"));
diff --git a/modules/botserv/set.cpp b/modules/botserv/set.cpp
index bb432e3f0..6ab429d97 100644
--- a/modules/botserv/set.cpp
+++ b/modules/botserv/set.cpp
@@ -191,7 +191,9 @@ class CommandBSSetPrivate : public Command
source.Reply(_("Private mode of bot \002{0}\002 is now \002off\002."), bi->nick);
}
else
+ {
this->OnSyntaxError(source, source.command);
+ }
}
bool OnHelp(CommandSource &source, const Anope::string &) override
diff --git a/modules/chanserv/access.cpp b/modules/chanserv/access.cpp
index ba9f2b5fb..82a11831f 100644
--- a/modules/chanserv/access.cpp
+++ b/modules/chanserv/access.cpp
@@ -656,30 +656,31 @@ class CommandCSLevels : public Command
}
if (level <= ChanServ::ACCESS_INVALID || level > ChanServ::ACCESS_FOUNDER)
+ {
source.Reply(_("Level must be between \002{0}\002 and \002{1}\002 inclusive."), ChanServ::ACCESS_INVALID + 1, ChanServ::ACCESS_FOUNDER - 1);
+ return;
+ }
+
+ ChanServ::Privilege *p = ChanServ::service ? ChanServ::service->FindPrivilege(what) : nullptr;
+ if (p == NULL)
+ {
+ CommandInfo *help = source.service->FindCommand("generic/help");
+ if (help)
+ source.Reply(_("There is no such privilege \002{0}\002. See \002{0}{1} {2} {3}\002 for a list of valid settings."),
+ what, Config->StrictPrivmsg, source.service->nick, help->cname, source.command);
+ }
else
{
- ChanServ::Privilege *p = ChanServ::service ? ChanServ::service->FindPrivilege(what) : nullptr;
- if (p == NULL)
- {
- CommandInfo *help = source.service->FindCommand("generic/help");
- if (help)
- source.Reply(_("There is no such privilege \002{0}\002. See \002{0}{1} {2} {3}\002 for a list of valid settings."),
- what, Config->StrictPrivmsg, source.service->nick, help->cname, source.command);
- }
- else
- {
- bool override = !source.AccessFor(ci).HasPriv("FOUNDER");
- Log(override ? LOG_OVERRIDE : LOG_COMMAND, source, this, ci) << "to set " << p->name << " to level " << level;
+ bool override = !source.AccessFor(ci).HasPriv("FOUNDER");
+ Log(override ? LOG_OVERRIDE : LOG_COMMAND, source, this, ci) << "to set " << p->name << " to level " << level;
- ci->SetLevel(p->name, level);
- EventManager::Get()->Dispatch(&Event::LevelChange::OnLevelChange, source, ci, p->name, level);
+ ci->SetLevel(p->name, level);
+ EventManager::Get()->Dispatch(&Event::LevelChange::OnLevelChange, source, ci, p->name, level);
- if (level == ChanServ::ACCESS_FOUNDER)
- source.Reply(_("Level for privilege \002{0}\002 on channel \002{1}\002 changed to \002founder only\002."), p->name, ci->GetName());
- else
- source.Reply(_("Level for privilege \002{0}\002 on channel \002{1}\002 changed to \002{3}\002."), p->name, ci->GetName(), level);
- }
+ if (level == ChanServ::ACCESS_FOUNDER)
+ source.Reply(_("Level for privilege \002{0}\002 on channel \002{1}\002 changed to \002founder only\002."), p->name, ci->GetName());
+ else
+ source.Reply(_("Level for privilege \002{0}\002 on channel \002{1}\002 changed to \002{3}\002."), p->name, ci->GetName(), level);
}
}
diff --git a/modules/chanserv/akick.cpp b/modules/chanserv/akick.cpp
index ff7fb5b69..d253d6fb5 100644
--- a/modules/chanserv/akick.cpp
+++ b/modules/chanserv/akick.cpp
@@ -205,7 +205,9 @@ class CommandCSAKick : public Command
mask += "#" + e.real;
}
else
+ {
nc = na->GetAccount();
+ }
/* Check excepts BEFORE we get this far */
if (ci->c)
diff --git a/modules/chanserv/clone.cpp b/modules/chanserv/clone.cpp
index 96aa89bf4..8d0c1ce3a 100644
--- a/modules/chanserv/clone.cpp
+++ b/modules/chanserv/clone.cpp
@@ -90,7 +90,9 @@ public:
return;
}
else
+ {
override = true;
+ }
}
if (what.equals_ci("ALL"))
diff --git a/modules/chanserv/entrymsg.cpp b/modules/chanserv/entrymsg.cpp
index b607ba399..4f74834bd 100644
--- a/modules/chanserv/entrymsg.cpp
+++ b/modules/chanserv/entrymsg.cpp
@@ -161,27 +161,32 @@ class CommandEntryMessage : public Command
std::vector<EntryMsg *> messages = ci->GetRefs<EntryMsg *>();
if (!message.is_pos_number_only())
+ {
source.Reply(("Entry message \002{0}\002 not found on channel \002{1}\002."), message, ci->GetName());
- else if (messages.empty())
+ return;
+ }
+
+ if (messages.empty())
+ {
source.Reply(_("Entry message list for \002{0}\002 is empty."), ci->GetName());
- else
+ return;
+ }
+
+ try
{
- try
+ unsigned i = convertTo<unsigned>(message);
+ if (i > 0 && i <= messages.size())
{
- unsigned i = convertTo<unsigned>(message);
- if (i > 0 && i <= messages.size())
- {
- messages[i - 1]->Delete();
- Log(source.AccessFor(ci).HasPriv("SET") ? LOG_COMMAND : LOG_OVERRIDE, source, this, ci) << "to remove a message";
- source.Reply(_("Entry message \002{0}\002 for \002{1]\002 deleted."), i, ci->GetName());
- }
- else
- throw ConvertException();
- }
- catch (const ConvertException &)
- {
- source.Reply(_("Entry message \002{0}\002 not found on channel \002{1}\002."), message, ci->GetName());
+ messages[i - 1]->Delete();
+ Log(source.AccessFor(ci).HasPriv("SET") ? LOG_COMMAND : LOG_OVERRIDE, source, this, ci) << "to remove a message";
+ source.Reply(_("Entry message \002{0}\002 for \002{1]\002 deleted."), i, ci->GetName());
}
+ else
+ throw ConvertException();
+ }
+ catch (const ConvertException &)
+ {
+ source.Reply(_("Entry message \002{0}\002 not found on channel \002{1}\002."), message, ci->GetName());
}
}
diff --git a/modules/chanserv/flags.cpp b/modules/chanserv/flags.cpp
index 732e3aa8a..446eeddd0 100644
--- a/modules/chanserv/flags.cpp
+++ b/modules/chanserv/flags.cpp
@@ -431,9 +431,13 @@ class CommandCSFlags : public Command
}
if (is_list)
+ {
this->DoList(source, ci, params);
+ }
else if (cmd.equals_ci("CLEAR"))
+ {
this->DoClear(source, ci);
+ }
else
{
Anope::string mask, flags;
diff --git a/modules/chanserv/kick.cpp b/modules/chanserv/kick.cpp
index 0fd8979d4..4752d5940 100644
--- a/modules/chanserv/kick.cpp
+++ b/modules/chanserv/kick.cpp
@@ -132,7 +132,9 @@ class CommandCSKick : public Command
source.Reply(_("No users on\002{0}\002 match \002{1}\002."), c->name, mask);
}
else
+ {
source.Reply(_("\002{0}\002 isn't currently in use."), target);
+ }
}
bool OnHelp(CommandSource &source, const Anope::string &subcommand) override
diff --git a/modules/chanserv/list.cpp b/modules/chanserv/list.cpp
index 75ffdb67c..c76d8661c 100644
--- a/modules/chanserv/list.cpp
+++ b/modules/chanserv/list.cpp
@@ -227,7 +227,9 @@ class CommandCSSetPrivate : public Command
source.Reply(_("Private option for \002{0}\002 is now \002off\002."), ci->GetName());
}
else
+ {
this->OnSyntaxError(source, "PRIVATE");
+ }
}
bool OnHelp(CommandSource &source, const Anope::string &) override
diff --git a/modules/chanserv/log.cpp b/modules/chanserv/log.cpp
index b20427bc0..32025e6b0 100644
--- a/modules/chanserv/log.cpp
+++ b/modules/chanserv/log.cpp
@@ -316,7 +316,9 @@ public:
source.Reply(_("Logging is now active for command \002{0}\002 on \002{1}\002, using log method \002{2}{3}{4}\002."), !command_name.empty() ? command_name : service_name, bi ? bi->nick : "any service", method, extra.empty() ? "" : " ", extra);
}
else
+ {
this->OnSyntaxError(source, "");
+ }
}
bool OnHelp(CommandSource &source, const Anope::string &subcommand) override
@@ -406,7 +408,9 @@ class CSLog : public Module
log->SetCommandName(d.command);
}
else
+ {
log->SetServiceName(d.command);
+ }
spacesepstream sep(d.method);
Anope::string method, extra;
diff --git a/modules/chanserv/main/chanserv.cpp b/modules/chanserv/main/chanserv.cpp
index dc44173a0..59181e806 100644
--- a/modules/chanserv/main/chanserv.cpp
+++ b/modules/chanserv/main/chanserv.cpp
@@ -256,7 +256,9 @@ class ChanServCore : public Module
defaults.push_back("SIGNKICK");
}
else if (defaults[0].equals_ci("none"))
+ {
defaults.clear();
+ }
always_lower = conf->GetModule(this)->Get<bool>("always_lower_ts");
}
diff --git a/modules/chanserv/mode.cpp b/modules/chanserv/mode.cpp
index 4ff1ce1d3..7a9fd38d6 100644
--- a/modules/chanserv/mode.cpp
+++ b/modules/chanserv/mode.cpp
@@ -323,7 +323,8 @@ class CommandCSMode : public Command
source.Reply(_("Unknown mode character \002{0}\002 ignored."), modes[i]);
break;
}
- else if (u && !cm->CanSet(u))
+
+ if (u && !cm->CanSet(u))
{
source.Reply(_("You may not (un)lock mode \002{0}\002."), modes[i]);
break;
@@ -331,27 +332,36 @@ class CommandCSMode : public Command
Anope::string mode_param;
if (((cm->type == MODE_STATUS || cm->type == MODE_LIST) && !sep.GetToken(mode_param)) || (cm->type == MODE_PARAM && adding && !sep.GetToken(mode_param)))
+ {
source.Reply(_("Missing parameter for mode \002{0}\002."), cm->mchar);
- else if (cm->type == MODE_LIST && ci->c && IRCD->GetMaxListFor(ci->c) && ci->c->HasMode(cm->name) >= IRCD->GetMaxListFor(ci->c))
+ break;
+ }
+
+ if (cm->type == MODE_LIST && ci->c && IRCD->GetMaxListFor(ci->c) && ci->c->HasMode(cm->name) >= IRCD->GetMaxListFor(ci->c))
+ {
source.Reply(_("List for mode \002{0}\002 is full."), cm->mchar);
- else if (ci->GetRefs<ModeLock *>().size() >= Config->GetModule(this->GetOwner())->Get<unsigned>("max", "32"))
+ break;
+ }
+
+ if (ci->GetRefs<ModeLock *>().size() >= Config->GetModule(this->GetOwner())->Get<unsigned>("max", "32"))
+ {
source.Reply(_("The mode lock list of \002{0}\002 is full."), ci->GetName());
+ break;
+ }
+
+ mlocks->SetMLock(ci, cm, adding, mode_param, source.GetNick());
+
+ if (adding)
+ {
+ pos += cm->mchar;
+ if (!mode_param.empty())
+ pos_params += " " + mode_param;
+ }
else
{
- mlocks->SetMLock(ci, cm, adding, mode_param, source.GetNick());
-
- if (adding)
- {
- pos += cm->mchar;
- if (!mode_param.empty())
- pos_params += " " + mode_param;
- }
- else
- {
- neg += cm->mchar;
- if (!mode_param.empty())
- neg_params += " " + mode_param;
- }
+ neg += cm->mchar;
+ if (!mode_param.empty())
+ neg_params += " " + mode_param;
}
}
}
@@ -368,7 +378,9 @@ class CommandCSMode : public Command
Log(override ? LOG_OVERRIDE : LOG_COMMAND, source, this, ci) << "to lock " << reply;
}
else if (needreply)
+ {
source.Reply(_("Nothing to do."));
+ }
if (ci->c)
ci->c->CheckModes();
@@ -400,7 +412,8 @@ class CommandCSMode : public Command
source.Reply(_("Unknown mode character \002{0}\002 ignored."), modes[i]);
break;
}
- else if (u && !cm->CanSet(u))
+
+ if (u && !cm->CanSet(u))
{
source.Reply(_("You may not (un)lock mode \002{0}\002."), modes[i]);
break;
@@ -408,18 +421,21 @@ class CommandCSMode : public Command
Anope::string mode_param;
if (cm->type != MODE_REGULAR && !sep.GetToken(mode_param))
+ {
source.Reply(_("Missing parameter for mode \002{0}\002."), cm->mchar);
+ break;
+ }
+
+ if (mlocks->RemoveMLock(ci, cm, adding, mode_param))
+ {
+ if (!mode_param.empty())
+ mode_param = " " + mode_param;
+ source.Reply(_("\002{0}{1}{2}\002 has been unlocked from \002{3}\002."), adding == 1 ? '+' : '-', cm->mchar, mode_param, ci->GetName());
+ Log(override ? LOG_OVERRIDE : LOG_COMMAND, source, this, ci) << "to unlock " << (adding ? '+' : '-') << cm->mchar << mode_param;
+ }
else
{
- if (mlocks->RemoveMLock(ci, cm, adding, mode_param))
- {
- if (!mode_param.empty())
- mode_param = " " + mode_param;
- source.Reply(_("\002{0}{1}{2}\002 has been unlocked from \002{3}\002."), adding == 1 ? '+' : '-', cm->mchar, mode_param, ci->GetName());
- Log(override ? LOG_OVERRIDE : LOG_COMMAND, source, this, ci) << "to unlock " << (adding ? '+' : '-') << cm->mchar << mode_param;
- }
- else
- source.Reply(_("\002{0}{1}\002 is not locked on \002{2}\002."), adding == 1 ? '+' : '-', cm->mchar, ci->GetName());
+ source.Reply(_("\002{0}{1}\002 is not locked on \002{2}\002."), adding == 1 ? '+' : '-', cm->mchar, ci->GetName());
}
}
}
@@ -462,7 +478,9 @@ class CommandCSMode : public Command
source.Reply(replies[i]);
}
else
+ {
this->OnSyntaxError(source, subcommand);
+ }
}
void DoSet(CommandSource &source, ChanServ::Channel *ci, const std::vector<Anope::string> &params)
@@ -646,7 +664,9 @@ class CommandCSMode : public Command
ChannelMode *cm;
if (param.length() == 1)
+ {
cm = ModeManager::FindChannelModeByChar(param[0]);
+ }
else
{
cm = ModeManager::FindChannelModeByName(param.upper());
@@ -703,9 +723,13 @@ class CommandCSMode : public Command
this->DoLock(source, ci, params);
}
else if (!ci->c)
+ {
source.Reply(_("Channel \002{0}\002 doesn't exist."), ci->GetName());
+ }
else if (subcommand.equals_ci("SET") &