diff options
Diffstat (limited to 'modules/core/cs_access.cpp')
-rw-r--r-- | modules/core/cs_access.cpp | 152 |
1 files changed, 81 insertions, 71 deletions
diff --git a/modules/core/cs_access.cpp b/modules/core/cs_access.cpp index 81084e1a5..e44309d3a 100644 --- a/modules/core/cs_access.cpp +++ b/modules/core/cs_access.cpp @@ -27,9 +27,9 @@ class AccessListCallback : public NumberList ~AccessListCallback() { if (SentHeader) - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LIST_FOOTER, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_LIST_FOOTER, ci->name.c_str()); else - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_NO_MATCH, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_NO_MATCH, ci->name.c_str()); } virtual void HandleNumber(unsigned Number) @@ -40,7 +40,7 @@ class AccessListCallback : public NumberList if (!SentHeader) { SentHeader = true; - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LIST_HEADER, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_LIST_HEADER, ci->name.c_str()); } DoList(u, ci, Number - 1, ci->GetAccess(Number - 1)); @@ -51,10 +51,10 @@ class AccessListCallback : public NumberList if (ci->HasFlag(CI_XOP)) { Anope::string xop = get_xop_level(access->level); - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LIST_XOP_FORMAT, Number + 1, xop.c_str(), access->nc->display.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_LIST_XOP_FORMAT, Number + 1, xop.c_str(), access->nc->display.c_str()); } else - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LIST_AXS_FORMAT, Number + 1, access->level, access->nc->display.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_LIST_AXS_FORMAT, Number + 1, access->level, access->nc->display.c_str()); } }; @@ -73,7 +73,7 @@ class AccessViewCallback : public AccessListCallback if (!SentHeader) { SentHeader = true; - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LIST_HEADER, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_LIST_HEADER, ci->name.c_str()); } DoList(u, ci, Number - 1, ci->GetAccess(Number - 1)); @@ -81,26 +81,21 @@ class AccessViewCallback : public AccessListCallback static void DoList(User *u, ChannelInfo *ci, unsigned Number, ChanAccess *access) { - char timebuf[64] = ""; - struct tm tm; - + Anope::string timebuf; if (ci->c && u->Account() && nc_on_chan(ci->c, u->Account())) - snprintf(timebuf, sizeof(timebuf), "Now"); + timebuf = "Now"; else if (access->last_seen == 0) - snprintf(timebuf, sizeof(timebuf), "Never"); + timebuf = "Never"; else - { - tm = *localtime(&access->last_seen); - strftime_lang(timebuf, sizeof(timebuf), u, STRFTIME_DATE_TIME_FORMAT, &tm); - } + timebuf = do_strftime(access->last_seen); if (ci->HasFlag(CI_XOP)) { Anope::string xop = get_xop_level(access->level); - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_VIEW_XOP_FORMAT, Number + 1, xop.c_str(), access->nc->display.c_str(), access->creator.c_str(), timebuf); + u->SendMessage(ChanServ, CHAN_ACCESS_VIEW_XOP_FORMAT, Number + 1, xop.c_str(), access->nc->display.c_str(), access->creator.c_str(), timebuf.c_str()); } else - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_VIEW_AXS_FORMAT, Number + 1, access->level, access->nc->display.c_str(), access->creator.c_str(), timebuf); + u->SendMessage(ChanServ, CHAN_ACCESS_VIEW_AXS_FORMAT, Number + 1, access->level, access->nc->display.c_str(), access->creator.c_str(), timebuf.c_str()); } }; @@ -123,17 +118,17 @@ class AccessDelCallback : public NumberList ~AccessDelCallback() { if (Denied && !Deleted) - notice_lang(Config->s_ChanServ, u, ACCESS_DENIED); + u->SendMessage(ChanServ, ACCESS_DENIED); else if (!Deleted) - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_NO_MATCH, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_NO_MATCH, ci->name.c_str()); else { Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, c, ci) << "for user" << (Deleted == 1 ? " " : "s ") << Nicks; if (Deleted == 1) - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_DELETED_ONE, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_DELETED_ONE, ci->name.c_str()); else - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_DELETED_SEVERAL, Deleted, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_DELETED_SEVERAL, Deleted, ci->name.c_str()); } } @@ -172,18 +167,18 @@ class CommandCSAccess : public Command if (level >= ulev && !u->Account()->HasPriv("chanserv/access/modify")) { - notice_lang(Config->s_ChanServ, u, ACCESS_DENIED); + u->SendMessage(ChanServ, ACCESS_DENIED); return MOD_CONT; } if (!level) { - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LEVEL_NONZERO); + u->SendMessage(ChanServ, CHAN_ACCESS_LEVEL_NONZERO); return MOD_CONT; } else if (level <= ACCESS_INVALID || level >= ACCESS_FOUNDER) { - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LEVEL_RANGE, ACCESS_INVALID + 1, ACCESS_FOUNDER - 1); + u->SendMessage(ChanServ, CHAN_ACCESS_LEVEL_RANGE, ACCESS_INVALID + 1, ACCESS_FOUNDER - 1); return MOD_CONT; } @@ -192,12 +187,12 @@ class CommandCSAccess : public Command NickAlias *na = findnick(nick); if (!na) { - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_NICKS_ONLY); + u->SendMessage(ChanServ, CHAN_ACCESS_NICKS_ONLY); return MOD_CONT; } else if (na->HasFlag(NS_FORBIDDEN)) { - notice_lang(Config->s_ChanServ, u, NICK_X_FORBIDDEN, nick.c_str()); + u->SendMessage(ChanServ, NICK_X_FORBIDDEN, nick.c_str()); return MOD_CONT; } @@ -208,12 +203,12 @@ class CommandCSAccess : public Command /* Don't allow lowering from a level >= ulev */ if (access->level >= ulev && !u->Account()->HasPriv("chanserv/access/modify")) { - notice_lang(Config->s_ChanServ, u, ACCESS_DENIED); + u->SendMessage(ChanServ, ACCESS_DENIED); return MOD_CONT; } if (access->level == level) { - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LEVEL_UNCHANGED, access->nc->display.c_str(), ci->name.c_str(), level); + u->SendMessage(ChanServ, CHAN_ACCESS_LEVEL_UNCHANGED, access->nc->display.c_str(), ci->name.c_str(), level); return MOD_CONT; } access->level = level; @@ -221,13 +216,13 @@ class CommandCSAccess : public Command FOREACH_MOD(I_OnAccessChange, OnAccessChange(ci, u, na->nc, level)); Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "ADD " << na->nick << " (group: " << nc->display << ") (level: " << level << ") as level " << ulev; - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LEVEL_CHANGED, nc->display.c_str(), ci->name.c_str(), level); + u->SendMessage(ChanServ, CHAN_ACCESS_LEVEL_CHANGED, nc->display.c_str(), ci->name.c_str(), level); return MOD_CONT; } if (ci->GetAccessCount() >= Config->CSAccessMax) { - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_REACHED_LIMIT, Config->CSAccessMax); + u->SendMessage(ChanServ, CHAN_ACCESS_REACHED_LIMIT, Config->CSAccessMax); return MOD_CONT; } @@ -236,7 +231,7 @@ class CommandCSAccess : public Command FOREACH_MOD(I_OnAccessAdd, OnAccessAdd(ci, u, nc, level)); Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "ADD " << na->nick << " (group: " << nc->display << ") (level: " << level << ") as level " << ulev; - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_ADDED, nc->display.c_str(), ci->name.c_str(), level); + u->SendMessage(ChanServ, CHAN_ACCESS_ADDED, nc->display.c_str(), ci->name.c_str(), level); return MOD_CONT; } @@ -246,7 +241,7 @@ class CommandCSAccess : public Command Anope::string nick = params[2]; if (!ci->GetAccessCount()) - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LIST_EMPTY, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_LIST_EMPTY, ci->name.c_str()); else if (isdigit(nick[0]) && nick.find_first_not_of("1234567890,-") == Anope::string::npos) { AccessDelCallback list(u, ci, this, nick); @@ -257,7 +252,7 @@ class CommandCSAccess : public Command NickAlias *na = findnick(nick); if (!na) { - notice_lang(Config->s_ChanServ, u, NICK_X_NOT_REGISTERED, nick.c_str()); + u->SendMessage(ChanServ, NICK_X_NOT_REGISTERED, nick.c_str()); return MOD_CONT; } @@ -274,12 +269,12 @@ class CommandCSAccess : public Command } if (i == end) - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_NOT_FOUND, nick.c_str(), ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_NOT_FOUND, nick.c_str(), ci->name.c_str()); else if (get_access(u, ci) <= access->level && !u->Account()->HasPriv("chanserv/access/modify")) - notice_lang(Config->s_ChanServ, u, ACCESS_DENIED); + u->SendMessage(ChanServ, ACCESS_DENIED); else { - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_DELETED, access->nc->display.c_str(), ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_DELETED, access->nc->display.c_str(), ci->name.c_str()); bool override = !check_access(u, ci, CA_ACCESS_CHANGE); Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "DEL " << na->nick << " (group: " << access->nc->display << ") from level " << access->level; @@ -297,7 +292,7 @@ class CommandCSAccess : public Command Anope::string nick = params.size() > 2 ? params[2] : ""; if (!ci->GetAccessCount()) - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LIST_EMPTY, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_LIST_EMPTY, ci->name.c_str()); else if (!nick.empty() && nick.find_first_not_of("1234567890,-") == Anope::string::npos) { AccessListCallback list(u, ci, nick); @@ -317,16 +312,16 @@ class CommandCSAccess : public Command if (!SentHeader) { SentHeader = true; - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LIST_HEADER, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_LIST_HEADER, ci->name.c_str()); } AccessListCallback::DoList(u, ci, i, access); } if (SentHeader) - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LIST_FOOTER, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_LIST_FOOTER, ci->name.c_str()); else - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_NO_MATCH, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_NO_MATCH, ci->name.c_str()); } return MOD_CONT; @@ -337,7 +332,7 @@ class CommandCSAccess : public Command Anope::string nick = params.size() > 2 ? params[2] : ""; if (!ci->GetAccessCount()) - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LIST_EMPTY, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_LIST_EMPTY, ci->name.c_str()); else if (!nick.empty() && nick.find_first_not_of("1234567890,-") == Anope::string::npos) { AccessViewCallback list(u, ci, nick); @@ -357,16 +352,16 @@ class CommandCSAccess : public Command if (!SentHeader) { SentHeader = true; - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LIST_HEADER, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_LIST_HEADER, ci->name.c_str()); } AccessViewCallback::DoList(u, ci, i, access); } if (SentHeader) - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_LIST_FOOTER, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_LIST_FOOTER, ci->name.c_str()); else - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_NO_MATCH, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_NO_MATCH, ci->name.c_str()); } return MOD_CONT; @@ -375,14 +370,14 @@ class CommandCSAccess : public Command CommandReturn DoClear(User *u, ChannelInfo *ci) { if (!IsFounder(u, ci) && !u->Account()->HasPriv("chanserv/access/modify")) - notice_lang(Config->s_ChanServ, u, ACCESS_DENIED); + u->SendMessage(ChanServ, ACCESS_DENIED); else { ci->ClearAccess(); FOREACH_MOD(I_OnAccessClear, OnAccessClear(ci, u)); - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_CLEAR, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_CLEAR, ci->name.c_str()); bool override = !IsFounder(u, ci); Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "CLEAR"; @@ -417,14 +412,14 @@ class CommandCSAccess : public Command else if (ci->HasFlag(CI_XOP) && !is_list && !is_clear) { if (ModeManager::FindChannelModeByName(CMODE_HALFOP)) - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_XOP_HOP, Config->s_ChanServ.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_XOP_HOP, Config->s_ChanServ.c_str()); else - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_XOP, Config->s_ChanServ.c_str()); + u->SendMessage(ChanServ, CHAN_ACCESS_XOP, Config->s_ChanServ.c_str()); } else if ((is_list && !check_access(u, ci, CA_ACCESS_LIST) && !u->Account()->HasCommand("chanserv/access/list")) || (!is_list && !check_access(u, ci, CA_ACCESS_CHANGE) && !u->Account()->HasPriv("chanserv/access/modify"))) - notice_lang(Config->s_ChanServ, u, ACCESS_DENIED); + u->SendMessage(ChanServ, ACCESS_DENIED); else if (readonly && (cmd.equals_ci("ADD") || cmd.equals_ci("DEL") || cmd.equals_ci("CLEAR"))) - notice_lang(Config->s_ChanServ, u, CHAN_ACCESS_DISABLED); + u->SendMessage(ChanServ, CHAN_ACCESS_DISABLED); else if (cmd.equals_ci("ADD")) this->DoAdd(u, ci, params); else if (cmd.equals_ci("DEL")) @@ -443,14 +438,14 @@ class CommandCSAccess : public Command bool OnHelp(User *u, const Anope::string &subcommand) { - notice_help(Config->s_ChanServ, u, CHAN_HELP_ACCESS); - notice_help(Config->s_ChanServ, u, CHAN_HELP_ACCESS_LEVELS); + u->SendMessage(ChanServ, CHAN_HELP_ACCESS); + u->SendMessage(ChanServ, CHAN_HELP_ACCESS_LEVELS); return true; } void OnSyntaxError(User *u, const Anope::string &subcommand) { - syntax_error(Config->s_ChanServ, u, "ACCESS", CHAN_ACCESS_SYNTAX); + SyntaxError(ChanServ, u, "ACCESS", CHAN_ACCESS_SYNTAX); } }; @@ -475,7 +470,7 @@ class CommandCSLevels : public Command if (!error.empty()) this->OnSyntaxError(u, "SET"); else if (level <= ACCESS_INVALID || level > ACCESS_FOUNDER) - notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_RANGE, ACCESS_INVALID + 1, ACCESS_FOUNDER - 1); + u->SendMessage(ChanServ, CHAN_LEVELS_RANGE, ACCESS_INVALID + 1, ACCESS_FOUNDER - 1); else { for (int i = 0; levelinfo[i].what >= 0; ++i) @@ -489,14 +484,14 @@ class CommandCSLevels : public Command Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "SET " << levelinfo[i].name << " to " << level; if (level == ACCESS_FOUNDER) - notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_CHANGED_FOUNDER, levelinfo[i].name.c_str(), ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_LEVELS_CHANGED_FOUNDER, levelinfo[i].name.c_str(), ci->name.c_str()); else - notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_CHANGED, levelinfo[i].name.c_str(), ci->name.c_str(), level); + u->SendMessage(ChanServ, CHAN_LEVELS_CHANGED, levelinfo[i].name.c_str(), ci->name.c_str(), level); return MOD_CONT; } } - notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_UNKNOWN, what.c_str(), Config->s_ChanServ.c_str()); + u->SendMessage(ChanServ, CHAN_LEVELS_UNKNOWN, what.c_str(), Config->s_ChanServ.c_str()); } return MOD_CONT; @@ -518,19 +513,19 @@ class CommandCSLevels : public Command bool override = !check_access(u, ci, CA_FOUNDER); Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "DISABLE " << levelinfo[i].name; - notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_DISABLED, levelinfo[i].name.c_str(), ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_LEVELS_DISABLED, levelinfo[i].name.c_str(), ci->name.c_str()); return MOD_CONT; } } - notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_UNKNOWN, what.c_str(), Config->s_ChanServ.c_str()); + u->SendMessage(ChanServ, CHAN_LEVELS_UNKNOWN, what.c_str(), Config->s_ChanServ.c_str()); return MOD_CONT; } CommandReturn DoList(User *u, ChannelInfo *ci) { - notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_LIST_HEADER, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_LEVELS_LIST_HEADER, ci->name.c_str()); if (!levelinfo_maxwidth) for (int i = 0; levelinfo[i].what >= 0; ++i) @@ -549,14 +544,14 @@ class CommandCSLevels : public Command j = levelinfo[i].what; if (j == CA_AUTOOP || j == CA_AUTODEOP || j == CA_AUTOVOICE || j == CA_NOJOIN) - notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_LIST_DISABLED, levelinfo_maxwidth, levelinfo[i].name.c_str()); + u->SendMessage(ChanServ, CHAN_LEVELS_LIST_DISABLED, levelinfo_maxwidth, levelinfo[i].name.c_str()); else - notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_LIST_DISABLED, levelinfo_maxwidth, levelinfo[i].name.c_str()); + u->SendMessage(ChanServ, CHAN_LEVELS_LIST_DISABLED, levelinfo_maxwidth, levelinfo[i].name.c_str()); } else if (j == ACCESS_FOUNDER) - notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_LIST_FOUNDER, levelinfo_maxwidth, levelinfo[i].name.c_str()); + u->SendMessage(ChanServ, CHAN_LEVELS_LIST_FOUNDER, levelinfo_maxwidth, levelinfo[i].name.c_str()); else - notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_LIST_NORMAL, levelinfo_maxwidth, levelinfo[i].name.c_str(), j); + u->SendMessage(ChanServ, CHAN_LEVELS_LIST_NORMAL, levelinfo_maxwidth, levelinfo[i].name.c_str(), j); } return MOD_CONT; @@ -570,7 +565,7 @@ class CommandCSLevels : public Command bool override = !check_access(u, ci, CA_FOUNDER); Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, ci) << "RESET"; - notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_RESET, ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_LEVELS_RESET, ci->name.c_str()); return MOD_CONT; } @@ -594,9 +589,9 @@ class CommandCSLevels : public Command if (cmd.equals_ci("SET") ? s.empty() : (cmd.substr(0, 3).equals_ci("DIS") ? (what.empty() || !s.empty()) : !what.empty())) this->OnSyntaxError(u, cmd); else if (ci->HasFlag(CI_XOP)) - notice_lang(Config->s_ChanServ, u, CHAN_LEVELS_XOP); + u->SendMessage(ChanServ, CHAN_LEVELS_XOP); else if (!check_access(u, ci, CA_FOUNDER) && !u->Account()->HasPriv("chanserv/access/modify")) - notice_lang(Config->s_ChanServ, u, ACCESS_DENIED); + u->SendMessage(ChanServ, ACCESS_DENIED); else if (cmd.equals_ci("SET")) this->DoSet(u, ci, params); else if (cmd.equals_ci("DIS") || cmd.equals_ci("DISABLE")) @@ -613,19 +608,34 @@ class CommandCSLevels : public Command bool OnHelp(User *u, const Anope::string &subcommand) { - notice_help(Config->s_ChanServ, u, CHAN_HELP_LEVELS); + if (subcommand == "DESC") + { + int i; + u->SendMessage(ChanServ, CHAN_HELP_LEVELS_DESC); + if (!levelinfo_maxwidth) + for (i = 0; levelinfo[i].what >= 0; ++i) + { + int len = levelinfo[i].name.length(); + if (len > levelinfo_maxwidth) + levelinfo_maxwidth = len; + } + for (i = 0; levelinfo[i].what >= 0; ++i) + u->SendMessage(ChanServ, CHAN_HELP_LEVELS_DESC_FORMAT, levelinfo_maxwidth, levelinfo[i].name.c_str(), GetString(u, levelinfo[i].desc).c_str()); + } + else + u->SendMessage(ChanServ, CHAN_HELP_LEVELS); return true; } void OnSyntaxError(User *u, const Anope::string &subcommand) { - syntax_error(Config->s_ChanServ, u, "LEVELS", CHAN_LEVELS_SYNTAX); + SyntaxError(ChanServ, u, "LEVELS", CHAN_LEVELS_SYNTAX); } void OnServHelp(User *u) { - notice_lang(Config->s_ChanServ, u, CHAN_HELP_CMD_ACCESS); - notice_lang(Config->s_ChanServ, u, CHAN_HELP_CMD_LEVELS); + u->SendMessage(ChanServ, CHAN_HELP_CMD_ACCESS); + u->SendMessage(ChanServ, CHAN_HELP_CMD_LEVELS); } }; |