mirror of
https://github.com/anope/anope.git
synced 2026-07-08 02:23:13 +02:00
Update as many messages as possible for automatic line wrapping.
This commit is contained in:
+10
-10
@@ -100,7 +100,7 @@ namespace Language
|
||||
} // namespace Language
|
||||
|
||||
/* Commonly used language strings */
|
||||
#define CONFIRM_DROP _("Please confirm that you want to drop \002%s\002 with \002%s %s %s\002")
|
||||
#define CONFIRM_DROP _("Please confirm that you want to drop \002%s\002 with \002%s\032%s\032%s\002")
|
||||
#define SERVICE_UNAVAILABLE _("Sorry, %s is temporarily unavailable.")
|
||||
#define MORE_INFO _("\002%s\002 for more information.")
|
||||
#define BAD_USERHOST_MASK _("Mask must be in the form \037user\037@\037host\037.")
|
||||
@@ -109,9 +109,9 @@ namespace Language
|
||||
#define READ_ONLY_MODE _("Services are temporarily in read-only mode.")
|
||||
#define PASSWORD_INCORRECT _("Password incorrect.")
|
||||
#define ACCESS_DENIED _("Access denied.")
|
||||
#define MORE_OBSCURE_PASSWORD _("Please try again with a more obscure password. Passwords should not be\n" \
|
||||
"something that could be easily guessed (e.g. your real name or your nick) and\n" \
|
||||
"cannot contain the space or tab characters.\n")
|
||||
#define MORE_OBSCURE_PASSWORD _("Please try again with a more obscure password. Passwords should not be " \
|
||||
"something that could be easily guessed (e.g. your real name or your nick) and " \
|
||||
"cannot contain the space or tab characters.")
|
||||
#define PASSWORD_TOO_SHORT _("Your password is too short. It must be longer than %u characters.")
|
||||
#define PASSWORD_TOO_LONG _("Your password is too long. It must be shorter than %u characters.")
|
||||
#define NICK_NOT_REGISTERED _("Your nick isn't registered.")
|
||||
@@ -127,8 +127,8 @@ namespace Language
|
||||
#define UNKNOWN _("<unknown>")
|
||||
#define NO_EXPIRE _("does not expire")
|
||||
#define LIST_INCORRECT_RANGE _("Incorrect range specified. The correct syntax is \002#\037from\037-\037to\037\002.")
|
||||
#define NICK_IS_SECURE _("This nickname is registered and protected. If it is your\n" \
|
||||
"nick, type \002%s \037password\037\002. Otherwise,\n" \
|
||||
#define NICK_IS_SECURE _("This nickname is registered and protected. If it is your " \
|
||||
"nick, type \002%s\032\037password\037\002. Otherwise, " \
|
||||
"please choose a different nick.")
|
||||
#define FORCENICKCHANGE_NOW _("This nickname has been registered; you may not use it.")
|
||||
#define NICK_CANNOT_BE_REGISTERED _("Nickname \002%s\002 may not be registered.")
|
||||
@@ -145,10 +145,10 @@ namespace Language
|
||||
#define CHAN_ACCESS_LEVEL_RANGE _("Access level must be between %d and %d inclusive.")
|
||||
#define CHAN_INFO_HEADER _("Information about channel \002%s\002:")
|
||||
#define CHAN_EXCEPTED _("\002%s\002 matches an except on %s and cannot be banned until the except has been removed.")
|
||||
#define MEMO_NEW_X_MEMO_ARRIVED _("There is a new memo on channel %s.\n" \
|
||||
"Type \002%s %s %zu\002 to read it.")
|
||||
#define MEMO_NEW_MEMO_ARRIVED _("You have a new memo from %s.\n" \
|
||||
"Type \002%s %zu\002 to read it.")
|
||||
#define MEMO_NEW_X_MEMO_ARRIVED _("There is a new memo on channel %s. " \
|
||||
"Type \002%s\032%s\032%zu\002 to read it.")
|
||||
#define MEMO_NEW_MEMO_ARRIVED _("You have a new memo from %s. " \
|
||||
"Type \002%s\032%zu\002 to read it.")
|
||||
#define MEMO_HAVE_NO_MEMOS _("You have no memos.")
|
||||
#define MEMO_X_HAS_NO_MEMOS _("%s has no memos.")
|
||||
#define MEMO_HAVE_NO_NEW_MEMOS _("You have no new memos.")
|
||||
|
||||
+657
-1665
File diff suppressed because it is too large
Load Diff
+41
-23
@@ -135,29 +135,41 @@ public:
|
||||
|
||||
if (source.c)
|
||||
{
|
||||
source.Reply(_("\002%s\002 allows you to execute \"fantasy\" commands in the channel.\n"
|
||||
"Fantasy commands are commands that can be executed from messaging a\n"
|
||||
"channel, and provide a more convenient way to execute commands. Commands that\n"
|
||||
"require a channel as a parameter will automatically have that parameter\n"
|
||||
"given.\n"), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"\002%s\002 allows you to execute \"fantasy\" commands in the channel. "
|
||||
"Fantasy commands are commands that can be executed from messaging a "
|
||||
"channel, and provide a more convenient way to execute commands. Commands that "
|
||||
"require a channel as a parameter will automatically have that parameter "
|
||||
"given."
|
||||
),
|
||||
source.service->nick.c_str());
|
||||
|
||||
const Anope::string &fantasycharacters = Config->GetModule("fantasy").Get<const Anope::string>("fantasycharacter", "!");
|
||||
if (!fantasycharacters.empty())
|
||||
source.Reply(_(" \n"
|
||||
"Fantasy commands may be prefixed with one of the following characters: %s\n"), fantasycharacters.c_str());
|
||||
source.Reply(_(" \n"
|
||||
"Available commands are:"));
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Fantasy commands may be prefixed with one of the following characters: %s"),
|
||||
fantasycharacters.c_str());
|
||||
}
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Available commands are:"));
|
||||
}
|
||||
else if (*source.service == BotServ)
|
||||
{
|
||||
source.Reply(_("\002%s\002 allows you to have a bot on your own channel.\n"
|
||||
"It has been created for users that can't host or\n"
|
||||
"configure a bot, or for use on networks that don't\n"
|
||||
"allow user bots. Available commands are listed\n"
|
||||
"below; to use them, type \002%s \037command\037\002. For\n"
|
||||
"more information on a specific command, type\n"
|
||||
"\002%s \037command\037\002.\n"),
|
||||
BotServ->nick.c_str(), BotServ->GetQueryCommand().c_str(),
|
||||
source.Reply(_(
|
||||
"\002%s\002 allows you to have a bot on your own channel. "
|
||||
"It has been created for users that can't host or "
|
||||
"configure a bot, or for use on networks that don't "
|
||||
"allow user bots. Available commands are listed "
|
||||
"below; to use them, type \002%s\032\037command\037\002. For "
|
||||
"more information on a specific command, type "
|
||||
"\002%s\032\037command\037\002."
|
||||
),
|
||||
BotServ->nick.c_str(),
|
||||
BotServ->GetQueryCommand().c_str(),
|
||||
BotServ->GetQueryCommand({}, source.command).c_str());
|
||||
|
||||
source.Reply(" ");
|
||||
}
|
||||
|
||||
return EVENT_CONTINUE;
|
||||
@@ -168,14 +180,20 @@ public:
|
||||
if (!params.empty() || source.c || source.service != *BotServ)
|
||||
return;
|
||||
|
||||
source.Reply(_(" \n"
|
||||
"Bot will join a channel whenever there is at least\n"
|
||||
"\002%d\002 user(s) on it."), Config->GetModule(this).Get<unsigned>("minusers"));
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Bot will join a channel whenever there is at least \002%d\002 user(s) on it."),
|
||||
Config->GetModule(this).Get<unsigned>("minusers"));
|
||||
|
||||
const Anope::string &fantasycharacters = Config->GetModule("fantasy").Get<const Anope::string>("fantasycharacter", "!");
|
||||
if (!fantasycharacters.empty())
|
||||
source.Reply(_("Additionally, if fantasy is enabled fantasy commands\n"
|
||||
"can be executed by prefixing the command name with\n"
|
||||
"one of the following characters: %s"), fantasycharacters.c_str());
|
||||
{
|
||||
source.Reply(_(
|
||||
"Additionally, if fantasy is enabled fantasy commands "
|
||||
"can be executed by prefixing the command name with "
|
||||
"one of the following characters: %s"
|
||||
),
|
||||
fantasycharacters.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
EventReturn OnChannelModeSet(Channel *c, MessageSource &source, ChannelMode *mode, const Anope::string ¶m) override
|
||||
|
||||
@@ -76,9 +76,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Assigns the specified bot to a channel. You\n"
|
||||
"can then configure the bot for the channel so it fits\n"
|
||||
"your needs."));
|
||||
source.Reply(_(
|
||||
"Assigns the specified bot to a channel. You "
|
||||
"can then configure the bot for the channel so it fits "
|
||||
"your needs."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -138,11 +140,13 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Unassigns a bot from a channel. When you use this command,\n"
|
||||
"the bot won't join the channel anymore. However, bot\n"
|
||||
"configuration for the channel is kept, so you will always\n"
|
||||
"be able to reassign a bot later without having to reconfigure\n"
|
||||
"it entirely."));
|
||||
source.Reply(_(
|
||||
"Unassigns a bot from a channel. When you use this command, "
|
||||
"the bot won't join the channel anymore. However, bot "
|
||||
"configuration for the channel is kept, so you will always "
|
||||
"be able to reassign a bot later without having to reconfigure "
|
||||
"it entirely."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -197,10 +201,12 @@ public:
|
||||
bool OnHelp(CommandSource &source, const Anope::string &) override
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(_(" \n"
|
||||
"This option makes a channel unassignable. If a bot\n"
|
||||
"is already assigned to the channel, it is unassigned\n"
|
||||
"automatically when you enable it."));
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"This option makes a channel unassignable. If a bot "
|
||||
"is already assigned to the channel, it is unassigned "
|
||||
"automatically when you enable it."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -435,35 +435,38 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Maintains the \002bad words list\002 for a channel. The bad\n"
|
||||
"words list determines which words are to be kicked\n"
|
||||
"when the bad words kicker is enabled. For more information,\n"
|
||||
"type \002%s KICK %s\002.\n"
|
||||
" \n"
|
||||
"The \002ADD\002 command adds the given word to the\n"
|
||||
"bad words list. If SINGLE is specified, a kick will be\n"
|
||||
"done only if a user says the entire word. If START is\n"
|
||||
"specified, a kick will be done if a user says a word\n"
|
||||
"that starts with \037word\037. If END is specified, a kick\n"
|
||||
"will be done if a user says a word that ends with\n"
|
||||
"\037word\037. If you don't specify anything, a kick will\n"
|
||||
"be issued every time \037word\037 is said by a user.\n"
|
||||
" \n"), source.service->GetQueryCommand("generic/help").c_str(), source.command.c_str());
|
||||
|
||||
source.Reply(_("The \002DEL\002 command removes the given word from the\n"
|
||||
"bad words list. If a list of entry numbers is given, those\n"
|
||||
"entries are deleted. (See the example for LIST below.)\n"
|
||||
" \n"
|
||||
"The \002LIST\002 command displays the bad words list. If\n"
|
||||
"a wildcard mask is given, only those entries matching the\n"
|
||||
"mask are displayed. If a list of entry numbers is given,\n"
|
||||
source.Reply(_(
|
||||
"Maintains the \002bad words list\002 for a channel. The bad "
|
||||
"words list determines which words are to be kicked "
|
||||
"when the bad words kicker is enabled. For more information, "
|
||||
"type \002%s\032KICK\032%s\002."
|
||||
"\n\n"
|
||||
"The \002ADD\002 command adds the given word to the "
|
||||
"bad words list. If SINGLE is specified, a kick will be "
|
||||
"done only if a user says the entire word. If START is "
|
||||
"specified, a kick will be done if a user says a word "
|
||||
"that starts with \037word\037. If END is specified, a kick "
|
||||
"will be done if a user says a word that ends with "
|
||||
"\037word\037. If you don't specify anything, a kick will "
|
||||
"be issued every time \037word\037 is said by a user."
|
||||
"\n\n"
|
||||
"The \002DEL\002 command removes the given word from the "
|
||||
"bad words list. If a list of entry numbers is given, those "
|
||||
"entries are deleted. (See the example for LIST below.)"
|
||||
"\n\n"
|
||||
"The \002LIST\002 command displays the bad words list. If "
|
||||
"a wildcard mask is given, only those entries matching the "
|
||||
"mask are displayed. If a list of entry numbers is given, "
|
||||
"only those entries are shown; for example:\n"
|
||||
" \002#channel LIST 2-5,7-9\002\n"
|
||||
" \002#channel\032LIST\0322-5,7-9\002\n"
|
||||
" Lists bad words entries numbered 2 through 5 and\n"
|
||||
" 7 through 9.\n"
|
||||
" \n"
|
||||
"The \002CLEAR\002 command clears all entries from the\n"
|
||||
"bad words list."));
|
||||
" 7 through 9."
|
||||
"\n\n"
|
||||
"The \002CLEAR\002 command clears all entries from the "
|
||||
"bad words list."
|
||||
),
|
||||
source.service->GetQueryCommand("generic/help").c_str(),
|
||||
source.command.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
+19
-17
@@ -347,23 +347,25 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows Services Operators to create, modify, and delete\n"
|
||||
"bots that users will be able to use on their own\n"
|
||||
"channels.\n"
|
||||
" \n"
|
||||
"\002BOT ADD\002 adds a bot with the given nickname, username,\n"
|
||||
"hostname and realname. Since no integrity checks are done\n"
|
||||
"for these settings, be really careful.\n"
|
||||
" \n"
|
||||
"\002BOT CHANGE\002 allows you to change the nickname, username, hostname\n"
|
||||
"or realname of a bot without deleting it (and\n"
|
||||
"all the data associated with it).\n"
|
||||
" \n"
|
||||
"\002BOT DEL\002 removes the given bot from the bot list.\n"
|
||||
" \n"
|
||||
"\002Note\002: You cannot create a bot with a nick that is\n"
|
||||
"currently registered. If an unregistered user is currently\n"
|
||||
"using the nick, they will be killed."));
|
||||
source.Reply(_(
|
||||
"Allows Services Operators to create, modify, and delete "
|
||||
"bots that users will be able to use on their own "
|
||||
"channels."
|
||||
"\n\n"
|
||||
"\002BOT\032ADD\002 adds a bot with the given nickname, username, "
|
||||
"hostname and realname. Since no integrity checks are done "
|
||||
"for these settings, be really careful."
|
||||
"\n\n"
|
||||
"\002BOT\032CHANGE\002 allows you to change the nickname, username, hostname "
|
||||
"or realname of a bot without deleting it (and "
|
||||
"all the data associated with it)."
|
||||
"\n\n"
|
||||
"\002BOT\032DEL\002 removes the given bot from the bot list."
|
||||
"\n\n"
|
||||
"\002Note\002: You cannot create a bot with a nick that is "
|
||||
"currently registered. If an unregistered user is currently "
|
||||
"using the nick, they will be killed."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -70,8 +70,12 @@ public:
|
||||
list.Process(replies);
|
||||
|
||||
if (!count)
|
||||
source.Reply(_("There are no bots available at this time.\n"
|
||||
"Ask a Services Operator to create one!"));
|
||||
{
|
||||
source.Reply(_(
|
||||
"There are no bots available at this time. "
|
||||
"Ask a Services Operator to create one!"
|
||||
));
|
||||
}
|
||||
else
|
||||
{
|
||||
source.Reply(_("Bot list:"));
|
||||
@@ -87,15 +91,17 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Lists all available bots on this network.\n"
|
||||
"\n"
|
||||
"If the OPERONLY, UNUSED or VANITY options are given only\n"
|
||||
"bots which, respectively, are oper-only, unused or were\n"
|
||||
"added at runtime will be displayed. If multiple options are\n"
|
||||
"given, all nicks matching at least one option will be\n"
|
||||
"displayed.\n"
|
||||
"\n"
|
||||
"Note that these options are limited to \037Services Operators\037."));
|
||||
source.Reply(_(
|
||||
"Lists all available bots on this network."
|
||||
"\n\n"
|
||||
"If the OPERONLY, UNUSED or VANITY options are given only "
|
||||
"bots which, respectively, are oper-only, unused or were "
|
||||
"added at runtime will be displayed. If multiple options are "
|
||||
"given, all nicks matching at least one option will be "
|
||||
"displayed."
|
||||
"\n\n"
|
||||
"Note that these options are limited to \037Services Operators\037."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -122,8 +122,10 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Makes the bot do the equivalent of a \"/me\" command\n"
|
||||
"on the specified channel using the specified text."));
|
||||
source.Reply(_(
|
||||
"Makes the bot do the equivalent of a \"/me\" command "
|
||||
"on the specified channel using the specified text."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -104,11 +104,13 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows you to see %s information about a channel or a bot.\n"
|
||||
"If the parameter is a channel, then you'll get information\n"
|
||||
"such as enabled kickers. If the parameter is a nick,\n"
|
||||
"you'll get information about a bot, such as creation\n"
|
||||
"time or number of channels it is on."), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Allows you to see %s information about a channel or a bot. "
|
||||
"If the parameter is a channel, then you'll get information "
|
||||
"such as enabled kickers. If the parameter is a nick, "
|
||||
"you'll get information about a bot, such as creation "
|
||||
"time or number of channels it is on."
|
||||
), source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
+174
-107
@@ -153,13 +153,14 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
source.Reply(_("Type \002%s \037option\037\002 for more information\n"
|
||||
"on a specific option.\n"
|
||||
" \n"
|
||||
"Note: access to this command is controlled by the\n"
|
||||
"level SET."),
|
||||
source.Reply(_(
|
||||
"Type \002%s\032\037option\037\002 for more information "
|
||||
"on a specific option."
|
||||
"\n\n"
|
||||
"Note: access to this command is controlled by the "
|
||||
"level SET."
|
||||
),
|
||||
source.service->GetQueryCommand("generic/help", this_name).c_str());
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -221,8 +222,10 @@ protected:
|
||||
|
||||
val = true;
|
||||
if (kd->ttb[ttb_idx])
|
||||
source.Reply(_("Bot will now kick for \002%s\002, and will place a ban\n"
|
||||
"after %d kicks for the same user."), optname.c_str(), kd->ttb[ttb_idx]);
|
||||
{
|
||||
source.Reply(_("Bot will now kick for \002%s\002, and will place a ban after %d kicks for the same user."),
|
||||
optname.c_str(), kd->ttb[ttb_idx]);
|
||||
}
|
||||
else
|
||||
source.Reply(_("Bot will now kick for \002%s\002."), optname.c_str());
|
||||
|
||||
@@ -268,13 +271,16 @@ public:
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
BotInfo *bi = Config->GetClient("BotServ");
|
||||
source.Reply(_("Sets the AMSG kicker on or off. When enabled, the bot will\n"
|
||||
"kick users who send the same message to multiple channels\n"
|
||||
"where %s bots are.\n"
|
||||
" \n"
|
||||
"\037ttb\037 is the number of times a user can be kicked\n"
|
||||
"before they get banned. Don't give ttb to disable\n"
|
||||
"the ban system once activated."), bi ? bi->nick.c_str() : "BotServ");
|
||||
source.Reply(_(
|
||||
"Sets the AMSG kicker on or off. When enabled, the bot will "
|
||||
"kick users who send the same message to multiple channels "
|
||||
"where %s bots are."
|
||||
"\n\n"
|
||||
"\037ttb\037 is the number of times a user can be kicked "
|
||||
"before they get banned. Don't give ttb to disable "
|
||||
"the ban system once activated."
|
||||
),
|
||||
bi ? bi->nick.c_str() : "BotServ");
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -305,16 +311,19 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets the bad words kicker on or off. When enabled, this\n"
|
||||
"option tells the bot to kick users who say certain words\n"
|
||||
"on the channels.\n"
|
||||
"You can define bad words for your channel using the\n"
|
||||
"\002BADWORDS\002 command. Type \002%s BADWORDS\002 for\n"
|
||||
"more information.\n"
|
||||
" \n"
|
||||
"\037ttb\037 is the number of times a user can be kicked\n"
|
||||
"before it gets banned. Don't give ttb to disable\n"
|
||||
"the ban system once activated."),
|
||||
source.Reply(_(
|
||||
"Sets the bad words kicker on or off. When enabled, this "
|
||||
"option tells the bot to kick users who say certain words "
|
||||
"on the channels."
|
||||
"\n\n"
|
||||
"You can define bad words for your channel using the "
|
||||
"\002BADWORDS\002 command. Type \002%s\032BADWORDS\002 for "
|
||||
"more information."
|
||||
"\n\n"
|
||||
"\037ttb\037 is the number of times a user can be kicked "
|
||||
"before it gets banned. Don't give ttb to disable "
|
||||
"the ban system once activated."
|
||||
),
|
||||
source.service->GetQueryCommand("generic/help").c_str());
|
||||
return true;
|
||||
}
|
||||
@@ -345,12 +354,14 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets the bolds kicker on or off. When enabled, this\n"
|
||||
"option tells the bot to kick users who use bolds.\n"
|
||||
" \n"
|
||||
"\037ttb\037 is the number of times a user can be kicked\n"
|
||||
"before it gets banned. Don't give ttb to disable\n"
|
||||
"the ban system once activated."));
|
||||
source.Reply(_(
|
||||
"Sets the bolds kicker on or off. When enabled, this "
|
||||
"option tells the bot to kick users who use bolds."
|
||||
"\n\n"
|
||||
"\037ttb\037 is the number of times a user can be kicked "
|
||||
"before it gets banned. Don't give ttb to disable "
|
||||
"the ban system once activated."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -402,12 +413,23 @@ public:
|
||||
|
||||
kd->caps = true;
|
||||
if (kd->ttb[TTB_CAPS])
|
||||
source.Reply(_("Bot will now kick for \002caps\002 (they must constitute at least\n"
|
||||
"%d characters and %d%% of the entire message), and will\n"
|
||||
"place a ban after %d kicks for the same user."), kd->capsmin, kd->capspercent, kd->ttb[TTB_CAPS]);
|
||||
{
|
||||
source.Reply(_(
|
||||
"Bot will now kick for \002caps\002 (they must constitute at least "
|
||||
"%d characters and %d%% of the entire message), and will "
|
||||
"place a ban after %d kicks for the same user."
|
||||
),
|
||||
kd->capsmin,
|
||||
kd->capspercent,
|
||||
kd->ttb[TTB_CAPS]);
|
||||
}
|
||||
else
|
||||
source.Reply(_("Bot will now kick for \002caps\002 (they must constitute at least\n"
|
||||
"%d characters and %d%% of the entire message)."), kd->capsmin, kd->capspercent);
|
||||
source.Reply(_(
|
||||
"Bot will now kick for \002caps\002 (they must constitute at least "
|
||||
"%d characters and %d%% of the entire message)."
|
||||
),
|
||||
kd->capsmin,
|
||||
kd->capspercent);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -422,17 +444,20 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets the caps kicker on or off. When enabled, this\n"
|
||||
"option tells the bot to kick users who are talking in\n"
|
||||
"CAPS.\n"
|
||||
"The bot kicks only if there are at least \002min\002 caps\n"
|
||||
"and they constitute at least \002percent\002%% of the total\n"
|
||||
"text line (if not given, it defaults to 10 characters\n"
|
||||
"and 25%%).\n"
|
||||
" \n"
|
||||
"\037ttb\037 is the number of times a user can be kicked\n"
|
||||
"before it gets banned. Don't give ttb to disable\n"
|
||||
"the ban system once activated."));
|
||||
source.Reply(_(
|
||||
"Sets the caps kicker on or off. When enabled, this "
|
||||
"option tells the bot to kick users who are talking in "
|
||||
"CAPS."
|
||||
"\n\n"
|
||||
"The bot kicks only if there are at least \002min\002 caps "
|
||||
"and they constitute at least \002percent\002%% of the total "
|
||||
"text line (if not given, it defaults to 10 characters "
|
||||
"and 25%%)."
|
||||
"\n\n"
|
||||
"\037ttb\037 is the number of times a user can be kicked "
|
||||
"before it gets banned. Don't give ttb to disable "
|
||||
"the ban system once activated."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -462,12 +487,14 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets the colors kicker on or off. When enabled, this\n"
|
||||
"option tells the bot to kick users who use colors.\n"
|
||||
" \n"
|
||||
"\037ttb\037 is the number of times a user can be kicked\n"
|
||||
"before it gets banned. Don't give ttb to disable\n"
|
||||
"the ban system once activated."));
|
||||
source.Reply(_(
|
||||
"Sets the colors kicker on or off. When enabled, this "
|
||||
"option tells the bot to kick users who use colors."
|
||||
"\n\n"
|
||||
"\037ttb\037 is the number of times a user can be kicked "
|
||||
"before it gets banned. Don't give ttb to disable "
|
||||
"the ban system once activated."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -522,8 +549,15 @@ public:
|
||||
|
||||
kd->flood = true;
|
||||
if (kd->ttb[TTB_FLOOD])
|
||||
source.Reply(_("Bot will now kick for \002flood\002 (%d lines in %d seconds\n"
|
||||
"and will place a ban after %d kicks for the same user."), kd->floodlines, kd->floodsecs, kd->ttb[TTB_FLOOD]);
|
||||
{
|
||||
source.Reply(_(
|
||||
"Bot will now kick for \002flood\002 (%d lines in %d seconds "
|
||||
"and will place a ban after %d kicks for the same user."
|
||||
),
|
||||
kd->floodlines,
|
||||
kd->floodsecs,
|
||||
kd->ttb[TTB_FLOOD]);
|
||||
}
|
||||
else
|
||||
source.Reply(_("Bot will now kick for \002flood\002 (%d lines in %d seconds)."), kd->floodlines, kd->floodsecs);
|
||||
}
|
||||
@@ -542,14 +576,15 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets the flood kicker on or off. When enabled, this\n"
|
||||
"option tells the bot to kick users who are flooding\n"
|
||||
"the channel using at least \002ln\002 lines in \002secs\002 seconds\n"
|
||||
"(if not given, it defaults to 6 lines in 10 seconds).\n"
|
||||
" \n"
|
||||
"\037ttb\037 is the number of times a user can be kicked\n"
|
||||
"before it gets banned. Don't give ttb to disable\n"
|
||||
"the ban system once activated."));
|
||||
source.Reply(_(
|
||||
"Sets the flood kicker on or off. When enabled, this "
|
||||
"option tells the bot to kick users who are flooding "
|
||||
"the channel using at least \002ln\002 lines in \002secs\002 seconds "
|
||||
"(if not given, it defaults to 6 lines in 10 seconds). "
|
||||
"\n\n"
|
||||
"\037ttb\037 is the number of times a user can be kicked "
|
||||
"before it gets banned. Don't give ttb to disable "
|
||||
"the ban system once activated."));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -579,12 +614,14 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets the italics kicker on or off. When enabled, this\n"
|
||||
"option tells the bot to kick users who use italics.\n"
|
||||
" \n"
|
||||
"\037ttb\037 is the number of times a user can be kicked\n"
|
||||
"before it gets banned. Don't give ttb to disable\n"
|
||||
"the ban system once activated."));
|
||||
source.Reply(_(
|
||||
"Sets the italics kicker on or off. When enabled, this "
|
||||
"option tells the bot to kick users who use italics. "
|
||||
"\n\n"
|
||||
"\037ttb\037 is the number of times a user can be kicked "
|
||||
"before it gets banned. Don't give ttb to disable "
|
||||
"the ban system once activated."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -633,22 +670,42 @@ public:
|
||||
if (kd->ttb[TTB_REPEAT])
|
||||
{
|
||||
if (kd->repeattimes != 1)
|
||||
source.Reply(_("Bot will now kick for \002repeats\002 (users that repeat the\n"
|
||||
"same message %d times), and will place a ban after %d\n"
|
||||
"kicks for the same user."), kd->repeattimes, kd->ttb[TTB_REPEAT]);
|
||||
{
|
||||
source.Reply(_(
|
||||
"Bot will now kick for \002repeats\002 (users that repeat the "
|
||||
"same message %d times), and will place a ban after %d "
|
||||
"kicks for the same user."
|
||||
),
|
||||
kd->repeattimes,
|
||||
kd->ttb[TTB_REPEAT]);
|
||||
}
|
||||
else
|
||||
source.Reply(_("Bot will now kick for \002repeats\002 (users that repeat the\n"
|
||||
"same message %d time), and will place a ban after %d\n"
|
||||
"kicks for the same user."), kd->repeattimes, kd->ttb[TTB_REPEAT]);
|
||||
source.Reply(_(
|
||||
"Bot will now kick for \002repeats\002 (users that repeat the "
|
||||
"same message %d time), and will place a ban after %d "
|
||||
"kicks for the same user."
|
||||
),
|
||||
kd->repeattimes,
|
||||
kd->ttb[TTB_REPEAT]);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (kd->repeattimes != 1)
|
||||
source.Reply(_("Bot will now kick for \002repeats\002 (users that repeat the\n"
|
||||
"same message %d times)."), kd->repeattimes);
|
||||
{
|
||||
source.Reply(_(
|
||||
"Bot will now kick for \002repeats\002 (users that repeat the "
|
||||
"same message %d times)."
|
||||
),
|
||||
kd->repeattimes);
|
||||
}
|
||||
else
|
||||
source.Reply(_("Bot will now kick for \002repeats\002 (users that repeat the\n"
|
||||
"same message %d time)."), kd->repeattimes);
|
||||
{
|
||||
source.Reply(_(
|
||||
"Bot will now kick for \002repeats\002 (users that repeat the "
|
||||
"same message %d time)."
|
||||
),
|
||||
kd->repeattimes);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (params[1].equals_ci("OFF"))
|
||||
@@ -666,14 +723,16 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets the repeat kicker on or off. When enabled, this\n"
|
||||
"option tells the bot to kick users who are repeating\n"
|
||||
"themselves \002num\002 times (if num is not given, it\n"
|
||||
"defaults to 3).\n"
|
||||
" \n"
|
||||
"\037ttb\037 is the number of times a user can be kicked\n"
|
||||
"before it gets banned. Don't give ttb to disable\n"
|
||||
"the ban system once activated."));
|
||||
source.Reply(_(
|
||||
"Sets the repeat kicker on or off. When enabled, this "
|
||||
"option tells the bot to kick users who are repeating "
|
||||
"themselves \002num\002 times (if num is not given, it "
|
||||
"defaults to 3)."
|
||||
"\n\n"
|
||||
"\037ttb\037 is the number of times a user can be kicked "
|
||||
"before it gets banned. Don't give ttb to disable "
|
||||
"the ban system once activated."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -703,12 +762,14 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets the reverses kicker on or off. When enabled, this\n"
|
||||
"option tells the bot to kick users who use reverses.\n"
|
||||
" \n"
|
||||
"\037ttb\037 is the number of times a user can be kicked\n"
|
||||
"before it gets banned. Don't give ttb to disable\n"
|
||||
"the ban system once activated."));
|
||||
source.Reply(_(
|
||||
"Sets the reverses kicker on or off. When enabled, this "
|
||||
"option tells the bot to kick users who use reverses. "
|
||||
"\n\n"
|
||||
"\037ttb\037 is the number of times a user can be kicked "
|
||||
"before it gets banned. Don't give ttb to disable "
|
||||
"the ban system once activated."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -738,12 +799,14 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets the underlines kicker on or off. When enabled, this\n"
|
||||
"option tells the bot to kick users who use underlines.\n"
|
||||
" \n"
|
||||
"\037ttb\037 is the number of times a user can be kicked\n"
|
||||
"before it gets banned. Don't give ttb to disable\n"
|
||||
"the ban system once activated."));
|
||||
source.Reply(_(
|
||||
"Sets the underlines kicker on or off. When enabled, this "
|
||||
"option tells the bot to kick users who use underlines. "
|
||||
"\n\n"
|
||||
"\037ttb\037 is the number of times a user can be kicked "
|
||||
"before it gets banned. Don't give ttb to disable "
|
||||
"the ban system once activated."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -806,10 +869,12 @@ public:
|
||||
bool OnHelp(CommandSource &source, const Anope::string &) override
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(_(" \n"
|
||||
"Enables or disables \002ops protection\002 mode on a channel.\n"
|
||||
"When it is enabled, ops won't be kicked by the bot\n"
|
||||
"even if they don't match the NOKICK level."));
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"Enables or disables \002ops protection\002 mode on a channel. "
|
||||
"When it is enabled, ops won't be kicked by the bot "
|
||||
"even if they don't match the NOKICK level."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -872,10 +937,12 @@ public:
|
||||
bool OnHelp(CommandSource &source, const Anope::string &) override
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(_(" \n"
|
||||
"Enables or disables \002voices protection\002 mode on a channel.\n"
|
||||
"When it is enabled, voices won't be kicked by the bot\n"
|
||||
"even if they don't match the NOKICK level."));
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"Enables or disables \002voices protection\002 mode on a channel. "
|
||||
"When it is enabled, voices won't be kicked by the bot "
|
||||
"even if they don't match the NOKICK level."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
+18
-13
@@ -30,9 +30,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Configures bot options.\n"
|
||||
" \n"
|
||||
"Available options:"));
|
||||
source.Reply(_(
|
||||
"Configures bot options."
|
||||
"\n\n"
|
||||
"Available options:"
|
||||
));
|
||||
bool hide_privileged_commands = Config->GetBlock("options").Get<bool>("hideprivilegedcommands"),
|
||||
hide_registered_commands = Config->GetBlock("options").Get<bool>("hideregisteredcommands");
|
||||
Anope::string this_name = source.command;
|
||||
@@ -58,8 +60,7 @@ public:
|
||||
}
|
||||
}
|
||||
}
|
||||
source.Reply(_("Type \002%s \037option\037\002 for more information on a\n"
|
||||
"particular option."),
|
||||
source.Reply(_("Type \002%s\032\037option\037\002 for more information on a particular option."),
|
||||
source.service->GetQueryCommand("generic/help", this_name).c_str());
|
||||
|
||||
return true;
|
||||
@@ -151,11 +152,13 @@ public:
|
||||
bool OnHelp(CommandSource &source, const Anope::string &) override
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(_(" \n"
|
||||
"Sets the time bot bans expire in. If enabled, any bans placed by\n"
|
||||
"bots, such as flood kicker, badwords kicker, etc. will automatically\n"
|
||||
"be removed after the given time. Set to 0 to disable bans from\n"
|
||||
"automatically expiring."));
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"Sets the time bot bans expire in. If enabled, any bans placed by "
|
||||
"bots, such as flood kicker, badwords kicker, etc. will automatically "
|
||||
"be removed after the given time. Set to 0 to disable bans from "
|
||||
"automatically expiring."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -204,9 +207,11 @@ public:
|
||||
bool OnHelp(CommandSource &source, const Anope::string &) override
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(_(" \n"
|
||||
"This option prevents a bot from being assigned to a\n"
|
||||
"channel by users that aren't IRC Operators."));
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"This option prevents a bot from being assigned to a "
|
||||
"channel by users that aren't IRC Operators."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -260,15 +260,19 @@ public:
|
||||
{
|
||||
if (!params.empty() || source.c || source.service != *ChanServ)
|
||||
return EVENT_CONTINUE;
|
||||
source.Reply(_("\002%s\002 allows you to register and control various\n"
|
||||
"aspects of channels. %s can often prevent\n"
|
||||
"malicious users from \"taking over\" channels by limiting\n"
|
||||
"who is allowed channel operator privileges. Available\n"
|
||||
"commands are listed below; to use them, type\n"
|
||||
"\002%s \037command\037\002. For more information on a\n"
|
||||
"specific command, type \002%s \037command\037\002.\n"),
|
||||
ChanServ->nick.c_str(), ChanServ->nick.c_str(),
|
||||
ChanServ->GetQueryCommand().c_str(), ChanServ->GetQueryCommand("generic/help").c_str());
|
||||
source.Reply(_(
|
||||
"\002%s\002 allows you to register and control various "
|
||||
"aspects of channels. %s can often prevent "
|
||||
"malicious users from \"taking over\" channels by limiting "
|
||||
"who is allowed channel operator privileges. Available "
|
||||
"commands are listed below; to use them, type "
|
||||
"\002%s\032\037command\037\002. For more information on a "
|
||||
"specific command, type \002%s\032\037command\037\002."
|
||||
),
|
||||
ChanServ->nick.c_str(),
|
||||
ChanServ->nick.c_str(),
|
||||
ChanServ->GetQueryCommand().c_str(),
|
||||
ChanServ->GetQueryCommand("generic/help").c_str());
|
||||
return EVENT_CONTINUE;
|
||||
}
|
||||
|
||||
@@ -278,15 +282,24 @@ public:
|
||||
return;
|
||||
time_t chanserv_expire = Config->GetModule(this).Get<time_t>("expire", "30d");
|
||||
if (chanserv_expire >= 86400)
|
||||
source.Reply(_(" \n"
|
||||
"Note that any channel which is not used for %lu days\n"
|
||||
"(i.e. which no user on the channel's access list enters\n"
|
||||
"for that period of time) will be automatically dropped."), (unsigned long)chanserv_expire / 86400);
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"Note that any channel which is not used for %lu days "
|
||||
"(i.e. which no user on the channel's access list enters "
|
||||
"for that period of time) will be automatically dropped."
|
||||
),
|
||||
(unsigned long)chanserv_expire / 86400);
|
||||
}
|
||||
if (source.IsServicesOper())
|
||||
source.Reply(_(" \n"
|
||||
"Services Operators can also, depending on their access drop\n"
|
||||
"any channel, view (and modify) the access, levels and akick\n"
|
||||
"lists and settings for any channel."));
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"Services Operators can also, depending on their access drop "
|
||||
"any channel, view (and modify) the access, levels and akick "
|
||||
"lists and settings for any channel."
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
void OnCheckModes(Reference<Channel> &c) override
|
||||
|
||||
@@ -582,54 +582,68 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Maintains the \002access list\002 for a channel. The access\n"
|
||||
"list specifies which users are allowed chanop status or\n"
|
||||
"access to %s commands on the channel. Different\n"
|
||||
"user levels allow for access to different subsets of\n"
|
||||
"privileges. Any registered user not on the access list has\n"
|
||||
"a user level of 0, and any unregistered user has a user level\n"
|
||||
"of -1."), source.service->nick.c_str());
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The \002ACCESS ADD\002 command adds the given mask to the\n"
|
||||
"access list with the given user level; if the mask is\n"
|
||||
"already present on the list, its access level is changed to\n"
|
||||
"the level specified in the command. The \037level\037 specified\n"
|
||||
"may be a numerical level or the name of a privilege (eg AUTOOP).\n"
|
||||
"When a user joins the channel the access they receive is from the\n"
|
||||
"highest level entry in the access list."));
|
||||
source.Reply(_(
|
||||
"Maintains the \002access list\002 for a channel. The access "
|
||||
"list specifies which users are allowed chanop status or "
|
||||
"access to %s commands on the channel. Different "
|
||||
"user levels allow for access to different subsets of "
|
||||
"privileges. Any registered user not on the access list has "
|
||||
"a user level of 0, and any unregistered user has a user level "
|
||||
"of -1."
|
||||
"\n\n"
|
||||
"The \002ACCESS\032ADD\002 command adds the given mask to the "
|
||||
"access list with the given user level; if the mask is "
|
||||
"already present on the list, its access level is changed to "
|
||||
"the level specified in the command. The \037level\037 specified "
|
||||
"may be a numerical level or the name of a privilege (eg AUTOOP). "
|
||||
"When a user joins the channel the access they receive is from the "
|
||||
"highest level entry in the access list."
|
||||
),
|
||||
source.service->nick.c_str());
|
||||
|
||||
if (!Config->GetModule("chanserv").Get<bool>("disallow_channel_access"))
|
||||
source.Reply(_("The given mask may also be a channel, which will use the\n"
|
||||
"access list from the other channel up to the given \037level\037."));
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The \002ACCESS DEL\002 command removes the given nick from the\n"
|
||||
"access list. If a list of entry numbers is given, those\n"
|
||||
"entries are deleted. (See the example for LIST below.)\n"
|
||||
"You may remove yourself from an access list, even if you\n"
|
||||
"do not have access to modify that list otherwise."));
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The \002ACCESS LIST\002 command displays the access list. If\n"
|
||||
"a wildcard mask is given, only those entries matching the\n"
|
||||
"mask are displayed. If a list of entry numbers is given,\n"
|
||||
"only those entries are shown; for example:\n"
|
||||
" \002ACCESS #channel LIST 2-5,7-9\002\n"
|
||||
" Lists access entries numbered 2 through 5 and\n"
|
||||
" 7 through 9.\n"
|
||||
" \n"
|
||||
"The \002ACCESS VIEW\002 command displays the access list similar\n"
|
||||
"to \002ACCESS LIST\002 but shows the creator and last used time.\n"
|
||||
" \n"
|
||||
"The \002ACCESS CLEAR\002 command clears all entries of the\n"
|
||||
"access list."));
|
||||
{
|
||||
source.Reply(_(
|
||||
"The given mask may also be a channel, which will use the "
|
||||
"access list from the other channel up to the given \037level\037."
|
||||
));
|
||||
}
|
||||
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"The \002ACCESS\032DEL\002 command removes the given nick from the "
|
||||
"access list. If a list of entry numbers is given, those "
|
||||
"entries are deleted. (See the example for LIST below.) "
|
||||
"You may remove yourself from an access list, even if you "
|
||||
"do not have access to modify that list otherwise."
|
||||
"\n\n"
|
||||
"The \002ACCESS\032LIST\002 command displays the access list. If "
|
||||
"a wildcard mask is given, only those entries matching the "
|
||||
"mask are displayed. If a list of entry numbers is given, "
|
||||
"only those entries are shown; for example:\n"
|
||||
" \002ACCESS\032#channel\032LIST\0322-5,7-9\002\n"
|
||||
" Lists access entries numbered 2 through 5 and\n"
|
||||
" 7 through 9."
|
||||
"\n\n"
|
||||
"The \002ACCESS\032VIEW\002 command displays the access list similar "
|
||||
"to \002ACCESS\032LIST\002 but shows the creator and last used time."
|
||||
"\n\n"
|
||||
"The \002ACCESS\032CLEAR\002 command clears all entries of the "
|
||||
"access list."
|
||||
));
|
||||
|
||||
BotInfo *bi;
|
||||
Anope::string cmd;
|
||||
if (Command::FindCommandFromService("chanserv/levels", bi, cmd))
|
||||
{
|
||||
source.Reply(_("\002User access levels\002 can be seen by using the\n"
|
||||
"\002%s\002 command; type \002%s LEVELS\002 for\n"
|
||||
"information."),
|
||||
cmd.c_str(), bi->GetQueryCommand("generic/help").c_str());
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"\002User access levels\002 can be seen by using the "
|
||||
"\002%s\002 command; type \002%s\032LEVELS\002 for "
|
||||
"information."
|
||||
),
|
||||
cmd.c_str(),
|
||||
bi->GetQueryCommand("generic/help").c_str());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -665,7 +679,7 @@ class CommandCSLevels final
|
||||
Privilege *p = PrivilegeManager::FindPrivilege(what);
|
||||
if (p == NULL)
|
||||
{
|
||||
source.Reply(_("Setting \002%s\002 not known. Type \002%s LEVELS\002 for a list of valid settings."),
|
||||
source.Reply(_("Setting \002%s\002 not known. Type \002%s\032LEVELS\002 for a list of valid settings."),
|
||||
what.c_str(), source.service->GetQueryCommand("generic/help").c_str());
|
||||
}
|
||||
else
|
||||
@@ -708,7 +722,7 @@ class CommandCSLevels final
|
||||
return;
|
||||
}
|
||||
|
||||
source.Reply(_("Setting \002%s\002 not known. Type \002%s LEVELS\002 for a list of valid settings."),
|
||||
source.Reply(_("Setting \002%s\002 not known. Type \002%s\032LEVELS\002 for a list of valid settings."),
|
||||
what.c_str(), source.service->GetQueryCommand("generic/help").c_str());
|
||||
}
|
||||
|
||||
@@ -838,25 +852,28 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The \002LEVELS\002 command allows fine control over the meaning of\n"
|
||||
"the numeric access levels used for channels. With this\n"
|
||||
"command, you can define the access level required for most\n"
|
||||
"of %s's functions. (The \002SET FOUNDER\002 and this command\n"
|
||||
"are always restricted to the channel founder.)\n"
|
||||
" \n"
|
||||
"\002LEVELS SET\002 allows the access level for a function or group of\n"
|
||||
"functions to be changed. \002LEVELS DISABLE\002 (or \002DIS\002 for short)\n"
|
||||
"disables an automatic feature or disallows access to a\n"
|
||||
"function by anyone, INCLUDING the founder (although, the founder\n"
|
||||
"can always re-enable it). Use \002LEVELS SET founder\002 to make a level\n"
|
||||
"founder only.\n"
|
||||
" \n"
|
||||
"\002LEVELS LIST\002 shows the current levels for each function or\n"
|
||||
"group of functions. \002LEVELS RESET\002 resets the levels to the\n"
|
||||
"default levels of a newly-created channel.\n"
|
||||
" \n"
|
||||
"For a list of the features and functions whose levels can be\n"
|
||||
"set, see \002HELP LEVELS DESC\002."), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"The \002LEVELS\002 command allows fine control over the meaning of "
|
||||
"the numeric access levels used for channels. With this "
|
||||
"command, you can define the access level required for most "
|
||||
"of %s's functions. (The \002SET\032FOUNDER\002 and this command "
|
||||
"are always restricted to the channel founder)."
|
||||
"\n\n"
|
||||
"\002LEVELS\032SET\002 allows the access level for a function or group of "
|
||||
"functions to be changed. \002LEVELS\032DISABLE\002 (or \002DIS\002 for short) "
|
||||
"disables an automatic feature or disallows access to a "
|
||||
"function by anyone, INCLUDING the founder (although, the founder "
|
||||
"can always re-enable it). Use \002LEVELS\032SET founder\002 to make a level "
|
||||
"founder only."
|
||||
"\n\n"
|
||||
"\002LEVELS\032LIST\002 shows the current levels for each function or "
|
||||
"group of functions. \002LEVELS\032RESET\002 resets the levels to the "
|
||||
"default levels of a newly-created channel."
|
||||
"\n\n"
|
||||
"For a list of the features and functions whose levels can be "
|
||||
"set, see \002HELP\032LEVELS\032DESC\002."
|
||||
),
|
||||
source.service->nick.c_str());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -488,40 +488,44 @@ public:
|
||||
BotInfo *bi = Config->GetClient("NickServ");
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Maintains the \002AutoKick list\002 for a channel. If a user\n"
|
||||
"on the AutoKick list attempts to join the channel,\n"
|
||||
"%s will ban that user from the channel, then kick\n"
|
||||
"the user.\n"
|
||||
" \n"
|
||||
"The \002AKICK ADD\002 command adds the given nick or usermask\n"
|
||||
"to the AutoKick list. If a \037reason\037 is given with\n"
|
||||
"the command, that reason will be used when the user is\n"
|
||||
"kicked; if not, the default reason is \"User has been\n"
|
||||
"banned from the channel\".\n"
|
||||
"When akicking a \037registered nick\037 the %s account\n"
|
||||
"will be added to the akick list instead of the mask.\n"
|
||||
"All users within that nickgroup will then be akicked.\n"),
|
||||
source.service->nick.c_str(), bi ? bi->nick.c_str() : "NickServ");
|
||||
source.Reply(_(
|
||||
" \n"
|
||||
"The \002AKICK DEL\002 command removes the given nick or mask\n"
|
||||
"from the AutoKick list. It does not, however, remove any\n"
|
||||
"bans placed by an AutoKick; those must be removed\n"
|
||||
"manually.\n"
|
||||
" \n"
|
||||
"The \002AKICK LIST\002 command displays the AutoKick list, or\n"
|
||||
"optionally only those AutoKick entries which match the\n"
|
||||
"given mask.\n"
|
||||
" \n"
|
||||
"The \002AKICK VIEW\002 command is a more verbose version of the\n"
|
||||
"\002AKICK LIST\002 command.\n"
|
||||
" \n"
|
||||
"The \002AKICK ENFORCE\002 command causes %s to enforce the\n"
|
||||
"current AKICK list by removing those users who match an\n"
|
||||
"AKICK mask.\n"
|
||||
" \n"
|
||||
"The \002AKICK CLEAR\002 command clears all entries of the\n"
|
||||
"akick list."), source.service->nick.c_str());
|
||||
"Maintains the \002AutoKick list\002 for a channel. If a user "
|
||||
"on the AutoKick list attempts to join the channel, "
|
||||
"%s will ban that user from the channel, then kick "
|
||||
"the user."
|
||||
"\n\n"
|
||||
"The \002AKICK\032ADD\002 command adds the given nick or usermask "
|
||||
"to the AutoKick list. If a \037reason\037 is given with "
|
||||
"the command, that reason will be used when the user is "
|
||||
"kicked; if not, the default reason is \"User has been "
|
||||
"banned from the channel\". "
|
||||
"When akicking a \037registered nick\037 the %s account "
|
||||
"will be added to the akick list instead of the mask. "
|
||||
"All users within that nickgroup will then be akicked. "
|
||||
"\n\n"
|
||||
"The \002AKICK\032DEL\002 command removes the given nick or mask "
|
||||
"from the AutoKick list. It does not, however, remove any "
|
||||
"bans placed by an AutoKick; those must be removed "
|
||||
"manually."
|
||||
"\n\n"
|
||||
"The \002AKICK\032LIST\002 command displays the AutoKick list, or "
|
||||
"optionally only those AutoKick entries which match the "
|
||||
"given mask."
|
||||
"\n\n"
|
||||
"The \002AKICK\032VIEW\002 command is a more verbose version of the "
|
||||
"\002AKICK\032LIST\002 command."
|
||||
"\n\n"
|
||||
"The \002AKICK\032ENFORCE\002 command causes %s to enforce the "
|
||||
"current AKICK list by removing those users who match an "
|
||||
"AKICK mask."
|
||||
"\n\n"
|
||||
"The \002AKICK\032CLEAR\002 command clears all entries of the "
|
||||
"akick list."
|
||||
),
|
||||
source.service->nick.c_str(),
|
||||
source.service->nick.c_str(),
|
||||
bi ? bi->nick.c_str() : "NickServ");
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -240,12 +240,14 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Bans a given nick or mask on a channel. An optional expiry may\n"
|
||||
"be given to cause services to remove the ban after a set amount\n"
|
||||
"of time.\n"
|
||||
" \n"
|
||||
"By default, limited to AOPs or those with level 5 access\n"
|
||||
"and above on the channel. Channel founders may ban masks."));
|
||||
source.Reply(_(
|
||||
"Bans a given nick or mask on a channel. An optional expiry may "
|
||||
"be given to cause services to remove the ban after a set amount "
|
||||
"of time."
|
||||
"\n\n"
|
||||
"By default, limited to AOPs or those with level 5 access "
|
||||
"and above on the channel. Channel founders may ban masks."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -239,10 +239,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Copies all settings, access, akicks, etc from \002channel\002 to the\n"
|
||||
"\002target\002 channel. If \037what\037 is \002ACCESS\002, \002AKICK\002, \002BADWORDS\002,\n"
|
||||
"or \002LEVELS\002 then only the respective settings are cloned.\n"
|
||||
"You must be the founder of \037channel\037 and \037target\037."));
|
||||
source.Reply(_(
|
||||
"Copies all settings, access, akicks, etc from \002channel\002 to the "
|
||||
"\002target\002 channel. If \037what\037 is \002ACCESS\002, \002AKICK\002, \002BADWORDS\002, "
|
||||
"or \002LEVELS\002 then only the respective settings are cloned. "
|
||||
"You must be the founder of \037channel\037 and \037target\037."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -88,16 +88,28 @@ public:
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
if (source.IsServicesOper())
|
||||
source.Reply(_("Unregisters the specified channel. Only \002Services Operators\002\n"
|
||||
"can drop a channel of which they are not the founder of."));
|
||||
{
|
||||
source.Reply(_(
|
||||
"Unregisters the specified channel. Only \002Services Operators\002 "
|
||||
"can drop a channel of which they are not the founder of."
|
||||
));
|
||||
}
|
||||
else
|
||||
source.Reply(_("Unregisters the named channel. Can only be used by\n"
|
||||
"the \002channel founder\002."));
|
||||
{
|
||||
source.Reply(_(
|
||||
"Unregisters the named channel. Can only be used by "
|
||||
"the \002channel founder\002."
|
||||
));
|
||||
}
|
||||
|
||||
source.Reply(" ");
|
||||
if (source.HasPriv("chanserv/drop/override"))
|
||||
source.Reply(_("Additionally, Services Operators with the \037chanserv/drop/override\037 permission can\n"
|
||||
"replace \037code\037 with \002OVERRIDE\002 to drop without a confirmation code."));
|
||||
{
|
||||
source.Reply(_(
|
||||
"Additionally, Services Operators with the \037chanserv/drop/override\037 permission can "
|
||||
"replace \037code\037 with \002OVERRIDE\002 to drop without a confirmation code."
|
||||
));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -240,19 +240,21 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Enforce various channel modes and set options. The \037channel\037\n"
|
||||
"option indicates what channel to enforce the modes and options\n"
|
||||
"on. The \037what\037 option indicates what modes and options to\n"
|
||||
"enforce, and can be any of \002SECUREOPS\002, \002RESTRICTED\002, \002REGONLY\002, \002SSLONLY\002,\n"
|
||||
"\002BANS\002, or \002LIMIT\002.\n"
|
||||
" \n"
|
||||
"Use \002SECUREOPS\002 to enforce the SECUREOPS option, even if it is not\n"
|
||||
"enabled. Use \002RESTRICTED\002 to enforce the RESTRICTED option, also\n"
|
||||
"if it's not enabled. Use \002REGONLY\002 to kick all unregistered users\n"
|
||||
"from the channel. Use \002SSLONLY\002 to kick all users not using a secure\n"
|
||||
"connection from the channel. \002BANS\002 will enforce bans on the channel by\n"
|
||||
"kicking users affected by them, and \002LIMIT\002 will kick users until the\n"
|
||||
"user count drops below the channel limit, if one is set."));
|
||||
source.Reply(_(
|
||||
"Enforce various channel modes and set options. The \037channel\037 "
|
||||
"option indicates what channel to enforce the modes and options "
|
||||
"on. The \037what\037 option indicates what modes and options to "
|
||||
"enforce, and can be any of \002SECUREOPS\002, \002RESTRICTED\002, \002REGONLY\002, \002SSLONLY\002, "
|
||||
"\002BANS\002, or \002LIMIT\002."
|
||||
"\n\n"
|
||||
"Use \002SECUREOPS\002 to enforce the SECUREOPS option, even if it is not "
|
||||
"enabled. Use \002RESTRICTED\002 to enforce the RESTRICTED option, also "
|
||||
"if it's not enabled. Use \002REGONLY\002 to kick all unregistered users "
|
||||
"from the channel. Use \002SSLONLY\002 to kick all users not using a secure "
|
||||
"connection from the channel. \002BANS\002 will enforce bans on the channel by "
|
||||
"kicking users affected by them, and \002LIMIT\002 will kick users until the "
|
||||
"user count drops below the channel limit, if one is set."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -245,26 +245,28 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Controls what messages will be sent to users when they join the channel."));
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The \002ENTRYMSG ADD\002 command adds the given message to\n"
|
||||
"the list of messages shown to users when they join\n"
|
||||
"the channel."));
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The \002ENTRYMSG DEL\002 command removes the specified message from\n"
|
||||
"the list of messages shown to users when they join\n"
|
||||
"the channel. You can remove a message by specifying its number\n"
|
||||
"which you can get by listing the messages as explained below."));
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The \002ENTRYMSG LIST\002 command displays a listing of messages\n"
|
||||
"shown to users when they join the channel."));
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The \002ENTRYMSG CLEAR\002 command clears all entries from\n"
|
||||
"the list of messages shown to users when they join\n"
|
||||
"the channel, effectively disabling entry messages."));
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Adding, deleting, or clearing entry messages requires the\n"
|
||||
"SET permission."));
|
||||
source.Reply(_(
|
||||
"Controls what messages will be sent to users when they join the channel."
|
||||
"\n\n"
|
||||
"The \002ENTRYMSG\032ADD\002 command adds the given message to "
|
||||
"the list of messages shown to users when they join "
|
||||
"the channel."
|
||||
"\n\n"
|
||||
"The \002ENTRYMSG\032DEL\002 command removes the specified message from "
|
||||
"the list of messages shown to users when they join "
|
||||
"the channel. You can remove a message by specifying its number "
|
||||
"which you can get by listing the messages as explained below."
|
||||
"\n\n"
|
||||
"The \002ENTRYMSG\032LIST\002 command displays a listing of messages "
|
||||
"shown to users when they join the channel."
|
||||
"\n\n"
|
||||
"The \002ENTRYMSG\032CLEAR\002 command clears all entries from "
|
||||
"the list of messages shown to users when they join "
|
||||
"the channel, effectively disabling entry messages."
|
||||
"\n\n"
|
||||
"Adding, deleting, or clearing entry messages requires the "
|
||||
"SET permission."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -444,24 +444,27 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("%s is another way to modify the channel access list, similar to\n"
|
||||
"the XOP and ACCESS methods."), source.command.c_str());
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The \002MODIFY\002 command allows you to modify the access list. If the mask is\n"
|
||||
"not already on the access list it is added, then the changes are applied.\n"
|
||||
"If the mask has no more flags, then the mask is removed from the access list.\n"
|
||||
"Additionally, you may use +* or -* to add or remove all flags, respectively. You are\n"
|
||||
"only able to modify the access list if you have the proper permission on the channel,\n"
|
||||
"and even then you can only give other people access to the equivalent of what your access is."));
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The \002LIST\002 command allows you to list existing entries on the channel access list.\n"
|
||||
"If a mask is given, the mask is wildcard matched against all existing entries on the\n"
|
||||
"access list, and only those entries are returned. If a set of flags is given, only those\n"
|
||||
"on the access list with the specified flags are returned."));
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The \002CLEAR\002 command clears the channel access list. This requires channel founder access."));
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The available flags are:"));
|
||||
source.Reply(_(
|
||||
"%s is another way to modify the channel access list, similar to "
|
||||
"the XOP and ACCESS methods."
|
||||
"\n\n"
|
||||
"The \002MODIFY\002 command allows you to modify the access list. If the mask is "
|
||||
"not already on the access list it is added, then the changes are applied. "
|
||||
"If the mask has no more flags, then the mask is removed from the access list. "
|
||||
"Additionally, you may use +* or -* to add or remove all flags, respectively. You are "
|
||||
"only able to modify the access list if you have the proper permission on the channel, "
|
||||
"and even then you can only give other people access to the equivalent of what your access is."
|
||||
"\n\n"
|
||||
"The \002LIST\002 command allows you to list existing entries on the channel access list. "
|
||||
"If a mask is given, the mask is wildcard matched against all existing entries on the "
|
||||
"access list, and only those entries are returned. If a set of flags is given, only those "
|
||||
"on the access list with the specified flags are returned."
|
||||
"\n\n"
|
||||
"The \002CLEAR\002 command clears the channel access list. This requires channel founder access."
|
||||
"\n\n"
|
||||
"The available flags are:"
|
||||
),
|
||||
source.command.c_str());
|
||||
|
||||
typedef std::multimap<char, Anope::string, ci::less> reverse_map;
|
||||
reverse_map reverse;
|
||||
|
||||
@@ -74,12 +74,14 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Lists information about the specified registered channel,\n"
|
||||
"including its founder, time of registration, last\n"
|
||||
"time used, and description. If the user issuing the\n"
|
||||
"command has the appropriate access for it, then the\n"
|
||||
"successor, last topic set, settings and expiration\n"
|
||||
"time will also be displayed when applicable."));
|
||||
source.Reply(_(
|
||||
"Lists information about the specified registered channel, "
|
||||
"including its founder, time of registration, last "
|
||||
"time used, and description. If the user issuing the "
|
||||
"command has the appropriate access for it, then the "
|
||||
"successor, last topic set, settings and expiration "
|
||||
"time will also be displayed when applicable."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -89,11 +89,14 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Tells %s to invite you or an optionally specified\n"
|
||||
"nick into the given channel.\n"
|
||||
" \n"
|
||||
"By default, limited to AOPs or those with level 5 access and above\n"
|
||||
"on the channel."), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Tells %s to invite you or an optionally specified "
|
||||
"nick into the given channel."
|
||||
"\n\n"
|
||||
"By default, limited to AOPs or those with level 5 access and above "
|
||||
"on the channel."
|
||||
),
|
||||
source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -131,10 +131,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Kicks a specified nick from a channel.\n"
|
||||
" \n"
|
||||
"By default, limited to AOPs or those with level 5 access\n"
|
||||
"and above on the channel. Channel founders can also specify masks."));
|
||||
source.Reply(_(
|
||||
"Kicks a specified nick from a channel."
|
||||
"\n\n"
|
||||
"By default, limited to AOPs or those with level 5 access "
|
||||
"and above on the channel. Channel founders can also specify masks."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -42,8 +42,10 @@ public:
|
||||
if (!num1.has_value() || !num2.has_value())
|
||||
{
|
||||
source.Reply(LIST_INCORRECT_RANGE);
|
||||
source.Reply(_("To search for channels starting with #, search for the channel\n"
|
||||
"name without the #-sign prepended (\002anope\002 instead of \002#anope\002)."));
|
||||
source.Reply(_(
|
||||
"To search for channels starting with #, search for the channel "
|
||||
"name without the #-sign prepended (\002anope\002 instead of \002#anope\002)."
|
||||
));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -133,38 +135,43 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Lists all registered channels matching the given pattern.\n"
|
||||
"Channels with the \002PRIVATE\002 option set will only be\n"
|
||||
"displayed to Services Operators with the proper access.\n"
|
||||
"Channels with the \002NOEXPIRE\002 option set will have\n"
|
||||
"a \002!\002 prefixed to the channel for Services Operators to see.\n"
|
||||
" \n"
|
||||
"Note that a preceding '#' specifies a range, channel names\n"
|
||||
"are to be written without '#'.\n"
|
||||
" \n"
|
||||
"If the SUSPENDED or NOEXPIRE options are given, only channels\n"
|
||||
"which, respectively, are SUSPENDED or have the NOEXPIRE\n"
|
||||
"flag set will be displayed. If multiple options are given,\n"
|
||||
"all channels matching at least one option will be displayed.\n"
|
||||
"Note that these options are limited to \037Services Operators\037.\n"
|
||||
" \n"
|
||||
"Examples:\n"
|
||||
" \n"
|
||||
" \002LIST *anope*\002\n"
|
||||
" Lists all registered channels with \002anope\002 in their\n"
|
||||
" names (case insensitive).\n"
|
||||
" \n"
|
||||
" \002LIST * NOEXPIRE\002\n"
|
||||
" Lists all registered channels which have been set to not expire.\n"
|
||||
" \n"
|
||||
" \002LIST #51-100\002\n"
|
||||
" Lists all registered channels within the given range (51-100)."));
|
||||
source.Reply(_(
|
||||
"Lists all registered channels matching the given pattern. "
|
||||
"Channels with the \002PRIVATE\002 option set will only be "
|
||||
"displayed to Services Operators with the proper access. "
|
||||
"Channels with the \002NOEXPIRE\002 option set will have "
|
||||
"a \002!\002 prefixed to the channel for Services Operators to see."
|
||||
"\n\n"
|
||||
"Note that a preceding '#' specifies a range, channel names "
|
||||
"are to be written without '#'."
|
||||
"\n\n"
|
||||
"If the SUSPENDED or NOEXPIRE options are given, only channels "
|
||||
"which, respectively, are SUSPENDED or have the NOEXPIRE "
|
||||
"flag set will be displayed. If multiple options are given, "
|
||||
"all channels matching at least one option will be displayed. "
|
||||
"Note that these options are limited to \037Services Operators\037."
|
||||
"\n\n"
|
||||
"Examples:"
|
||||
"\n\n"
|
||||
" \002LIST\032*anope*\002\n"
|
||||
" Lists all registered channels with \002anope\002 in their\n"
|
||||
" names (case insensitive)."
|
||||
"\n\n"
|
||||
" \002LIST\032*\032NOEXPIRE\002\n"
|
||||
" Lists all registered channels which have been set to not expire."
|
||||
"\n\n"
|
||||
" \002LIST #51-100\002\n"
|
||||
" Lists all registered channels within the given range (51-100)."
|
||||
));
|
||||
|
||||
if (!Config->GetBlock("options").Get<const Anope::string>("regexengine").empty())
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Regex matches are also supported using the %s engine.\n"
|
||||
"Enclose your pattern in // if this is desired."), Config->GetBlock("options").Get<const Anope::string>("regexengine").c_str());
|
||||
source.Reply(_(
|
||||
"Regex matches are also supported using the %s engine. "
|
||||
"Enclose your pattern in // if this is desired."
|
||||
),
|
||||
Config->GetBlock("options").Get<const Anope::string>("regexengine").c_str());
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -234,8 +241,10 @@ public:
|
||||
BotInfo *bi;
|
||||
Anope::string cmd;
|
||||
if (Command::FindCommandFromService("chanserv/list", bi, cmd))
|
||||
source.Reply(_("When \002private\002 is set, the channel will not appear in\n"
|
||||
"%s's %s command."), bi->nick.c_str(), cmd.c_str());
|
||||
{
|
||||
source.Reply(_("When \002private\002 is set, the channel will not appear in %s's %s command."),
|
||||
bi->nick.c_str(), cmd.c_str());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
+23
-19
@@ -271,26 +271,30 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The %s command allows users to configure logging settings\n"
|
||||
"for their channel. If no parameters are given this command\n"
|
||||
"lists the current logging methods in place for this channel.\n"
|
||||
" \n"
|
||||
"Otherwise, \037command\037 must be a command name, and \037method\037\n"
|
||||
"is one of the following logging methods:\n"
|
||||
" \n"
|
||||
" MESSAGE [status], NOTICE [status], MEMO\n"
|
||||
" \n"
|
||||
"Which are used to message, notice, and memo the channel respectively.\n"
|
||||
"With MESSAGE or NOTICE you must have a service bot assigned to and joined\n"
|
||||
"to your channel. Status may be a channel status such as @ or +.\n"
|
||||
" \n"
|
||||
"To remove a logging method use the same syntax as you would to add it.\n"
|
||||
" \n"
|
||||
source.Reply(_(
|
||||
"The %s command allows users to configure logging settings "
|
||||
"for their channel. If no parameters are given this command "
|
||||
"lists the current logging methods in place for this channel."
|
||||
"\n\n"
|
||||
"Otherwise, \037command\037 must be a command name, and \037method\037 "
|
||||
"is one of the following logging methods:"
|
||||
"\n\n"
|
||||
" MESSAGE\032[status], NOTICE\032[status], MEMO"
|
||||
"\n\n"
|
||||
"Which are used to message, notice, and memo the channel respectively. "
|
||||
"With MESSAGE or NOTICE you must have a service bot assigned to and joined "
|
||||
"to your channel. Status may be a channel status such as @ or +."
|
||||
"\n\n"
|
||||
"To remove a logging method use the same syntax as you would to add it."
|
||||
"\n\n"
|
||||
"Example:\n"
|
||||
" %s #anope chanserv/access MESSAGE @\n"
|
||||
" Would message any channel operators whenever someone used the\n"
|
||||
" ACCESS command on ChanServ on the channel."),
|
||||
source.command.upper().c_str(), source.command.upper().c_str());
|
||||
" %s\032#anope\032chanserv/access\032MESSAGE\032@\n"
|
||||
" Would message any channel operators whenever someone used the "
|
||||
"ACCESS command on ChanServ on the channel."
|
||||
),
|
||||
source.command.upper().c_str(),
|
||||
source.command.upper().c_str());
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -774,29 +774,35 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Mainly controls mode locks and mode access (which is different from channel access)\n"
|
||||
"on a channel.\n"
|
||||
" \n"
|
||||
"The \002%s LOCK\002 command allows you to add, delete, and view mode locks on a channel.\n"
|
||||
"If a mode is locked on or off, services will not allow that mode to be changed. The \002SET\002\n"
|
||||
"command will clear all existing mode locks and set the new one given, while \002ADD\002 and \002DEL\002\n"
|
||||
"modify the existing mode lock.\n"
|
||||
"Example:\n"
|
||||
" \002MODE #channel LOCK ADD +bmnt *!*@*aol*\002\n"
|
||||
" \n"
|
||||
"The \002%s SET\002 command allows you to set modes through services. Wildcards * and ? may\n"
|
||||
"be given as parameters for list and status modes.\n"
|
||||
"Example:\n"
|
||||
" \002MODE #channel SET +v *\002\n"
|
||||
" Sets voice status to all users in the channel.\n"
|
||||
" \n"
|
||||
" \002MODE #channel SET -b ~c:*\n"
|
||||
" Clears all extended bans that start with ~c:\n"
|
||||
" \n"
|
||||
"The \002%s CLEAR\002 command is an easy way to clear modes on a channel. \037what\037 may be\n"
|
||||
"any mode name. Examples include bans, excepts, inviteoverrides, ops, halfops, and voices. If \037what\037\n"
|
||||
"is not given then all basic modes are removed."),
|
||||
source.command.upper().c_str(), source.command.upper().c_str(), source.command.upper().c_str());
|
||||
source.Reply(_(
|
||||
"Mainly controls mode locks and mode access (which is different from channel access) "
|
||||
"on a channel."
|
||||
"\n\n"
|
||||
"The \002%s\032LOCK\002 command allows you to add, delete, and view mode locks on a channel. "
|
||||
"If a mode is locked on or off, services will not allow that mode to be changed. The \002SET\002 "
|
||||
"command will clear all existing mode locks and set the new one given, while \002ADD\002 and \002DEL\002 "
|
||||
"modify the existing mode lock."
|
||||
"\n\n"
|
||||
"Example:\n"
|
||||
" \002MODE\032#channel\032LOCK\032ADD\032+bmnt\032*!*@*aol*\002\n"
|
||||
"\n\n"
|
||||
"The \002%s\032SET\002 command allows you to set modes through services. Wildcards * and ? may "
|
||||
"be given as parameters for list and status modes."
|
||||
"\n\n"
|
||||
"Example:\n"
|
||||
" \002MODE\032#channel\032SET\032+v\032*\002\n"
|
||||
" Sets voice status to all users in the channel."
|
||||
"\n\n"
|
||||
" \002MODE\032#channel\032SET\032-b\032~c:*\n"
|
||||
" Clears all extended bans that start with ~c:"
|
||||
"\n\n"
|
||||
"The \002%s\032CLEAR\002 command is an easy way to clear modes on a channel. \037what\037 may be "
|
||||
"any mode name. Examples include bans, excepts, inviteoverrides, ops, halfops, and voices. If \037what\037 "
|
||||
"is not given then all basic modes are removed."
|
||||
),
|
||||
source.command.upper().c_str(),
|
||||
source.command.upper().c_str(),
|
||||
source.command.upper().c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -924,13 +930,15 @@ public:
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
if (m.first)
|
||||
source.Reply(_("Gives %s status to the selected nicks on a channel. If \037nick\037 is\n"
|
||||
"not given, it will %s you."),
|
||||
m.second.upper().c_str(), m.second.lower().c_str());
|
||||
{
|
||||
source.Reply(_("Gives %s status to the selected nicks on a channel. If \037nick\037 is not given, it will %s you."),
|
||||
m.second.upper().c_str(), m.second.lower().c_str());
|
||||
}
|
||||
else
|
||||
source.Reply(_("Removes %s status from the selected nicks on a channel. If \037nick\037 is\n"
|
||||
"not given, it will de%s you."),
|
||||
m.second.upper().c_str(), m.second.lower().c_str());
|
||||
{
|
||||
source.Reply(_("Removes %s status from the selected nicks on a channel. If \037nick\037 is not given, it will de%s you."),
|
||||
m.second.upper().c_str(), m.second.lower().c_str());
|
||||
}
|
||||
source.Reply(" ");
|
||||
source.Reply(_("You must have the %s(ME) privilege on the channel to use this command."), m.second.upper().c_str());
|
||||
|
||||
|
||||
@@ -84,29 +84,41 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Registers a channel in the %s database. In order\n"
|
||||
"to use this command, you must first be a channel operator\n"
|
||||
"on the channel you're trying to register.\n"
|
||||
"The description, which is optional, is a\n"
|
||||
"general description of the channel's purpose.\n"
|
||||
" \n"
|
||||
"When you register a channel, you are recorded as the\n"
|
||||
"\"founder\" of the channel. The channel founder is allowed\n"
|
||||
"to change all of the channel settings for the channel;\n"
|
||||
"%s will also automatically give the founder\n"
|
||||
"channel operator privileges when they enter the channel."),
|
||||
source.service->nick.c_str(), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Registers a channel in the %s database. In order "
|
||||
"to use this command, you must first be a channel operator "
|
||||
"on the channel you're trying to register. "
|
||||
"The description, which is optional, is a "
|
||||
"general description of the channel's purpose. "
|
||||
"\n\n"
|
||||
"When you register a channel, you are recorded as the "
|
||||
"\"founder\" of the channel. The channel founder is allowed "
|
||||
"to change all of the channel settings for the channel; "
|
||||
"%s will also automatically give the founder "
|
||||
"channel operator privileges when they enter the channel."
|
||||
),
|
||||
source.service->nick.c_str(),
|
||||
source.service->nick.c_str());
|
||||
|
||||
BotInfo *bi;
|
||||
Anope::string cmd;
|
||||
if (Command::FindCommandFromService("chanserv/access", bi, cmd))
|
||||
source.Reply(_(" \n"
|
||||
"See the \002%s\002 command (\002%s ACCESS\002) for\n"
|
||||
"information on giving a subset of these privileges to\n"
|
||||
"other channel users.\n"),
|
||||
cmd.c_str(), bi->GetQueryCommand("generic/help").c_str());
|
||||
source.Reply(_(" \n"
|
||||
"NOTICE: In order to register a channel, you must have\n"
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"See the \002%s\002 command (\002%s\032ACCESS\002) for "
|
||||
"information on giving a subset of these privileges to "
|
||||
"other channel users."
|
||||
),
|
||||
cmd.c_str(),
|
||||
bi->GetQueryCommand("generic/help").c_str());
|
||||
}
|
||||
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"NOTICE: In order to register a channel, you must have "
|
||||
"first registered your nickname."));
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -181,13 +181,17 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The \002STATS\002 command prints out statistics about stored nicks and memory usage."));
|
||||
source.Reply(_("The \002CLEAR\002 command lets you clean the database by removing all entries from the\n"
|
||||
"database that were added within \037time\037.\n"
|
||||
" \n"
|
||||
source.Reply(_(
|
||||
"The \002STATS\002 command prints out statistics about stored nicks and memory usage."
|
||||
"\n\n"
|
||||
"The \002CLEAR\002 command lets you clean the database by removing all entries from the "
|
||||
"database that were added within \037time\037."
|
||||
"\n\n"
|
||||
"Example:\n"
|
||||
" %s CLEAR 30m\n"
|
||||
" Will remove all entries that were added within the last 30 minutes."), source.command.c_str());
|
||||
" %s\032CLEAR\03230m\n"
|
||||
" Will remove all entries that were added within the last 30 minutes."
|
||||
),
|
||||
source.command.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -374,9 +378,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Checks for the last time \037nick\037 was seen joining, leaving,\n"
|
||||
"or changing nick on the network and tells you when and, depending\n"
|
||||
"on channel or user settings, where it was."));
|
||||
source.Reply(_(
|
||||
"Checks for the last time \037nick\037 was seen joining, leaving, "
|
||||
"or changing nick on the network and tells you when and, depending "
|
||||
"on channel or user settings, where it was."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
+117
-83
@@ -31,9 +31,10 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows the channel founder to set various channel options\n"
|
||||
"and other information.\n"
|
||||
" \n"
|
||||
source.Reply(_(
|
||||
"Allows the channel founder to set various channel options "
|
||||
"and other information."
|
||||
"\n\n"
|
||||
"Available options:"));
|
||||
Anope::string this_name = source.command;
|
||||
bool hide_privileged_commands = Config->GetBlock("options").Get<bool>("hideprivilegedcommands"),
|
||||
@@ -59,8 +60,7 @@ public:
|
||||
c->OnServHelp(source);
|
||||
}
|
||||
}
|
||||
source.Reply(_("Type \002%s \037option\037\002 for more information on a\n"
|
||||
"particular option."),
|
||||
source.Reply(_("Type \002%s\032\037option\037\002 for more information on a particular option."),
|
||||
source.service->GetQueryCommand("generic/help", this_name).c_str());
|
||||
return true;
|
||||
}
|
||||
@@ -122,9 +122,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Enables or disables %s's autoop feature for a\n"
|
||||
"channel. When disabled, users who join the channel will\n"
|
||||
"not automatically gain any status from %s."), source.service->nick.c_str(),
|
||||
source.Reply(_(
|
||||
"Enables or disables %s's autoop feature for a "
|
||||
"channel. When disabled, users who join the channel will "
|
||||
"not automatically gain any status from %s."
|
||||
),
|
||||
source.service->nick.c_str(),
|
||||
source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
@@ -182,15 +185,17 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets the ban type that will be used by services whenever\n"
|
||||
"they need to ban someone from your channel.\n"
|
||||
" \n"
|
||||
"Bantype is a number between 0 and 3 that means:\n"
|
||||
" \n"
|
||||
"0: ban in the form *!user@host\n"
|
||||
"1: ban in the form *!*user@host\n"
|
||||
"2: ban in the form *!*@host\n"
|
||||
"3: ban in the form *!*user@*.domain"));
|
||||
source.Reply(_(
|
||||
"Sets the ban type that will be used by services whenever "
|
||||
"they need to ban someone from your channel."
|
||||
"\n\n"
|
||||
"Bantype is a number between 0 and 3 that means:"
|
||||
"\n\n"
|
||||
"0: ban in the form *!user@host\n"
|
||||
"1: ban in the form *!*user@host\n"
|
||||
"2: ban in the form *!*@host\n"
|
||||
"3: ban in the form *!*user@*.domain"
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -252,8 +257,10 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets the description for the channel, which shows up with\n"
|
||||
"the \002LIST\002 and \002INFO\002 commands."));
|
||||
source.Reply(_(
|
||||
"Sets the description for the channel, which shows up with "
|
||||
"the \002LIST\002 and \002INFO\002 commands."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -322,8 +329,10 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Changes the founder of a channel. The new nickname must\n"
|
||||
"be a registered one."));
|
||||
source.Reply(_(
|
||||
"Changes the founder of a channel. The new nickname must "
|
||||
"be a registered one."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -387,9 +396,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Enables or disables keepmodes for the given channel. If keep\n"
|
||||
"modes is enabled, services will remember modes set on the channel\n"
|
||||
"and attempt to re-set them the next time the channel is created."));
|
||||
source.Reply(_(
|
||||
"Enables or disables keepmodes for the given channel. If keep "
|
||||
"modes is enabled, services will remember modes set on the channel "
|
||||
"and attempt to re-set them the next time the channel is created."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -452,10 +463,13 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Enables or disables the \002peace\002 option for a channel.\n"
|
||||
"When \002peace\002 is set, a user won't be able to kick,\n"
|
||||
"ban or remove a channel status of a user that has\n"
|
||||
"a level superior or equal to theirs via %s commands."), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Enables or disables the \002peace\002 option for a channel. "
|
||||
"When \002peace\002 is set, a user won't be able to kick, "
|
||||
"ban or remove a channel status of a user that has "
|
||||
"a level superior or equal to theirs via %s commands."
|
||||
),
|
||||
source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -595,26 +609,30 @@ public:
|
||||
BotInfo *ChanServ = Config->GetClient("ChanServ");
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Enables or disables the persistent channel setting.\n"
|
||||
"When persistent is set, the service bot will remain\n"
|
||||
"in the channel when it has emptied of users.\n"
|
||||
" \n"
|
||||
"If your IRCd does not have a permanent (persistent) channel\n"
|
||||
"mode you must have a service bot in your channel to\n"
|
||||
"set persist on, and it can not be unassigned while persist\n"
|
||||
"is on.\n"
|
||||
" \n"
|
||||
"If this network does not have %s enabled and does\n"
|
||||
"not have a permanent channel mode, %s will\n"
|
||||
"join your channel when you set persist on (and leave when\n"
|
||||
"it has been set off).\n"
|
||||
" \n"
|
||||
"If your IRCd has a permanent (persistent) channel mode\n"
|
||||
"and it is set or unset (for any reason, including MODE LOCK),\n"
|
||||
"persist is automatically set and unset for the channel as well.\n"
|
||||
"Additionally, services will set or unset this mode when you\n"
|
||||
"set persist on or off."), BotServ ? BotServ->nick.c_str() : "BotServ",
|
||||
ChanServ ? ChanServ->nick.c_str() : "ChanServ");
|
||||
source.Reply(_(
|
||||
"Enables or disables the persistent channel setting. "
|
||||
"When persistent is set, the service bot will remain "
|
||||
"in the channel when it has emptied of users. "
|
||||
"\n\n"
|
||||
"If your IRCd does not have a permanent (persistent) channel "
|
||||
"mode you must have a service bot in your channel to "
|
||||
"set persist on, and it can not be unassigned while persist "
|
||||
"is on."
|
||||
"\n\n"
|
||||
"If this network does not have %s enabled and does "
|
||||
"not have a permanent channel mode, %s will "
|
||||
"join your channel when you set persist on (and leave when "
|
||||
"it has been set off)."
|
||||
"\n\n"
|
||||
"If your IRCd has a permanent (persistent) channel mode "
|
||||
"and it is set or unset (for any reason, including MODE LOCK), "
|
||||
"persist is automatically set and unset for the channel as well. "
|
||||
"Additionally, services will set or unset this mode when you "
|
||||
"set persist on or off."
|
||||
),
|
||||
BotServ ? BotServ->nick.c_str() : "BotServ",
|
||||
ChanServ ? ChanServ->nick.c_str() : "ChanServ"
|
||||
);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -675,9 +693,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Enables or disables the \002restricted access\002 option for a\n"
|
||||
"channel. When \002restricted access\002 is set, users not on the access list will\n"
|
||||
"instead be kicked and banned from the channel."));
|
||||
source.Reply(_(
|
||||
"Enables or disables the \002restricted access\002 option for a "
|
||||
"channel. When \002restricted access\002 is set, users not on the access list will "
|
||||
"instead be kicked and banned from the channel."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -738,11 +758,13 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Enables or disables the \002secure founder\002 option for a channel.\n"
|
||||
"When \002secure founder\002 is set, only the real founder will be\n"
|
||||
"able to drop the channel, change its founder and its successor,\n"
|
||||
"and not those who have founder level access through\n"
|
||||
"the access/qop command."));
|
||||
source.Reply(_(
|
||||
"Enables or disables the \002secure founder\002 option for a channel. "
|
||||
"When \002secure founder\002 is set, only the real founder will be "
|
||||
"able to drop the channel, change its founder and its successor, "
|
||||
"and not those who have founder level access through "
|
||||
"the access/qop command."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -803,9 +825,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Enables or disables the \002secure ops\002 option for a channel.\n"
|
||||
"When \002secure ops\002 is set, users who are not on the access list\n"
|
||||
"will not be allowed channel operator status."));
|
||||
source.Reply(_(
|
||||
"Enables or disables the \002secure ops\002 option for a channel. "
|
||||
"When \002secure ops\002 is set, users who are not on the access list "
|
||||
"will not be allowed channel operator status."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -857,8 +881,8 @@ public:
|
||||
{
|
||||
ci->Extend<bool>("SIGNKICK_LEVEL");
|
||||
ci->Shrink<bool>("SIGNKICK");
|
||||
source.Reply(_("Signed kick option for %s is now \002on\002, but depends of the\n"
|
||||
"level of the user that is using the command."), ci->name.c_str());
|
||||
source.Reply(_("Signed kick option for %s is now \002on\002, but depends of the level of the user that is using the command."),
|
||||
ci->name.c_str());
|
||||
Log(source.AccessFor(ci).HasPriv("SET") ? LOG_COMMAND : LOG_OVERRIDE, source, this, ci) << "to enable sign kick level";
|
||||
}
|
||||
else if (params[1].equals_ci("OFF"))
|
||||
@@ -876,14 +900,16 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Enables or disables signed kicks for a\n"
|
||||
"channel. When \002SIGNKICK\002 is set, kicks issued with\n"
|
||||
"the \002KICK\002 command will have the nick that used the\n"
|
||||
"command in their reason.\n"
|
||||
" \n"
|
||||
"If you use \002LEVEL\002, those who have a level that is superior\n"
|
||||
"or equal to the SIGNKICK level on the channel won't have their\n"
|
||||
"kicks signed."));
|
||||
source.Reply(_(
|
||||
"Enables or disables signed kicks for a "
|
||||
"channel. When \002SIGNKICK\002 is set, kicks issued with "
|
||||
"the \002KICK\002 command will have the nick that used the "
|
||||
"command in their reason."
|
||||
"\n\n"
|
||||
"If you use \002LEVEL\002, those who have a level that is superior "
|
||||
"or equal to the SIGNKICK level on the channel won't have their "
|
||||
"kicks signed."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -962,22 +988,28 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Changes the successor of a channel. If the founder's\n"
|
||||
"nickname expires or is dropped while the channel is still\n"
|
||||
"registered, the successor will become the new founder of the\n"
|
||||
"channel. The successor's nickname must be a registered one.\n"
|
||||
"If there's no successor set, then the first nickname on the\n"
|
||||
"access list (with the highest access, if applicable) will\n"
|
||||
"become the new founder, but if the access list is empty, the\n"
|
||||
"channel will be dropped."));
|
||||
source.Reply(_(
|
||||
"Changes the successor of a channel. If the founder's "
|
||||
"nickname expires or is dropped while the channel is still "
|
||||
"registered, the successor will become the new founder of the "
|
||||
"channel. The successor's nickname must be a registered one. "
|
||||
"If there's no successor set, then the first nickname on the "
|
||||
"access list (with the highest access, if applicable) will "
|
||||
"become the new founder, but if the access list is empty, the "
|
||||
"channel will be dropped."
|
||||
));
|
||||
|
||||
unsigned max_reg = Config->GetModule("chanserv").Get<unsigned>("maxregistered");
|
||||
if (max_reg)
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Note, however, if the successor already has too many\n"
|
||||
"channels registered (%d), they will not be able to\n"
|
||||
"become the new founder and it will be as if the\n"
|
||||
"channel had no successor set."), max_reg);
|
||||
source.Reply(_(
|
||||
"Note, however, if the successor already has too many "
|
||||
"channels registered (%u), they will not be able to "
|
||||
"become the new founder and it will be as if the "
|
||||
"channel had no successor set."
|
||||
),
|
||||
max_reg);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -1036,8 +1068,10 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets whether the given channel will expire. Setting this\n"
|
||||
"to ON prevents the channel from expiring."));
|
||||
source.Reply(_(
|
||||
"Sets whether the given channel will expire. Setting this "
|
||||
"to ON prevents the channel from expiring."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -102,11 +102,13 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("This command tells you what a users access is on a channel\n"
|
||||
"and what access entries, if any, they match. Additionally it\n"
|
||||
"will tell you of any auto kick entries they match. Usage of\n"
|
||||
"this command is limited to users who have the ability to modify\n"
|
||||
"access entries on the channel."));
|
||||
source.Reply(_(
|
||||
"This command tells you what a users access is on a channel "
|
||||
"and what access entries, if any, they match. Additionally it "
|
||||
"will tell you of any auto kick entries they match. Usage of "
|
||||
"this command is limited to users who have the ability to modify "
|
||||
"access entries on the channel."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -143,14 +143,16 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Disallows anyone from using the given channel.\n"
|
||||
"May be cancelled by using the \002UNSUSPEND\002\n"
|
||||
"command to preserve all previous channel data/settings.\n"
|
||||
"If an expiry is given the channel will be unsuspended after\n"
|
||||
"that period of time, else the default expiry from the\n"
|
||||
"configuration is used.\n"
|
||||
" \n"
|
||||
"Reason may be required on certain networks."));
|
||||
source.Reply(_(
|
||||
"Disallows anyone from using the given channel. "
|
||||
"May be cancelled by using the \002UNSUSPEND\002 "
|
||||
"command to preserve all previous channel data/settings. "
|
||||
"If an expiry is given the channel will be unsuspended after "
|
||||
"that period of time, else the default expiry from the "
|
||||
"configuration is used."
|
||||
"\n\n"
|
||||
"Reason may be required on certain networks."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -201,8 +203,10 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Releases a suspended channel. All data and settings\n"
|
||||
"are preserved from before the suspension."));
|
||||
source.Reply(_(
|
||||
"Releases a suspended channel. All data and settings "
|
||||
"are preserved from before the suspension."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -47,8 +47,10 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Syncs all modes set on users on the channel with the modes\n"
|
||||
"they should have based on their access."));
|
||||
source.Reply(_(
|
||||
"Syncs all modes set on users on the channel with the modes "
|
||||
"they should have based on their access."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -68,11 +68,15 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Enables or disables the \002topic retention\002 option for a\n"
|
||||
"channel. When \002%s\002 is set, the topic for the\n"
|
||||
"channel will be remembered by %s even after the\n"
|
||||
"last user leaves the channel, and will be restored the\n"
|
||||
"next time the channel is created."), source.command.c_str(), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Enables or disables the \002topic retention\002 option for a "
|
||||
"channel. When \002%s\002 is set, the topic for the "
|
||||
"channel will be remembered by %s even after the "
|
||||
"last user leaves the channel, and will be restored the "
|
||||
"next time the channel is created."
|
||||
),
|
||||
source.command.c_str(),
|
||||
source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -192,14 +196,16 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows manipulating the topic of the specified channel.\n"
|
||||
"The \002SET\002 command changes the topic of the channel to the given topic\n"
|
||||
"or unsets the topic if no topic is given. The \002APPEND\002 command appends\n"
|
||||
"the given topic to the existing topic.\n"
|
||||
" \n"
|
||||
"\002LOCK\002 and \002UNLOCK\002 may be used to enable and disable topic lock. When\n"
|
||||
"topic lock is set, the channel topic will be unchangeable by users who do not have\n"
|
||||
"the \002TOPIC\002 privilege."));
|
||||
source.Reply(_(
|
||||
"Allows manipulating the topic of the specified channel. "
|
||||
"The \002SET\002 command changes the topic of the channel to the given topic "
|
||||
"or unsets the topic if no topic is given. The \002APPEND\002 command appends "
|
||||
"the given topic to the existing topic. "
|
||||
"\n\n"
|
||||
"\002LOCK\002 and \002UNLOCK\002 may be used to enable and disable topic lock. When "
|
||||
"topic lock is set, the channel topic will be unchangeable by users who do not have "
|
||||
"the \002TOPIC\002 privilege."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -120,13 +120,16 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Tells %s to remove all bans preventing you or the given\n"
|
||||
"user from entering the given channel. If no channel is\n"
|
||||
"given, all bans affecting you in channels you have access\n"
|
||||
"in are removed.\n"
|
||||
" \n"
|
||||
"By default, limited to AOPs or those with level 5 access and above\n"
|
||||
"on the channel."), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Tells %s to remove all bans preventing you or the given "
|
||||
"user from entering the given channel. If no channel is "
|
||||
"given, all bans affecting you in channels you have access "
|
||||
"in are removed."
|
||||
"\n\n"
|
||||
"By default, limited to AOPs or those with level 5 access and above "
|
||||
"on the channel."
|
||||
),
|
||||
source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -123,9 +123,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Updates a selected nicks status modes on a channel. If \037nick\037 is\n"
|
||||
"omitted then your status is updated. If \037channel\037 is omitted then\n"
|
||||
"your channel status is updated on every channel you are in."));
|
||||
source.Reply(_(
|
||||
"Updates a selected nicks status modes on a channel. If \037nick\037 is "
|
||||
"omitted then your status is updated. If \037channel\037 is omitted then "
|
||||
"your channel status is updated on every channel you are in."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -221,9 +223,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Removes a selected nicks status modes on a channel. If \037nick\037 is\n"
|
||||
"omitted then your status is removed. If \037channel\037 is omitted then\n"
|
||||
"your channel status is removed on every channel you are in."));
|
||||
source.Reply(_(
|
||||
"Removes a selected nicks status modes on a channel. If \037nick\037 is "
|
||||
"omitted then your status is removed. If \037channel\037 is omitted then "
|
||||
"your channel status is removed on every channel you are in."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
+47
-28
@@ -542,59 +542,78 @@ public:
|
||||
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Maintains the \002%s list\002 for a channel. Users who match an access entry\n"
|
||||
"on the %s list receive the following privileges:\n"
|
||||
" "), cmd.c_str(), cmd.c_str());
|
||||
source.Reply(_(
|
||||
"Maintains the \002%s list\002 for a channel. Users who match an access entry "
|
||||
"on the %s list receive the following privileges:"
|
||||
),
|
||||
cmd.c_str(),
|
||||
cmd.c_str());
|
||||
|
||||
source.Reply(" ");
|
||||
Anope::string buf;
|
||||
for (const auto &permission : permissions[cmd])
|
||||
{
|
||||
buf += ", " + permission;
|
||||
if (buf.length() > 75)
|
||||
{
|
||||
source.Reply(" %s\n", buf.substr(2).c_str());
|
||||
source.Reply(" %s", buf.substr(2).c_str());
|
||||
buf.clear();
|
||||
}
|
||||
}
|
||||
if (!buf.empty())
|
||||
{
|
||||
source.Reply(" %s\n", buf.substr(2).c_str());
|
||||
source.Reply(" %s", buf.substr(2).c_str());
|
||||
buf.clear();
|
||||
}
|
||||
|
||||
source.Reply(_(" \n"
|
||||
"The \002%s ADD\002 command adds the given nickname to the\n"
|
||||
"%s list.\n"
|
||||
" \n"
|
||||
"The \002%s DEL\002 command removes the given nick from the\n"
|
||||
"%s list. If a list of entry numbers is given, those\n"
|
||||
"entries are deleted. (See the example for LIST below.)\n"
|
||||
" \n"
|
||||
"The \002%s LIST\002 command displays the %s list. If\n"
|
||||
"a wildcard mask is given, only those entries matching the\n"
|
||||
"mask are displayed. If a list of entry numbers is given,\n"
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"The \002%s\032ADD\002 command adds the given nickname to the "
|
||||
"%s list."
|
||||
"\n\n"
|
||||
"The \002%s\032DEL\002 command removes the given nick from the "
|
||||
"%s list. If a list of entry numbers is given, those "
|
||||
"entries are deleted. (See the example for LIST below.)"
|
||||
"\n\n"
|
||||
"The \002%s\032LIST\002 command displays the %s list. If "
|
||||
"a wildcard mask is given, only those entries matching the "
|
||||
"mask are displayed. If a list of entry numbers is given, "
|
||||
"only those entries are shown; for example:\n"
|
||||
" \002%s #channel LIST 2-5,7-9\002\n"
|
||||
" \002%s\032#channel\032LIST\0322-5,7-9\002\n"
|
||||
" Lists %s entries numbered 2 through 5 and\n"
|
||||
" 7 through 9.\n"
|
||||
" \n"
|
||||
"The \002%s CLEAR\002 command clears all entries of the\n"
|
||||
"%s list."), cmd.c_str(), cmd.c_str(), cmd.c_str(), cmd.c_str(),
|
||||
cmd.c_str(), cmd.c_str(), cmd.c_str(), cmd.c_str(), cmd.c_str(), cmd.c_str());
|
||||
" 7 through 9."
|
||||
"\n\n"
|
||||
"The \002%s\032CLEAR\002 command clears all entries of the "
|
||||
"%s list."
|
||||
),
|
||||
cmd.c_str(),
|
||||
cmd.c_str(),
|
||||
cmd.c_str(),
|
||||
cmd.c_str(),
|
||||
cmd.c_str(),
|
||||
cmd.c_str(),
|
||||
cmd.c_str(),
|
||||
cmd.c_str(),
|
||||
cmd.c_str(),
|
||||
cmd.c_str());
|
||||
|
||||
BotInfo *access_bi, *flags_bi;
|
||||
Anope::string access_cmd, flags_cmd;
|
||||
Command::FindCommandFromService("chanserv/access", access_bi, access_cmd);
|
||||
Command::FindCommandFromService("chanserv/flags", flags_bi, flags_cmd);
|
||||
if (!access_cmd.empty() || !flags_cmd.empty())
|
||||
{
|
||||
source.Reply(_("Alternative methods of modifying channel access lists are\n"
|
||||
"available."));
|
||||
source.Reply(_("Alternative methods of modifying channel access lists are available."));
|
||||
if (!access_cmd.empty())
|
||||
source.Reply(_("See \002%s\002 for more information\n"
|
||||
"about the access list."), access_bi->GetQueryCommand("generic/help", access_cmd).c_str());
|
||||
{
|
||||
source.Reply(_("See \002%s\002 for more information about the access list."),
|
||||
access_bi->GetQueryCommand("generic/help", access_cmd).c_str());
|
||||
}
|
||||
if (!flags_cmd.empty())
|
||||
source.Reply(_("See \002%s\002 for more information\n"
|
||||
"about the flags system."), flags_bi->GetQueryCommand("generic/help", flags_cmd).c_str());
|
||||
{
|
||||
source.Reply(_("See \002%s\002 for more information about the flags system."),
|
||||
flags_bi->GetQueryCommand("generic/help", flags_cmd).c_str());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
+12
-10
@@ -67,16 +67,18 @@ public:
|
||||
bool OnHelp(CommandSource &source, const Anope::string &) override
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(_(" \n"
|
||||
"Enables or disables \002fantasy\002 mode on a channel.\n"
|
||||
"When it is enabled, users will be able to use\n"
|
||||
"fantasy commands on a channel when prefixed\n"
|
||||
"with one of the following fantasy characters: \002%s\002\n"
|
||||
" \n"
|
||||
"Note that users wanting to use fantasy commands\n"
|
||||
"MUST have enough access for both the FANTASY\n"
|
||||
"privilege and the command they are executing."),
|
||||
Config->GetModule(this->owner).Get<const Anope::string>("fantasycharacter", "!").c_str());
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"Enables or disables \002fantasy\002 mode on a channel. "
|
||||
"When it is enabled, users will be able to use "
|
||||
"fantasy commands on a channel when prefixed "
|
||||
"with one of the following fantasy characters: \002%s\002"
|
||||
"\n\n"
|
||||
"Note that users wanting to use fantasy commands "
|
||||
"MUST have enough access for both the FANTASY "
|
||||
"privilege and the command they are executing."
|
||||
),
|
||||
Config->GetModule(this->owner).Get<const Anope::string>("fantasycharacter", "!").c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -77,12 +77,13 @@ public:
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"Allows sending messages to all users on the network. The message will be sent\n"
|
||||
"from \002%s\002.\n"
|
||||
"\n"
|
||||
"You can either send a message by specifying it as a parameter or provide no\n"
|
||||
"parameters to send a previously queued message.\n"
|
||||
), GetSender(source)->nick.c_str());
|
||||
"Allows sending messages to all users on the network. The message will be sent "
|
||||
"from \002%s\002."
|
||||
"\n\n"
|
||||
"You can either send a message by specifying it as a parameter or provide no "
|
||||
"parameters to send a previously queued message."
|
||||
),
|
||||
GetSender(source)->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
+10
-10
@@ -167,16 +167,16 @@ public:
|
||||
this->SendSyntax(source);
|
||||
source.Reply("");
|
||||
source.Reply(_(
|
||||
"Allows queueing messages to send to users on the network.\n"
|
||||
"\n"
|
||||
"The \002QUEUE ADD\002 command adds the given message to the message queue."
|
||||
"\n"
|
||||
"The \002QUEUE CLEAR\002 command clears the message queue."
|
||||
"\n"
|
||||
"The \002QUEUE DEL\002 command removes the specified message from the message queue. The\n"
|
||||
"message number can be obtained from the output of the \002QUEUE LIST\002 command."
|
||||
"\n"
|
||||
"The \002QUEUE LIST\002 command lists all messages that are currently in the message queue."
|
||||
"Allows queueing messages to send to users on the network."
|
||||
"\n\n"
|
||||
"The \002QUEUE\032ADD\002 command adds the given message to the message queue."
|
||||
"\n\n"
|
||||
"The \002QUEUE\032CLEAR\002 command clears the message queue."
|
||||
"\n\n"
|
||||
"The \002QUEUE\032DEL\002 command removes the specified message from the message queue. The "
|
||||
"message number can be obtained from the output of the \002QUEUE\032LIST\002 command."
|
||||
"\n\n"
|
||||
"The \002QUEUE\032LIST\002 command lists all messages that are currently in the message queue."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -84,12 +84,13 @@ public:
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"Allows sending messages to all users on a server. The message will be sent\n"
|
||||
"from \002%s\002.\n"
|
||||
"\n"
|
||||
"You can either send a message by specifying it as a parameter or provide no\n"
|
||||
"parameters to send a previously queued message.\n"
|
||||
), GetSender(source)->nick.c_str());
|
||||
"Allows sending messages to all users on a server. The message will be sent "
|
||||
"from \002%s\002."
|
||||
"\n\n"
|
||||
"You can either send a message by specifying it as a parameter or provide no "
|
||||
"parameters to send a previously queued message."
|
||||
),
|
||||
GetSender(source)->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
+20
-14
@@ -67,12 +67,14 @@ public:
|
||||
bool OnHelp(CommandSource &source, const Anope::string &) override
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(_(" \n"
|
||||
"Enables or disables \002greet\002 mode on a channel.\n"
|
||||
"When it is enabled, the bot will display greet\n"
|
||||
"messages of users joining the channel, provided\n"
|
||||
"they have enough access to the channel."));
|
||||
return true;
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"Enables or disables \002greet\002 mode on a channel. "
|
||||
"When it is enabled, the bot will display greet "
|
||||
"messages of users joining the channel, provided "
|
||||
"they have enough access to the channel."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -130,10 +132,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Makes the given message the greet of your nickname, that\n"
|
||||
"will be displayed when joining a channel that has GREET\n"
|
||||
"option enabled, provided that you have the necessary\n"
|
||||
"access on it."));
|
||||
source.Reply(_(
|
||||
"Makes the given message the greet of your nickname, that "
|
||||
"will be displayed when joining a channel that has GREET "
|
||||
"option enabled, provided that you have the necessary "
|
||||
"access on it."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -157,10 +161,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Makes the given message the greet of the nickname, that\n"
|
||||
"will be displayed when joining a channel that has GREET\n"
|
||||
"option enabled, provided that the user has the necessary\n"
|
||||
"access on it."));
|
||||
source.Reply(_(
|
||||
"Makes the given message the greet of the nickname, that "
|
||||
"will be displayed when joining a channel that has GREET "
|
||||
"option enabled, provided that the user has the necessary "
|
||||
"access on it."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
+1
-1
@@ -117,7 +117,7 @@ public:
|
||||
if (!groups.empty())
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Use the \002%s ALL\002 command to list all commands and their descriptions."), source_command.c_str());
|
||||
source.Reply(_("Use the \002%s\032ALL\002 command to list all commands and their descriptions."), source_command.c_str());
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -46,8 +46,7 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Deletes the vhost assigned to the given nick from the\n"
|
||||
"database."));
|
||||
source.Reply(_("Deletes the vhost assigned to the given nick from the database."));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -92,8 +91,7 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Deletes the vhost for all nicks in the same group as\n"
|
||||
"that of the given nick."));
|
||||
source.Reply(_("Deletes the vhost for all nicks in the same group as that of the given nick."));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -67,9 +67,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("This command allows users to set the vhost of their\n"
|
||||
"CURRENT nick to be the vhost for all nicks in the same\n"
|
||||
"group."));
|
||||
source.Reply(_(
|
||||
"This command allows users to set the vhost of their "
|
||||
"CURRENT nick to be the vhost for all nicks in the same "
|
||||
"group."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -123,13 +123,15 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("This command lists registered vhosts to the operator.\n"
|
||||
"If a \037key\037 is specified, only entries whose nick or vhost match\n"
|
||||
"the pattern given in \037key\037 are displayed e.g. Rob* for all\n"
|
||||
"entries beginning with \"Rob\"\n"
|
||||
"If a \037#X-Y\037 style is used, only entries between the range of \002X\002\n"
|
||||
"and \002Y\002 will be displayed, e.g. \002#1-3\002 will display the first 3\n"
|
||||
"nick/vhost entries."));
|
||||
source.Reply(_(
|
||||
"This command lists registered vhosts to the operator. "
|
||||
"If a \037key\037 is specified, only entries whose nick or vhost match "
|
||||
"the pattern given in \037key\037 are displayed e.g. Rob* for all "
|
||||
"entries beginning with \"Rob\". "
|
||||
"If a \037#X-Y\037 style is used, only entries between the range of \002X\002 "
|
||||
"and \002Y\002 will be displayed, e.g. \002#1-3\002 will display the first 3 "
|
||||
"nick/vhost entries."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -47,9 +47,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Deactivates the vhost currently assigned to the nick in use.\n"
|
||||
"When you use this command any user who performs a /whois\n"
|
||||
"on you will see your real host/IP address."));
|
||||
source.Reply(_(
|
||||
"Deactivates the vhost currently assigned to the nick in use. "
|
||||
"When you use this command any user who performs a /whois "
|
||||
"on you will see your real host/IP address."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -50,9 +50,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Activates the vhost currently assigned to the nick in use.\n"
|
||||
"When you use this command any user who performs a /whois\n"
|
||||
"on you will see the vhost instead of your real host/IP address."));
|
||||
source.Reply(_(
|
||||
"Activates the vhost currently assigned to the nick in use. "
|
||||
"When you use this command any user who performs a /whois "
|
||||
"on you will see the vhost instead of your real host/IP address."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -189,9 +189,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Request the given vhost to be activated for your nick by the\n"
|
||||
"network administrators. Please be patient while your request\n"
|
||||
"is being considered."));
|
||||
source.Reply(_(
|
||||
"Request the given vhost to be activated for your nick by the "
|
||||
"network administrators. Please be patient while your request "
|
||||
"is being considered."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
+15
-10
@@ -94,10 +94,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets the vhost for the given nick to that of the given\n"
|
||||
"hostmask. If your IRCD supports vidents, then using\n"
|
||||
"SET <nick> <ident>@<hostmask> set idents for users as\n"
|
||||
"well as vhosts."));
|
||||
source.Reply(_(
|
||||
"Sets the vhost for the given nick to that of the given "
|
||||
"hostmask. If your IRCD supports vidents, then using "
|
||||
"SET <nick> <ident>@<hostmask> set idents for users as "
|
||||
"well as vhosts."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -198,12 +200,15 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets the vhost for all nicks in the same group as that\n"
|
||||
"of the given nick. If your IRCD supports vidents, then\n"
|
||||
"using SETALL <nick> <ident>@<hostmask> will set idents\n"
|
||||
"for users as well as vhosts.\n"
|
||||
"* NOTE, this will not update the vhost for any nicks\n"
|
||||
"added to the group after this command was used."));
|
||||
source.Reply(_(
|
||||
"Sets the vhost for all nicks in the same group as that "
|
||||
"of the given nick. If your IRCD supports vidents, then "
|
||||
"using SETALL <nick> <ident>@<hostmask> will set idents "
|
||||
"for users as well as vhosts."
|
||||
"\n\n"
|
||||
"* NOTE, this will not update the vhost for any nicks "
|
||||
"added to the group after this command was used."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -214,12 +214,17 @@ public:
|
||||
{
|
||||
if (!params.empty() || source.c || source.service != *MemoServ)
|
||||
return EVENT_CONTINUE;
|
||||
source.Reply(_("\002%s\002 is a utility allowing IRC users to send short\n"
|
||||
"messages to other IRC users, whether they are online at\n"
|
||||
"the time or not, or to channels(*). Both the sender's\n"
|
||||
"nickname and the target nickname or channel must be\n"
|
||||
"registered in order to send a memo.\n"
|
||||
"%s's commands include:"), MemoServ->nick.c_str(), MemoServ->nick.c_str());
|
||||
source.Reply(_(
|
||||
"\002%s\002 is a utility allowing IRC users to send short "
|
||||
"messages to other IRC users, whether they are online at "
|
||||
"the time or not, or to channels(*). Both the sender's "
|
||||
"nickname and the target nickname or channel must be "
|
||||
"registered in order to send a memo."
|
||||
"\n\n"
|
||||
"%s's commands include:"
|
||||
),
|
||||
MemoServ->nick.c_str(),
|
||||
MemoServ->nick.c_str());
|
||||
return EVENT_CONTINUE;
|
||||
}
|
||||
|
||||
@@ -227,9 +232,9 @@ public:
|
||||
{
|
||||
if (!params.empty() || source.c || source.service != *MemoServ)
|
||||
return;
|
||||
source.Reply(_(" \n"
|
||||
"Type \002%s \037command\037\002 for help on any of the\n"
|
||||
"above commands."),
|
||||
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Type \002%s\032\037command\037\002 for help on any of the above commands."),
|
||||
MemoServ->GetQueryCommand("generic/help").c_str());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -82,8 +82,10 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Cancels the last memo you sent to the given nick or channel,\n"
|
||||
"provided it has not been read at the time you use the command."));
|
||||
source.Reply(_(
|
||||
"Cancels the last memo you sent to the given nick or channel, "
|
||||
"provided it has not been read at the time you use the command."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -67,8 +67,10 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Checks whether the _last_ memo you sent to \037nick\037 has been read\n"
|
||||
"or not. Note that this only works with nicks, not with channels."));
|
||||
source.Reply(_(
|
||||
"Checks whether the _last_ memo you sent to \037nick\037 has been read "
|
||||
"or not. Note that this only works with nicks, not with channels."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
+17
-14
@@ -128,20 +128,23 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Deletes the specified memo or memos. You can supply\n"
|
||||
"multiple memo numbers or ranges of numbers instead of a\n"
|
||||
"single number, as in the second example below.\n"
|
||||
" \n"
|
||||
"If \002LAST\002 is given, the last memo will be deleted.\n"
|
||||
"If \002ALL\002 is given, deletes all of your memos.\n"
|
||||
" \n"
|
||||
"Examples:\n"
|
||||
" \n"
|
||||
" \002DEL 1\002\n"
|
||||
" Deletes your first memo.\n"
|
||||
" \n"
|
||||
" \002DEL 2-5,7-9\002\n"
|
||||
" Deletes memos numbered 2 through 5 and 7 through 9."));
|
||||
source.Reply(_(
|
||||
"Deletes the specified memo or memos. You can supply "
|
||||
"multiple memo numbers or ranges of numbers instead of a "
|
||||
"single number, as in the second example below."
|
||||
"\n\n"
|
||||
"If \002LAST\002 is given, the last memo will be deleted."
|
||||
"\n\n"
|
||||
"If \002ALL\002 is given, deletes all of your memos."
|
||||
"\n\n"
|
||||
"Examples:"
|
||||
"\n\n"
|
||||
" \002DEL\0321\002\n"
|
||||
" Deletes your first memo."
|
||||
"\n\n"
|
||||
" \002DEL\0322-5,7-9\002\n"
|
||||
" Deletes memos numbered 2 through 5 and 7 through 9."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -103,10 +103,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows you to ignore users by nick or host from memoing\n"
|
||||
"you or a channel. If someone on the memo ignore list tries\n"
|
||||
"to memo you or a channel, they will not be told that you have\n"
|
||||
"them ignored."));
|
||||
source.Reply(_(
|
||||
"Allows you to ignore users by nick or host from memoing "
|
||||
"you or a channel. If someone on the memo ignore list tries "
|
||||
"to memo you or a channel, they will not be told that you have "
|
||||
"them ignored."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -204,16 +204,18 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Without a parameter, displays information on the number of\n"
|
||||
"memos you have, how many of them are unread, and how many\n"
|
||||
"total memos you can receive.\n"
|
||||
" \n"
|
||||
"With a channel parameter, displays the same information for\n"
|
||||
"the given channel.\n"
|
||||
" \n"
|
||||
"With a nickname parameter, displays the same information\n"
|
||||
"for the given nickname. This is limited to \002Services\002\n"
|
||||
"\002Operators\002."));
|
||||
source.Reply(_(
|
||||
"Without a parameter, displays information on the number of "
|
||||
"memos you have, how many of them are unread, and how many "
|
||||
"total memos you can receive."
|
||||
"\n\n"
|
||||
"With a channel parameter, displays the same information for "
|
||||
"the given channel."
|
||||
"\n\n"
|
||||
"With a nickname parameter, displays the same information "
|
||||
"for the given nickname. This is limited to \002Services "
|
||||
"Operators\002."
|
||||
));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -141,12 +141,14 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Lists any memos you currently have. With \002NEW\002, lists only\n"
|
||||
"new (unread) memos. Unread memos are marked with a \"*\"\n"
|
||||
"to the left of the memo number. You can also specify a list\n"
|
||||
"of numbers, as in the example below:\n"
|
||||
" \002LIST 2-5,7-9\002\n"
|
||||
" Lists memos numbered 2 through 5 and 7 through 9."));
|
||||
source.Reply(_(
|
||||
"Lists any memos you currently have. With \002NEW\002, lists only "
|
||||
"new (unread) memos. Unread memos are marked with a \"*\" "
|
||||
"to the left of the memo number. You can also specify a list "
|
||||
"of numbers, as in the example below:\n"
|
||||
" \002LIST 2-5,7-9\002\n"
|
||||
" Lists memos numbered 2 through 5 and 7 through 9."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -39,8 +39,8 @@ static void rsend_notify(CommandSource &source, MemoInfo *mi, Memo *m, const Ano
|
||||
|
||||
/* Notify recipient of the memo that a notification has
|
||||
been sent to the sender */
|
||||
source.Reply(_("A notification memo has been sent to %s informing them you have\n"
|
||||
"read their memo."), nc->display.c_str());
|
||||
source.Reply(_("A notification memo has been sent to %s informing them you have read their memo."),
|
||||
nc->display.c_str());
|
||||
}
|
||||
|
||||
/* Remove receipt flag from the original memo */
|
||||
@@ -198,15 +198,17 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sends you the text of the memos specified. If LAST is\n"
|
||||
"given, sends you the memo you most recently received. If\n"
|
||||
"NEW is given, sends you all of your new memos. If ALL is\n"
|
||||
"given, sends you all of your memos. Otherwise, sends you\n"
|
||||
"memo number \037num\037. You can also give a list of numbers,\n"
|
||||
"as in this example:\n"
|
||||
" \n"
|
||||
" \002READ 2-5,7-9\002\n"
|
||||
" Displays memos numbered 2 through 5 and 7 through 9."));
|
||||
source.Reply(_(
|
||||
"Sends you the text of the memos specified. If LAST is "
|
||||
"given, sends you the memo you most recently received. If "
|
||||
"NEW is given, sends you all of your new memos. If ALL is "
|
||||
"given, sends you all of your memos. Otherwise, sends you "
|
||||
"memo number \037num\037. You can also give a list of numbers, "
|
||||
"as in this example:"
|
||||
"\n\n"
|
||||
" \002READ 2-5,7-9\002\n"
|
||||
" Displays memos numbered 2 through 5 and 7 through 9."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -82,13 +82,15 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sends the named \037nick\037 or \037channel\037 a memo containing\n"
|
||||
"\037memo-text\037. When sending to a nickname, the recipient will\n"
|
||||
"receive a notice that they have a new memo. The target\n"
|
||||
"nickname/channel must be registered.\n"
|
||||
"Once the memo is read by its recipient, an automatic notification\n"
|
||||
"memo will be sent to the sender informing them that the memo\n"
|
||||
"has been read."));
|
||||
source.Reply(_(
|
||||
"Sends the named \037nick\037 or \037channel\037 a memo containing "
|
||||
"\037memo-text\037. When sending to a nickname, the recipient will "
|
||||
"receive a notice that they have a new memo. The target "
|
||||
"nickname/channel must be registered. "
|
||||
"Once the memo is read by its recipient, an automatic notification "
|
||||
"memo will be sent to the sender informing them that the memo "
|
||||
"has been read."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -68,10 +68,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sends the named \037nick\037 or \037channel\037 a memo containing\n"
|
||||
"\037memo-text\037. When sending to a nickname, the recipient will\n"
|
||||
"receive a notice that they have a new memo. The target\n"
|
||||
"nickname/channel must be registered."));
|
||||
source.Reply(_(
|
||||
"Sends the named \037nick\037 or \037channel\037 a memo containing "
|
||||
"\037memo-text\037. When sending to a nickname, the recipient will "
|
||||
"receive a notice that they have a new memo. The target "
|
||||
"nickname/channel must be registered."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
+69
-49
@@ -225,65 +225,85 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets various memo options. \037option\037 can be one of:\n"
|
||||
" \n"
|
||||
source.Reply(_(
|
||||
"Sets various memo options. \037option\037 can be one of:"
|
||||
"\n\n"
|
||||
" NOTIFY Changes when you will be notified about\n"
|
||||
" new memos (only for nicknames)\n"
|
||||
" new memos (only for nicknames)"
|
||||
"\n\n"
|
||||
" LIMIT Sets the maximum number of memos you can\n"
|
||||
" receive\n"
|
||||
" \n"
|
||||
"Type \002%s \037option\037\002 for more information\n"
|
||||
"on a specific option."),
|
||||
" receive"
|
||||
"\n\n"
|
||||
"Type \002%s\032\037option\037\002 for more information "
|
||||
"on a specific option."
|
||||
),
|
||||
source.service->GetQueryCommand("generic/help", source.command).c_str());
|
||||
}
|
||||
else if (subcommand.equals_ci("NOTIFY"))
|
||||
source.Reply(_("Syntax: \002NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}\002\n"
|
||||
" \n"
|
||||
"Changes when you will be notified about new memos:\n"
|
||||
" \n"
|
||||
" ON You will be notified of memos when you log on,\n"
|
||||
" when you unset /AWAY, and when they are sent\n"
|
||||
" to you.\n"
|
||||
" LOGON You will only be notified of memos when you log\n"
|
||||
" on or when you unset /AWAY.\n"
|
||||
" NEW You will only be notified of memos when they\n"
|
||||
" are sent to you.\n"
|
||||
" MAIL You will be notified of memos by email as well as\n"
|
||||
" any other settings you have.\n"
|
||||
" NOMAIL You will not be notified of memos by email.\n"
|
||||
" OFF You will not receive any notification of memos.\n"
|
||||
" \n"
|
||||
"\002ON\002 is essentially \002LOGON\002 and \002NEW\002 combined."));
|
||||
{
|
||||
source.Reply(_(
|
||||
"Syntax: \002NOTIFY {ON | LOGON | NEW | MAIL | NOMAIL | OFF}\002"
|
||||
"\n\n"
|
||||
"Changes when you will be notified about new memos:"
|
||||
"\n\n"
|
||||
" ON You will be notified of memos when you log on,\n"
|
||||
" when you unset /AWAY, and when they are sent\n"
|
||||
" to you."
|
||||
"\n\n"
|
||||
" LOGON You will only be notified of memos when you log\n"
|
||||
" on or when you unset /AWAY."
|
||||
"\n\n"
|
||||
" NEW You will only be notified of memos when they\n"
|
||||
" are sent to you."
|
||||
"\n\n"
|
||||
" MAIL You will be notified of memos by email as well as\n"
|
||||
" any other settings you have."
|
||||
"\n\n"
|
||||
" NOMAIL You will not be notified of memos by email."
|
||||
"\n\n"
|
||||
" OFF You will not receive any notification of memos."
|
||||
"\n\n"
|
||||
"\002ON\002 is essentially \002LOGON\002 and \002NEW\002 combined."
|
||||
));
|
||||
}
|
||||
else if (subcommand.equals_ci("LIMIT"))
|
||||
{
|
||||
int max_memos = Config->GetModule("memoserv").Get<int>("maxmemos");
|
||||
if (source.IsServicesOper())
|
||||
source.Reply(_("Syntax: \002LIMIT [\037user\037 | \037channel\037] {\037limit\037 | NONE} [HARD]\002\n"
|
||||
" \n"
|
||||
"Sets the maximum number of memos a user or channel is\n"
|
||||
"allowed to have. Setting the limit to 0 prevents the user\n"
|
||||
"from receiving any memos; setting it to \002NONE\002 allows the\n"
|
||||
"user to receive and keep as many memos as they want. If\n"
|
||||
"you do not give a nickname or channel, your own limit is\n"
|
||||
"set.\n"
|
||||
" \n"
|
||||
"Adding \002HARD\002 prevents the user from changing the limit. Not\n"
|
||||
"adding \002HARD\002 has the opposite effect, allowing the user to\n"
|
||||
"change the limit (even if a previous limit was set with\n"
|
||||
"\002HARD\002).\n"
|
||||
" \n"
|
||||
"This use of the \002SET LIMIT\002 command is limited to \002Services\002\n"
|
||||
"\002Operators\002. Other users may only enter a limit for themselves\n"
|
||||
"or a channel on which they have such privileges, may not\n"
|
||||
"remove their limit, may not set a limit above %d, and may\n"
|
||||
"not set a hard limit."), max_memos);
|
||||
{
|
||||
source.Reply(_(
|
||||
"Syntax: \002LIMIT [\037user\037 | \037channel\037] {\037limit\037 | NONE} [HARD]\002"
|
||||
"\n\n"
|
||||
"Sets the maximum number of memos a user or channel is "
|
||||
"allowed to have. Setting the limit to 0 prevents the user "
|
||||
"from receiving any memos; setting it to \002NONE\002 allows the "
|
||||
"user to receive and keep as many memos as they want. If "
|
||||
"you do not give a nickname or channel, your own limit is "
|
||||
"set."
|
||||
"\n\n"
|
||||
"Adding \002HARD\002 prevents the user from changing the limit. Not "
|
||||
"adding \002HARD\002 has the opposite effect, allowing the user to "
|
||||
"change the limit (even if a previous limit was set with "
|
||||
"\002HARD\002)."
|
||||
"\n\n"
|
||||
"This use of the \002SET\032LIMIT\002 command is limited to \002Services "
|
||||
"Operators\002. Other users may only enter a limit for themselves "
|
||||
"or a channel on which they have such privileges, may not "
|
||||
"remove their limit, may not set a limit above %d, and may "
|
||||
"not set a hard limit."
|
||||
),
|
||||
max_memos);
|
||||
}
|
||||
else
|
||||
source.Reply(_("Syntax: \002LIMIT [\037channel\037] \037limit\037\002\n"
|
||||
" \n"
|
||||
"Sets the maximum number of memos you (or the given channel)\n"
|
||||
"are allowed to have. If you set this to 0, no one will be\n"
|
||||
"able to send any memos to you. However, you cannot set\n"
|
||||
"this any higher than %d."), max_memos);
|
||||
source.Reply(_(
|
||||
"Syntax: \002LIMIT [\037channel\037] \037limit\037\002"
|
||||
"\n\n"
|
||||
"Sets the maximum number of memos you (or the given channel) "
|
||||
"are allowed to have. If you set this to 0, no one will be "
|
||||
"able to send any memos to you. However, you cannot set "
|
||||
"this any higher than %d."
|
||||
),
|
||||
max_memos);
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
||||
@@ -390,10 +390,12 @@ public:
|
||||
|
||||
if (block.Get<bool>("forceemail", "yes") && u->Account()->email.empty())
|
||||
{
|
||||
u->SendMessage(NickServ, _("You must now supply an email for your nick.\n"
|
||||
"This email will allow you to retrieve your password in\n"
|
||||
"case you forget it."));
|
||||
u->SendMessage(NickServ, _("Type \002%s \037email\037\002 in order to set your email."),
|
||||
u->SendMessage(NickServ, _(
|
||||
"You must now supply an email for your nick. "
|
||||
"This email will allow you to retrieve your password in "
|
||||
"case you forget it. "
|
||||
"Type \002%s\032\037email\037\002 in order to set your email."
|
||||
),
|
||||
NickServ->GetQueryCommand("nickserv/set/email").c_str());
|
||||
}
|
||||
|
||||
@@ -497,20 +499,34 @@ public:
|
||||
{
|
||||
if (!params.empty() || source.c || source.service != *NickServ)
|
||||
return EVENT_CONTINUE;
|
||||
|
||||
if (!Config->GetModule("nickserv").Get<bool>("nonicknameownership"))
|
||||
source.Reply(_("\002%s\002 allows you to register a nickname and\n"
|
||||
"prevent others from using it. The following\n"
|
||||
"commands allow for registration and maintenance of\n"
|
||||
"nicknames; to use them, type \002%s \037command\037\002.\n"
|
||||
"For more information on a specific command, type\n"
|
||||
"\002%s \037command\037\002.\n"), NickServ->nick.c_str(), NickServ->GetQueryCommand().c_str(), NickServ->GetQueryCommand({}, source.command).c_str());
|
||||
{
|
||||
source.Reply(_(
|
||||
"\002%s\002 allows you to register a nickname and "
|
||||
"prevent others from using it. The following "
|
||||
"commands allow for registration and maintenance of "
|
||||
"nicknames; to use them, type \002%s\032\037command\037\002. "
|
||||
"For more information on a specific command, type "
|
||||
"\002%s\032\037command\037\002."
|
||||
),
|
||||
NickServ->nick.c_str(),
|
||||
NickServ->GetQueryCommand().c_str(),
|
||||
NickServ->GetQueryCommand({}, source.command).c_str());
|
||||
}
|
||||
else
|
||||
source.Reply(_("\002%s\002 allows you to register an account.\n"
|
||||
"The following commands allow for registration and maintenance of\n"
|
||||
"accounts; to use them, type \002%s \037command\037\002.\n"
|
||||
"For more information on a specific command, type\n"
|
||||
"\002%s \037command\037\002.\n"),
|
||||
NickServ->nick.c_str(), NickServ->GetQueryCommand().c_str(), NickServ->GetQueryCommand({}, source.command.c_str()).c_str());
|
||||
{
|
||||
source.Reply(_(
|
||||
"\002%s\002 allows you to register an account. "
|
||||
"The following commands allow for registration and maintenance of "
|
||||
"accounts; to use them, type \002%s\032\037command\037\002. "
|
||||
"For more information on a specific command, type "
|
||||
"\002%s\032\037command\037\002."
|
||||
),
|
||||
NickServ->nick.c_str(),
|
||||
NickServ->GetQueryCommand().c_str(),
|
||||
NickServ->GetQueryCommand({}, source.command.c_str()).c_str());
|
||||
}
|
||||
return EVENT_CONTINUE;
|
||||
}
|
||||
|
||||
@@ -518,17 +534,28 @@ public:
|
||||
{
|
||||
if (!params.empty() || source.c || source.service != *NickServ)
|
||||
return;
|
||||
|
||||
if (source.IsServicesOper())
|
||||
source.Reply(_(" \n"
|
||||
"Services Operators can also drop any nickname without needing\n"
|
||||
"to identify for the nick, and may view the access list for\n"
|
||||
"any nickname."));
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"Services Operators can also drop any nickname without needing "
|
||||
"to identify for the nick, and may view the access list for "
|
||||
"any nickname."
|
||||
));
|
||||
}
|
||||
|
||||
time_t nickserv_expire = Config->GetModule(this).Get<time_t>("expire", "1y");
|
||||
if (nickserv_expire >= 86400)
|
||||
source.Reply(_(" \n"
|
||||
"Accounts that are not used anymore are subject to\n"
|
||||
"the automatic expiration, i.e. they will be deleted\n"
|
||||
"after %lu days if not used."), (unsigned long)nickserv_expire / 86400);
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
"Accounts that are not used anymore are subject to "
|
||||
"the automatic expiration, i.e. they will be deleted "
|
||||
"after %lu days if not used."
|
||||
),
|
||||
(unsigned long)nickserv_expire / 86400);
|
||||
}
|
||||
}
|
||||
|
||||
void OnNickCoreCreate(NickCore *nc) override
|
||||
|
||||
@@ -304,10 +304,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("This command manages your auto join list. When you identify\n"
|
||||
"you will automatically join the channels on your auto join list.\n"
|
||||
"Services Operators may provide a nick to modify other users'\n"
|
||||
"auto join lists."));
|
||||
source.Reply(_(
|
||||
"This command manages your auto join list. When you identify "
|
||||
"you will automatically join the channels on your auto join list. "
|
||||
"Services Operators may provide a nick to modify other users' "
|
||||
"auto join lists."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -119,11 +119,13 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Lists all channels you have access on.\n"
|
||||
" \n"
|
||||
"Channels that have the \037NOEXPIRE\037 option set will be\n"
|
||||
"prefixed by an exclamation mark. The nickname parameter is\n"
|
||||
"limited to Services Operators"));
|
||||
source.Reply(_(
|
||||
"Lists all channels you have access on."
|
||||
"\n\n"
|
||||
"Channels that have the \037NOEXPIRE\037 option set will be "
|
||||
"prefixed by an exclamation mark. The nickname parameter is "
|
||||
"limited to Services Operators."
|
||||
));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -354,24 +354,26 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Modifies or displays the certificate list for your nick.\n"
|
||||
"If you connect to IRC and provide a client certificate with a\n"
|
||||
"matching fingerprint in the cert list, you will be\n"
|
||||
"automatically identified to services. Services Operators\n"
|
||||
"may provide a nick to modify other users' certificate lists.\n"
|
||||
" \n"));
|
||||
source.Reply(_("Examples:\n"
|
||||
" \n"
|
||||
" \002CERT ADD\002\n"
|
||||
" Adds your current fingerprint to the certificate list and\n"
|
||||
" automatically identifies you when you connect to IRC\n"
|
||||
" using this fingerprint.\n"
|
||||
" \n"
|
||||
" \002CERT DEL <fingerprint>\002\n"
|
||||
" Removes the fingerprint <fingerprint> from your certificate list.\n"
|
||||
" \n"
|
||||
" \002CERT LIST\002\n"
|
||||
" Displays the current certificate list."));
|
||||
source.Reply(_(
|
||||
"Modifies or displays the certificate list for your nick. "
|
||||
"If you connect to IRC and provide a client certificate with a "
|
||||
"matching fingerprint in the cert list, you will be "
|
||||
"automatically identified to services. Services Operators "
|
||||
"may provide a nick to modify other users' certificate lists."
|
||||
"\n\n"
|
||||
"Examples:"
|
||||
"\n\n"
|
||||
" \002CERT\032ADD\002\n"
|
||||
" Adds your current fingerprint to the certificate list and\n"
|
||||
" automatically identifies you when you connect to IRC\n"
|
||||
" using this fingerprint."
|
||||
"\n\n"
|
||||
" \002CERT\032DEL\032<fingerprint>\002\n"
|
||||
" Removes the fingerprint <fingerprint> from your certificate list."
|
||||
"\n\n"
|
||||
" \002CERT\032LIST\002\n"
|
||||
" Displays the current certificate list."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -89,10 +89,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Drops the given nick from the database. Once your nickname\n"
|
||||
"is dropped you may lose all of your access and channels that\n"
|
||||
"you may own. Any other user will be able to gain control of\n"
|
||||
"this nick."));
|
||||
source.Reply(_(
|
||||
"Drops the given nick from the database. Once your nickname "
|
||||
"is dropped you may lose all of your access and channels that "
|
||||
"you may own. Any other user will be able to gain control of "
|
||||
"this nick."
|
||||
));
|
||||
|
||||
source.Reply(" ");
|
||||
if (!source.HasPriv("nickserv/drop"))
|
||||
@@ -102,8 +104,12 @@ public:
|
||||
|
||||
source.Reply(" ");
|
||||
if (source.HasPriv("nickserv/drop/override"))
|
||||
source.Reply(_("Additionally, Services Operators with the \037nickserv/drop/override\037 permission can\n"
|
||||
"replace \037code\037 with \002OVERRIDE\002 to drop without a confirmation code."));
|
||||
{
|
||||
source.Reply(_(
|
||||
"Additionally, Services Operators with the \037nickserv/drop/override\037 permission can "
|
||||
"replace \037code\037 with \002OVERRIDE\002 to drop without a confirmation code."
|
||||
));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -207,32 +207,34 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("This command makes your nickname join the \037target\037 nickname's\n"
|
||||
"group. \037password\037 is the password of the target nickname.\n"
|
||||
" \n"
|
||||
"Joining a group will allow you to share your configuration,\n"
|
||||
"memos, and channel privileges with all the nicknames in the\n"
|
||||
"group, and much more!\n"
|
||||
" \n"
|
||||
"A group exists as long as it is useful. This means that even\n"
|
||||
"if a nick of the group is dropped, you won't lose the\n"
|
||||
"shared things described above, as long as there is at\n"
|
||||
"least one nick remaining in the group.\n"
|
||||
" \n"
|
||||
"You may be able to use this command even if you have not registered\n"
|
||||
"your nick yet. If your nick is already registered, you'll\n"
|
||||
"need to identify yourself before using this command.\n"
|
||||
" \n"
|
||||
"It is recommended to use this command with a non-registered\n"
|
||||
"nick because it will be registered automatically when\n"
|
||||
"using this command. You may use it with a registered nick (to\n"
|
||||
"change your group) only if your network administrators allowed\n"
|
||||
"it.\n"
|
||||
" \n"
|
||||
"You can only be in one group at a time. Group merging is\n"
|
||||
"not possible.\n"
|
||||
" \n"
|
||||
"\037Note\037: all the nicknames of a group have the same password."));
|
||||
source.Reply(_(
|
||||
"This command makes your nickname join the \037target\037 nickname's "
|
||||
"group. \037password\037 is the password of the target nickname. "
|
||||
"\n\n"
|
||||
"Joining a group will allow you to share your configuration, "
|
||||
"memos, and channel privileges with all the nicknames in the "
|
||||
"group, and much more!"
|
||||
"\n\n"
|
||||
"A group exists as long as it is useful. This means that even "
|
||||
"if a nick of the group is dropped, you won't lose the "
|
||||
"shared things described above, as long as there is at "
|
||||
"least one nick remaining in the group."
|
||||
"\n\n"
|
||||
"You may be able to use this command even if you have not registered "
|
||||
"your nick yet. If your nick is already registered, you'll "
|
||||
"need to identify yourself before using this command. "
|
||||
"\n\n"
|
||||
"It is recommended to use this command with a non-registered "
|
||||
"nick because it will be registered automatically when "
|
||||
"using this command. You may use it with a registered nick (to "
|
||||
"change your group) only if your network administrators allowed "
|
||||
"it."
|
||||
"\n\n"
|
||||
"You can only be in one group at a time. Group merging is "
|
||||
"not possible. "
|
||||
"\n\n"
|
||||
"\037Note\037: all the nicknames of a group have the same password."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -292,11 +294,13 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("This command ungroups your nick, or if given, the specified nick,\n"
|
||||
"from the group it is in. The ungrouped nick keeps its registration\n"
|
||||
"time, password, email, greet, language, and url. Everything else\n"
|
||||
"is reset. You may not ungroup yourself if there is only one nick in\n"
|
||||
"your group."));
|
||||
source.Reply(_(
|
||||
"This command ungroups your nick, or if given, the specified nick, "
|
||||
"from the group it is in. The ungrouped nick keeps its registration "
|
||||
"time, password, email, greet, language, and url. Everything else "
|
||||
"is reset. You may not ungroup yourself if there is only one nick in "
|
||||
"your group."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -369,19 +373,29 @@ public:
|
||||
bool OnHelp(CommandSource &source, const Anope::string &subcommand) override
|
||||
{
|
||||
if (source.IsServicesOper())
|
||||
source.Reply(_("Syntax: \002%s [\037nickname\037]\002\n"
|
||||
" \n"
|
||||
"Without a parameter, lists all nicknames that are in\n"
|
||||
"your group.\n"
|
||||
" \n"
|
||||
"With a parameter, lists all nicknames that are in the\n"
|
||||
"group of the given nick.\n"
|
||||
"Specifying a nick is limited to \002Services Operators\002."),
|
||||
source.command.c_str());
|
||||
{
|
||||
source.Reply(_(
|
||||
"Syntax: \002%s [\037nickname\037]\002"
|
||||
"\n\n"
|
||||
"Without a parameter, lists all nicknames that are in "
|
||||
"your group."
|
||||
"\n\n"
|
||||
"With a parameter, lists all nicknames that are in the "
|
||||
"group of the given nick."
|
||||
"\n\n"
|
||||
"Specifying a nick is limited to \002Services Operators\002."
|
||||
),
|
||||
source.command.c_str());
|
||||
}
|
||||
else
|
||||
source.Reply(_("Syntax: \002%s\002\n"
|
||||
" \n"
|
||||
"Lists all nicks in your group."), source.command.c_str());
|
||||
{
|
||||
source.Reply(_(
|
||||
"Syntax: \002%s\002"
|
||||
"\n\n"
|
||||
"Lists all nicks in your group."
|
||||
),
|
||||
source.command.c_str());
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -111,11 +111,14 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Tells %s that you are really the owner of this\n"
|
||||
"nick. Many commands require you to authenticate yourself\n"
|
||||
"with this command before you use them. The password\n"
|
||||
"should be the same one you sent with the \002REGISTER\002\n"
|
||||
"command."), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Tells %s that you are really the owner of this "
|
||||
"nick. Many commands require you to authenticate yourself "
|
||||
"with this command before you use them. The password "
|
||||
"should be the same one you sent with the \002REGISTER\002 "
|
||||
"command."
|
||||
),
|
||||
source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -148,12 +148,13 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Displays information about the given nickname, such as\n"
|
||||
"the nick's owner, last seen address and time, and nick\n"
|
||||
"options. If no nick is given, and you are identified,\n"
|
||||
"your account name is used, else your current nickname is\n"
|
||||
"used."));
|
||||
|
||||
source.Reply(_(
|
||||
"Displays information about the given nickname, such as "
|
||||
"the nick's owner, last seen address and time, and nick "
|
||||
"options. If no nick is given, and you are identified, "
|
||||
"your account name is used, else your current nickname is "
|
||||
"used."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -247,13 +248,16 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows you to prevent certain pieces of information from\n"
|
||||
"being displayed when someone does a %s \002INFO\002 on your\n"
|
||||
"nick. You can hide your email address (\002EMAIL\002), last seen\n"
|
||||
"user@host mask (\002USERMASK\002), your services access status\n"
|
||||
"(\002STATUS\002) and last quit message (\002QUIT\002).\n"
|
||||
"The second parameter specifies whether the information should\n"
|
||||
"be displayed (\002OFF\002) or hidden (\002ON\002)."), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Allows you to prevent certain pieces of information from "
|
||||
"being displayed when someone does a %s\032\002INFO\002 on your "
|
||||
"nick. You can hide your email address\032(\002EMAIL\002), last seen "
|
||||
"user@host mask (\002USERMASK\002), your services access status "
|
||||
"(\002STATUS\002) and last quit message (\002QUIT\002). "
|
||||
"The second parameter specifies whether the information should "
|
||||
"be displayed (\002OFF\002) or hidden (\002ON\002)."
|
||||
),
|
||||
source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -277,13 +281,16 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows you to prevent certain pieces of information from\n"
|
||||
"being displayed when someone does a %s \002INFO\002 on the\n"
|
||||
"nick. You can hide the email address (\002EMAIL\002), last seen\n"
|
||||
"user@host mask (\002USERMASK\002), the services access status\n"
|
||||
"(\002STATUS\002) and last quit message (\002QUIT\002).\n"
|
||||
"The second parameter specifies whether the information should\n"
|
||||
"be displayed (\002OFF\002) or hidden (\002ON\002)."), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Allows you to prevent certain pieces of information from "
|
||||
"being displayed when someone does a %s\032\002INFO\002 on the "
|
||||
"nick. You can hide the email address (\002EMAIL\002), last seen "
|
||||
"user@host mask (\002USERMASK\002), the services access status "
|
||||
"(\002STATUS\002) and last quit message (\002QUIT\002). "
|
||||
"The second parameter specifies whether the information should "
|
||||
"be displayed (\002OFF\002) or hidden (\002ON\002)."
|
||||
),
|
||||
source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -135,41 +135,46 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Lists all registered nicknames which match the given\n"
|
||||
"pattern, in \037nick!user@host\037 format. Nicks with the \002PRIVATE\002\n"
|
||||
"option set will only be displayed to Services Operators with the\n"
|
||||
"proper access. Nicks with the \002NOEXPIRE\002 option set will have\n"
|
||||
"a \002!\002 prefixed to the nickname for Services Operators to see.\n"
|
||||
" \n"
|
||||
"Note that a preceding '#' specifies a range.\n"
|
||||
" \n"
|
||||
"If the SUSPENDED, UNCONFIRMED or NOEXPIRE options are given, only\n"
|
||||
"nicks which, respectively, are SUSPENDED, UNCONFIRMED or have the\n"
|
||||
"NOEXPIRE flag set will be displayed. If multiple options are\n"
|
||||
"given, all nicks matching at least one option will be displayed.\n"
|
||||
"Note that these options are limited to \037Services Operators\037.\n"
|
||||
" \n"
|
||||
"Examples:\n"
|
||||
" \n"
|
||||
" \002LIST *!joeuser@foo.com\002\n"
|
||||
" Lists all registered nicks owned by joeuser@foo.com.\n"
|
||||
" \n"
|
||||
" \002LIST *Bot*!*@*\002\n"
|
||||
" Lists all registered nicks with \002Bot\002 in their\n"
|
||||
" names (case insensitive).\n"
|
||||
" \n"
|
||||
" \002LIST * NOEXPIRE\002\n"
|
||||
" Lists all registered nicks which have been set to not expire.\n"
|
||||
" \n"
|
||||
" \002LIST #51-100\002\n"
|
||||
" Lists all registered nicks within the given range (51-100)."));
|
||||
source.Reply(_(
|
||||
"Lists all registered nicknames which match the given "
|
||||
"pattern, in \037nick!user@host\037 format. Nicks with the \002PRIVATE\002 "
|
||||
"option set will only be displayed to Services Operators with the "
|
||||
"proper access. Nicks with the \002NOEXPIRE\002 option set will have "
|
||||
"a \002!\002 prefixed to the nickname for Services Operators to see."
|
||||
"\n\n"
|
||||
"Note that a preceding '#' specifies a range."
|
||||
"\n\n"
|
||||
"If the SUSPENDED, UNCONFIRMED or NOEXPIRE options are given, only "
|
||||
"nicks which, respectively, are SUSPENDED, UNCONFIRMED or have the "
|
||||
"NOEXPIRE flag set will be displayed. If multiple options are "
|
||||
"given, all nicks matching at least one option will be displayed. "
|
||||
"Note that these options are limited to \037Services Operators\037."
|
||||
"\n\n"
|
||||
"Examples:"
|
||||
"\n\n"
|
||||
" \002LIST *!joeuser@foo.com\002\n"
|
||||
" Lists all registered nicks owned by joeuser@foo.com."
|
||||
"\n\n"
|
||||
" \002LIST *Bot*!*@*\002\n"
|
||||
" Lists all registered nicks with \002Bot\002 in their\n"
|
||||
" names (case insensitive)."
|
||||
"\n\n"
|
||||
" \002LIST * NOEXPIRE\002\n"
|
||||
" Lists all registered nicks which have been set to not expire."
|
||||
"\n\n"
|
||||
" \002LIST #51-100\002\n"
|
||||
" Lists all registered nicks within the given range (51-100)."
|
||||
));
|
||||
|
||||
const Anope::string ®exengine = Config->GetBlock("options").Get<const Anope::string>("regexengine");
|
||||
if (!regexengine.empty())
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Regex matches are also supported using the %s engine.\n"
|
||||
"Enclose your pattern in // if this is desired."), regexengine.c_str());
|
||||
source.Reply(_(
|
||||
"Regex matches are also supported using the %s engine. "
|
||||
"Enclose your pattern in // if this is desired."
|
||||
),
|
||||
regexengine.c_str());
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -233,12 +238,15 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Turns %s's privacy option on or off for your nick.\n"
|
||||
"With \002PRIVATE\002 set, your nickname will not appear in\n"
|
||||
"nickname lists generated with %s's \002LIST\002 command.\n"
|
||||
"(However, anyone who knows your nickname can still get\n"
|
||||
"information on it using the \002INFO\002 command.)"),
|
||||
source.service->nick.c_str(), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Turns %s's privacy option on or off for your nick. "
|
||||
"With \002PRIVATE\002 set, your nickname will not appear in "
|
||||
"nickname lists generated with %s's \002LIST\002 command. "
|
||||
"(However, anyone who knows your nickname can still get "
|
||||
"information on it using the \002INFO\002 command.)"
|
||||
),
|
||||
source.service->nick.c_str(),
|
||||
source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -262,12 +270,15 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Turns %s's privacy option on or off for the nick.\n"
|
||||
"With \002PRIVATE\002 set, the nickname will not appear in\n"
|
||||
"nickname lists generated with %s's \002LIST\002 command.\n"
|
||||
"(However, anyone who knows the nickname can still get\n"
|
||||
"information on it using the \002INFO\002 command.)"),
|
||||
source.service->nick.c_str(), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Turns %s's privacy option on or off for the nick. "
|
||||
"With \002PRIVATE\002 set, the nickname will not appear in "
|
||||
"nickname lists generated with %s's \002LIST\002 command. "
|
||||
"(However, anyone who knows the nickname can still get "
|
||||
"information on it using the \002INFO\002 command.)"
|
||||
),
|
||||
source.service->nick.c_str(),
|
||||
source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -64,14 +64,16 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Without a parameter, reverses the effect of the \002IDENTIFY\002\n"
|
||||
"command, i.e. make you not recognized as the real owner of the nick\n"
|
||||
"anymore. Note, however, that you won't be asked to reidentify\n"
|
||||
"yourself.\n"
|
||||
" \n"
|
||||
"With a parameter, does the same for the given nick. If you\n"
|
||||
"specify \002REVALIDATE\002 as well, services will ask the given nick\n"
|
||||
"to re-identify. This is limited to \002Services Operators\002."));
|
||||
source.Reply(_(
|
||||
"Without a parameter, reverses the effect of the \002IDENTIFY\002 "
|
||||
"command, i.e. make you not recognized as the real owner of the nick "
|
||||
"anymore. Note, however, that you won't be asked to reidentify "
|
||||
"yourself."
|
||||
"\n\n"
|
||||
"With a parameter, does the same for the given nick. If you "
|
||||
"specify \002REVALIDATE\002 as well, services will ask the given nick "
|
||||
"to re-identify. This is limited to \002Services Operators\002."
|
||||
));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -81,9 +81,12 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
u->SendMessage(source.service, _("This nickname has been recovered by %s. If you did not do\n"
|
||||
"this then %s may have your password, and you should change it."),
|
||||
source.GetNick().c_str(), source.GetNick().c_str());
|
||||
u->SendMessage(source.service, _(
|
||||
"This nickname has been recovered by %s. If you did not do "
|
||||
"this then %s may have your password, and you should change it."
|
||||
),
|
||||
source.GetNick().c_str(),
|
||||
source.GetNick().c_str());
|
||||
|
||||
Anope::string buf = source.command.upper() + " command used by " + source.GetNick();
|
||||
u->Kill(*source.service, buf);
|
||||
@@ -125,8 +128,7 @@ public:
|
||||
}
|
||||
else
|
||||
{
|
||||
source.Reply(_("The user with your nick has been removed. Use this command again\n"
|
||||
"to release services's hold on your nick."));
|
||||
source.Reply(_("The user with your nick has been removed. Use this command again to release services's hold on your nick."));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -217,12 +219,14 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Recovers your nick from another user or from services.\n"
|
||||
"If services are currently holding your nick, the hold\n"
|
||||
"will be released. If another user is holding your nick\n"
|
||||
"and is identified they will be killed (similar to the old\n"
|
||||
"GHOST command). If they are not identified they will be\n"
|
||||
"forced off of the nick."));
|
||||
source.Reply(_(
|
||||
"Recovers your nick from another user or from services. "
|
||||
"If services are currently holding your nick, the hold "
|
||||
"will be released. If another user is holding your nick "
|
||||
"and is identified they will be killed (similar to the old "
|
||||
"GHOST command). If they are not identified they will be "
|
||||
"forced off of the nick."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -97,17 +97,24 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("This command is used by several commands as a way to confirm\n"
|
||||
"changes made to your account.\n"
|
||||
" \n"
|
||||
"This is most commonly used to confirm your email address once\n"
|
||||
"you register or change it.\n"
|
||||
" \n"
|
||||
"This is also used after the RESETPASS command has been used to\n"
|
||||
"force identify you to your nick so you may change your password."));
|
||||
source.Reply(_(
|
||||
"This command is used by several commands as a way to confirm "
|
||||
"changes made to your account."
|
||||
"\n\n"
|
||||
"This is most commonly used to confirm your email address once "
|
||||
"you register or change it."
|
||||
"\n\n"
|
||||
"This is also used after the RESETPASS command has been used to "
|
||||
"force identify you to your nick so you may change your password."
|
||||
));
|
||||
|
||||
if (source.HasPriv("nickserv/confirm"))
|
||||
source.Reply(_("Additionally, Services Operators with the \037nickserv/confirm\037 permission can\n"
|
||||
"replace \037passcode\037 with a users nick to force validate them."));
|
||||
{
|
||||
source.Reply(_(
|
||||
"Additionally, Services Operators with the \037nickserv/confirm\037 permission can "
|
||||
"replace \037passcode\037 with a users nick to force validate them."
|
||||
));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -274,39 +281,46 @@ public:
|
||||
unsigned int minpasslen = Config->GetModule("nickserv").Get<unsigned>("minpasslen", "10");
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Registers your nickname in the %s database. Once\n"
|
||||
"your nick is registered, you can use the \002SET\002 and \002ACCESS\002\n"
|
||||
"commands to configure your nick's settings as you like\n"
|
||||
"them. Make sure you remember the password you use when\n"
|
||||
"registering - you'll need it to make changes to your nick\n"
|
||||
"later. (Note that \002case matters!\002 \037ANOPE\037, \037Anope\037, and\n"
|
||||
"\037anope\037 are all different passwords!)\n"
|
||||
" \n"
|
||||
"Guidelines on choosing passwords:\n"
|
||||
" \n"
|
||||
"Passwords should not be easily guessable. For example,\n"
|
||||
"using your real name as a password is a bad idea. Using\n"
|
||||
"your nickname as a password is a much worse idea ;) and,\n"
|
||||
"in fact, %s will not allow it. Also, short\n"
|
||||
"passwords are vulnerable to trial-and-error searches, so\n"
|
||||
"you should choose a password at least %u characters long.\n"
|
||||
"Finally, the space character cannot be used in passwords."),
|
||||
source.service->nick.c_str(), source.service->nick.c_str(),
|
||||
minpasslen);
|
||||
source.Reply(_(
|
||||
"Registers your nickname in the %s database. Once "
|
||||
"your nick is registered, you can use the \002SET\002 and \002ACCESS\002 "
|
||||
"commands to configure your nick's settings as you like "
|
||||
"them. Make sure you remember the password you use when "
|
||||
"registering - you'll need it to make changes to your nick "
|
||||
"later. (Note that \002case matters!\002 \037ANOPE\037, \037Anope\037, and "
|
||||
"\037anope\037 are all different passwords!) "
|
||||
"\n\n"
|
||||
"Guidelines on choosing passwords:"
|
||||
"\n\n"
|
||||
"Passwords should not be easily guessable. For example, "
|
||||
"using your real name as a password is a bad idea. Using "
|
||||
"your nickname as a password is a much worse idea ;) and, "
|
||||
"in fact, %s will not allow it. Also, short "
|
||||
"passwords are vulnerable to trial-and-error searches, so "
|
||||
"you should choose a password at least %u characters long. "
|
||||
"Finally, the space character cannot be used in passwords."
|
||||
),
|
||||
source.service->nick.c_str(),
|
||||
source.service->nick.c_str(),
|
||||
minpasslen);
|
||||
|
||||
if (!Config->GetModule("nickserv").Get<bool>("forceemail", "yes"))
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The \037email\037 parameter is optional and will set the email\n"
|
||||
"for your nick immediately. You may also wish to \002SET HIDE\002 it\n"
|
||||
"after registering if it isn't the default setting already."));
|
||||
source.Reply(_(
|
||||
"The \037email\037 parameter is optional and will set the email "
|
||||
"for your nick immediately. You may also wish to \002SET\032HIDE\002 it "
|
||||
"after registering if it isn't the default setting already."
|
||||
));
|
||||
}
|
||||
|
||||
source.Reply(" ");
|
||||
source.Reply(_("This command also creates a new group for your nickname,\n"
|
||||
"that will allow you to register other nicks later sharing\n"
|
||||
"the same configuration, the same set of memos and the\n"
|
||||
"same channel privileges."));
|
||||
source.Reply(_(
|
||||
"This command also creates a new group for your nickname, "
|
||||
"that will allow you to register other nicks later sharing "
|
||||
"the same configuration, the same set of memos and the "
|
||||
"same channel privileges."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -50,9 +50,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sends a passcode to the nickname with instructions on how to\n"
|
||||
"reset their password. Email must be the email address associated\n"
|
||||
"to the nickname."));
|
||||
source.Reply(_(
|
||||
"Sends a passcode to the nickname with instructions on how to "
|
||||
"reset their password. Email must be the email address associated "
|
||||
"to the nickname."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
+39
-25
@@ -57,8 +57,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
source.Reply(_("Type \002%s \037option\037\002 for more information\n"
|
||||
"on a specific option."),
|
||||
source.Reply(_("Type \002%s\032\037option\037\002 for more information on a specific option."),
|
||||
source.service->GetQueryCommand("generic/help", this_name).c_str());
|
||||
|
||||
return true;
|
||||
@@ -101,9 +100,11 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
source.Reply(_("Type \002%s \037option\037\002 for more information\n"
|
||||
"on a specific option. The options will be set on the given\n"
|
||||
"\037nickname\037."),
|
||||
source.Reply(_(
|
||||
"Type \002%s\032\037option\037\002 for more information "
|
||||
"on a specific option. The options will be set on the given "
|
||||
"\037nickname\037."
|
||||
),
|
||||
source.service->GetQueryCommand("generic/help", this_name).c_str());
|
||||
return true;
|
||||
}
|
||||
@@ -164,8 +165,7 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Changes the password used to identify you as the nick's\n"
|
||||
"owner."));
|
||||
source.Reply(_("Changes the password used to identify you as the nick's owner."));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -300,10 +300,13 @@ public:
|
||||
BotInfo *bi = Config->GetClient("ChanServ");
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets whether you will be given your channel status modes automatically.\n"
|
||||
"Set to \002ON\002 to allow %s to set status modes on you automatically\n"
|
||||
"when entering channels. Note that depending on channel settings some modes\n"
|
||||
"may not get set automatically."), bi ? bi->nick.c_str() : "ChanServ");
|
||||
source.Reply(_(
|
||||
"Sets whether you will be given your channel status modes automatically. "
|
||||
"Set to \002ON\002 to allow %s to set status modes on you automatically "
|
||||
"when entering channels. Note that depending on channel settings some modes "
|
||||
"may not get set automatically."
|
||||
),
|
||||
bi ? bi->nick.c_str() : "ChanServ");
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -328,11 +331,14 @@ public:
|
||||
BotInfo *bi = Config->GetClient("ChanServ");
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets whether the given nickname will be given its status modes\n"
|
||||
"in channels automatically. Set to \002ON\002 to allow %s\n"
|
||||
"to set status modes on the given nickname automatically when it\n"
|
||||
"is entering channels. Note that depending on channel settings\n"
|
||||
"some modes may not get set automatically."), bi ? bi->nick.c_str() : "ChanServ");
|
||||
source.Reply(_(
|
||||
"Sets whether the given nickname will be given its status modes "
|
||||
"in channels automatically. Set to \002ON\002 to allow %s "
|
||||
"to set status modes on the given nickname automatically when it "
|
||||
"is entering channels. Note that depending on channel settings "
|
||||
"some modes may not get set automatically."
|
||||
),
|
||||
bi ? bi->nick.c_str() : "ChanServ");
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -486,8 +492,10 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Changes the display used to refer to your nickname group in\n"
|
||||
"services. The new display MUST be a nick of your group."));
|
||||
source.Reply(_(
|
||||
"Changes the display used to refer to your nickname group in "
|
||||
"services. The new display MUST be a nick of your group."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -511,8 +519,10 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Changes the display used to refer to the nickname group in\n"
|
||||
"services. The new display MUST be a nick of the group."));
|
||||
source.Reply(_(
|
||||
"Changes the display used to refer to the nickname group in "
|
||||
"services. The new display MUST be a nick of the group."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -631,9 +641,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Associates the given email address with your nickname.\n"
|
||||
"This address will be displayed whenever someone requests\n"
|
||||
"information on the nickname with the \002INFO\002 command."));
|
||||
source.Reply(_(
|
||||
"Associates the given email address with your nickname. "
|
||||
"This address will be displayed whenever someone requests "
|
||||
"information on the nickname with the \002INFO\002 command."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -709,8 +721,10 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Sets whether the given nickname will expire. Setting this\n"
|
||||
"to \002ON\002 prevents the nickname from expiring."));
|
||||
source.Reply(_(
|
||||
"Sets whether the given nickname will expire. Setting this "
|
||||
"to \002ON\002 prevents the nickname from expiring."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -68,9 +68,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Enables or disables keepmodes for your nick. If keep\n"
|
||||
"modes is enabled, services will remember your usermodes\n"
|
||||
"and attempt to re-set them the next time you authenticate."));
|
||||
source.Reply(_(
|
||||
"Enables or disables keepmodes for your nick. If keep "
|
||||
"modes is enabled, services will remember your usermodes "
|
||||
"and attempt to re-set them the next time you authenticate."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -95,9 +97,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Enables or disables keepmodes for the given nick. If keep\n"
|
||||
"modes is enabled, services will remember users' usermodes\n"
|
||||
"and attempt to re-set them the next time they authenticate."));
|
||||
source.Reply(_(
|
||||
"Enables or disables keepmodes for the given nick. If keep "
|
||||
"modes is enabled, services will remember users' usermodes "
|
||||
"and attempt to re-set them the next time they authenticate."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -87,10 +87,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Changes the language services uses when sending messages to\n"
|
||||
"you (for example, when responding to a command you send).\n"
|
||||
"\037language\037 should be chosen from the following list of\n"
|
||||
"supported languages:"));
|
||||
source.Reply(_(
|
||||
"Changes the language services uses when sending messages to "
|
||||
"you (for example, when responding to a command you send). "
|
||||
"\037language\037 should be chosen from the following list of "
|
||||
"supported languages:"
|
||||
));
|
||||
|
||||
for (const auto &[langcode, langname] : languages)
|
||||
source.Reply(" %s (%s)", langcode.c_str(), langname.c_str());
|
||||
@@ -119,10 +121,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Changes the language services uses when sending messages to\n"
|
||||
"the given user (for example, when responding to a command they send).\n"
|
||||
"\037language\037 should be chosen from the following list of\n"
|
||||
"supported languages:"));
|
||||
source.Reply(_(
|
||||
"Changes the language services uses when sending messages to "
|
||||
"the given user (for example, when responding to a command they send). "
|
||||
"\037language\037 should be chosen from the following list of "
|
||||
"supported languages:"
|
||||
));
|
||||
|
||||
for (const auto &[langcode, langname] : languages)
|
||||
source.Reply(" %s (%s)", langcode.c_str(), langname.c_str());
|
||||
|
||||
@@ -74,9 +74,12 @@ public:
|
||||
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows you to choose the way services are communicating with\n"
|
||||
"you. With \002%s\002 set, services will use messages, else they'll\n"
|
||||
"use notices."), cmd.upper().c_str());
|
||||
source.Reply(_(
|
||||
"Allows you to choose the way services are communicating with "
|
||||
"you. With \002%s\002 set, services will use messages, else they'll "
|
||||
"use notices."
|
||||
),
|
||||
cmd.upper().c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -95,9 +98,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows you to choose the way services are communicating with\n"
|
||||
"the given user. With \002MSG\002 set, services will use messages,\n"
|
||||
"else they'll use notices."));
|
||||
source.Reply(_(
|
||||
"Allows you to choose the way services are communicating with "
|
||||
"the given user. With \002MSG\002 set, services will use messages, "
|
||||
"else they'll use notices."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -99,10 +99,13 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Turns automatic protection for your account on or off. With\n"
|
||||
"protection on if another user tries to use a nickname from\n"
|
||||
"your group they will be given some time to change their nick\n"
|
||||
"after which %s will forcibly change their nick."), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Turns automatic protection for your account on or off. With "
|
||||
"protection on if another user tries to use a nickname from "
|
||||
"your group they will be given some time to change their nick "
|
||||
"after which %s will forcibly change their nick."
|
||||
),
|
||||
source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -127,10 +130,13 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Turns automatic protection for the nick on or off. With\n"
|
||||
"protection on if a user tries to use a nickname from the\n"
|
||||
"nick's group they will be given some time to change their\n"
|
||||
"nick after which %s will forcibly change their nick."), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Turns automatic protection for the nick on or off. With "
|
||||
"protection on if a user tries to use a nickname from the "
|
||||
"nick's group they will be given some time to change their "
|
||||
"nick after which %s will forcibly change their nick."
|
||||
),
|
||||
source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -157,10 +157,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Suspends a registered nickname, which prevents it from being used\n"
|
||||
"while keeping all the data for that nick. If an expiry is given\n"
|
||||
"the nick will be unsuspended after that period of time, else the\n"
|
||||
"default expiry from the configuration is used."));
|
||||
source.Reply(_(
|
||||
"Suspends a registered nickname, which prevents it from being used "
|
||||
"while keeping all the data for that nick. If an expiry is given "
|
||||
"the nick will be unsuspended after that period of time, else the "
|
||||
"default expiry from the configuration is used."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -41,9 +41,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Updates your current status, i.e. it checks for new memos,\n"
|
||||
"sets needed channel modes and updates your vhost and\n"
|
||||
"your userflags (lastseentime, etc)."));
|
||||
source.Reply(_(
|
||||
"Updates your current status, i.e. it checks for new memos, "
|
||||
"sets needed channel modes and updates your vhost and "
|
||||
"your userflags (lastseentime, etc)."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -421,53 +421,61 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows Services Operators to manipulate the AKILL list. If\n"
|
||||
"a user matching an AKILL mask attempts to connect, services\n"
|
||||
"will issue a KILL for that user and, on supported server\n"
|
||||
"types, will instruct all servers to add a ban for the mask\n"
|
||||
"which the user matched.\n"
|
||||
" \n"
|
||||
"\002AKILL ADD\002 adds the given mask to the AKILL\n"
|
||||
"list for the given reason, which \002must\002 be given.\n"
|
||||
"Mask should be in the format of nick!user@host#real name,\n"
|
||||
"though all that is required is user@host. If a real name is specified,\n"
|
||||
"the reason must be prepended with a :.\n"
|
||||
"\037expiry\037 is specified as an integer followed by one of \037d\037\n"
|
||||
"(days), \037h\037 (hours), or \037m\037 (minutes). Combinations (such as\n"
|
||||
"\0371h30m\037) are not permitted. If a unit specifier is not\n"
|
||||
"included, the default is days (so \037+30\037 by itself means 30\n"
|
||||
"days). To add an AKILL which does not expire, use \037+0\037. If the\n"
|
||||
"usermask to be added starts with a \037+\037, an expiry time must\n"
|
||||
"be given, even if it is the same as the default. The\n"
|
||||
"current AKILL default expiry time can be found with the\n"
|
||||
"\002STATS AKILL\002 command."));
|
||||
source.Reply(_(
|
||||
"Allows Services Operators to manipulate the AKILL list. If "
|
||||
"a user matching an AKILL mask attempts to connect, services "
|
||||
"will issue a KILL for that user and, on supported server "
|
||||
"types, will instruct all servers to add a ban for the mask "
|
||||
"which the user matched."
|
||||
"\n\n"
|
||||
"\002AKILL\032ADD\002 adds the given mask to the AKILL "
|
||||
"list for the given reason, which \002must\002 be given. "
|
||||
"Mask should be in the format of nick!user@host#real\032name, "
|
||||
"though all that is required is user@host. If a real name is specified, "
|
||||
"the reason must be prepended with a :. "
|
||||
"\037expiry\037 is specified as an integer followed by one of \037d\037 "
|
||||
"(days), \037h\037 (hours), or \037m\037 (minutes). Combinations (such as "
|
||||
"\0371h30m\037) are not permitted. If a unit specifier is not "
|
||||
"included, the default is days (so \037+30\037 by itself means 30 "
|
||||
"days). To add an AKILL which does not expire, use \037+0\037. If the "
|
||||
"usermask to be added starts with a \037+\037, an expiry time must "
|
||||
"be given, even if it is the same as the default. The "
|
||||
"current AKILL default expiry time can be found with the "
|
||||
"\002STATS\032AKILL\002 command."
|
||||
));
|
||||
|
||||
const Anope::string ®exengine = Config->GetBlock("options").Get<const Anope::string>("regexengine");
|
||||
if (!regexengine.empty())
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Regex matches are also supported using the %s engine.\n"
|
||||
"Enclose your mask in // if this is desired."), regexengine.c_str());
|
||||
source.Reply(_(
|
||||
"Regex matches are also supported using the %s engine. "
|
||||
"Enclose your mask in // if this is desired."
|
||||
),
|
||||
regexengine.c_str());
|
||||
}
|
||||
|
||||
source.Reply(" ");
|
||||
source.Reply(_(
|
||||
" \n"
|
||||
"The \002AKILL DEL\002 command removes the given mask from the\n"
|
||||
"AKILL list if it is present. If a list of entry numbers is\n"
|
||||
"given, those entries are deleted. (See the example for LIST\n"
|
||||
"below.)\n"
|
||||
" \n"
|
||||
"The \002AKILL LIST\002 command displays the AKILL list.\n"
|
||||
"If a wildcard mask is given, only those entries matching the\n"
|
||||
"mask are displayed. If a list of entry numbers is given,\n"
|
||||
"only those entries are shown; for example:\n"
|
||||
" \002AKILL LIST 2-5,7-9\002\n"
|
||||
" Lists AKILL entries numbered 2 through 5 and 7\n"
|
||||
" through 9.\n"
|
||||
" \n"
|
||||
"\002AKILL VIEW\002 is a more verbose version of \002AKILL LIST\002, and\n"
|
||||
"will show who added an AKILL, the date it was added, and when\n"
|
||||
"it expires, as well as the user@host/ip mask and reason.\n"
|
||||
" \n"
|
||||
"\002AKILL CLEAR\002 clears all entries of the AKILL list."));
|
||||
"The \002AKILL\032DEL\002 command removes the given mask from the "
|
||||
"AKILL list if it is present. If a list of entry numbers is "
|
||||
"given, those entries are deleted. (See the example for LIST "
|
||||
"below.)"
|
||||
"\n\n"
|
||||
"The \002AKILL\032LIST\002 command displays the AKILL list. "
|
||||
"If a wildcard mask is given, only those entries matching the "
|
||||
"mask are displayed. If a list of entry numbers is given, "
|
||||
"only those entries are shown; for example:\n"
|
||||
" \002AKILL\032LIST\0322-5,7-9\002\n"
|
||||
" Lists AKILL entries numbered 2 through 5 and 7\n"
|
||||
" through 9."
|
||||
"\n\n"
|
||||
"\002AKILL\032VIEW\002 is a more verbose version of \002AKILL\032LIST\002, and "
|
||||
"will show who added an AKILL, the date it was added, and when "
|
||||
"it expires, as well as the user@host/ip mask and reason."
|
||||
"\n\n"
|
||||
"\002AKILL\032CLEAR\002 clears all entries of the AKILL list."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -96,9 +96,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Puts an AKILL for every nick on the specified channel. It\n"
|
||||
"uses the entire real ident@host for every nick, and\n"
|
||||
"then enforces the AKILL."));
|
||||
source.Reply(_(
|
||||
"Puts an AKILL for every nick on the specified channel. It "
|
||||
"uses the entire real ident@host for every nick, and "
|
||||
"then enforces the AKILL."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -122,13 +122,15 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows you to change and view configuration settings.\n"
|
||||
"Settings changed by this command are temporary and will not be reflected\n"
|
||||
"back into the configuration file, and will be lost if Anope is shut down,\n"
|
||||
"restarted, or the configuration is reloaded.\n"
|
||||
" \n"
|
||||
"Example:\n"
|
||||
" \002MODIFY nickserv regdelay 15m\002"));
|
||||
source.Reply(_(
|
||||
"Allows you to change and view configuration settings. "
|
||||
"Settings changed by this command are temporary and will not be reflected "
|
||||
"back into the configuration file, and will be lost if Anope is shut down, "
|
||||
"restarted, or the configuration is reloaded."
|
||||
"\n\n"
|
||||
"Example:\n"
|
||||
" \002MODIFY\032nickserv\032regdelay\03215m\002"
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -235,9 +235,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("The defcon system can be used to implement a pre-defined\n"
|
||||
"set of restrictions to services useful during an attempted\n"
|
||||
"attack on the network."));
|
||||
source.Reply(_(
|
||||
"The defcon system can be used to implement a pre-defined "
|
||||
"set of restrictions to services useful during an attempted "
|
||||
"attack on the network."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
+16
-14
@@ -722,20 +722,22 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("This command allows managing DNS zones used for controlling what servers users\n"
|
||||
"are directed to when connecting. Omitting all parameters prints out the status of\n"
|
||||
"the DNS zone.\n"
|
||||
" \n"
|
||||
"\002ADDZONE\002 adds a zone, eg us.yournetwork.tld. Servers can then be added to this\n"
|
||||
"zone with the \002ADDSERVER\002 command.\n"
|
||||
" \n"
|
||||
"The \002ADDSERVER\002 command adds a server to the given zone. When a query is done, the\n"
|
||||
"zone in question is served if it exists, else all servers in all zones are served.\n"
|
||||
"A server may be in more than one zone.\n"
|
||||
" \n"
|
||||
"The \002ADDIP\002 command associates an IP with a server.\n"
|
||||
" \n"
|
||||
"The \002POOL\002 and \002DEPOOL\002 commands actually add and remove servers to their given zones."));
|
||||
source.Reply(_(
|
||||
"This command allows managing DNS zones used for controlling what servers users "
|
||||
"are directed to when connecting. Omitting all parameters prints out the status of "
|
||||
"the DNS zone."
|
||||
"\n\n"
|
||||
"\002ADDZONE\002 adds a zone, eg us.yournetwork.tld. Servers can then be added to this "
|
||||
"zone with the \002ADDSERVER\002 command."
|
||||
"\n\n"
|
||||
"The \002ADDSERVER\002 command adds a server to the given zone. When a query is done, the "
|
||||
"zone in question is served if it exists, else all servers in all zones are served. "
|
||||
"A server may be in more than one zone."
|
||||
"\n\n"
|
||||
"The \002ADDIP\002 command associates an IP with a server."
|
||||
"\n\n"
|
||||
"The \002POOL\002 and \002DEPOOL\002 commands actually add and remove servers to their given zones."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -457,15 +457,20 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Forbid allows you to forbid usage of certain nicknames, channels,\n"
|
||||
"and email addresses. Wildcards are accepted for all entries."));
|
||||
source.Reply(_(
|
||||
"Forbid allows you to forbid usage of certain nicknames, channels, "
|
||||
"and email addresses. Wildcards are accepted for all entries."
|
||||
));
|
||||
|
||||
const Anope::string ®exengine = Config->GetBlock("options").Get<const Anope::string>("regexengine");
|
||||
if (!regexengine.empty())
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Regex matches are also supported using the %s engine.\n"
|
||||
"Enclose your pattern in // if this is desired."), regexengine.c_str());
|
||||
source.Reply(_(
|
||||
"Regex matches are also supported using the %s engine. "
|
||||
"Enclose your pattern in // if this is desired."
|
||||
),
|
||||
regexengine.c_str());
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -381,24 +381,29 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows Services Operators to make services ignore a nick or mask\n"
|
||||
"for a certain time or until the next restart. The default\n"
|
||||
"time format is seconds. You can specify it by using units.\n"
|
||||
"Valid units are: \037s\037 for seconds, \037m\037 for minutes,\n"
|
||||
"\037h\037 for hours and \037d\037 for days.\n"
|
||||
"Combinations of these units are not permitted.\n"
|
||||
"To make services permanently ignore the user, type 0 as time.\n"
|
||||
"When adding a \037mask\037, it should be in the format nick!user@host,\n"
|
||||
"everything else will be considered a nick. Wildcards are permitted.\n"
|
||||
" \n"
|
||||
"Ignores will not be enforced on IRC Operators."));
|
||||
source.Reply(_(
|
||||
"Allows Services Operators to make services ignore a nick or mask "
|
||||
"for a certain time or until the next restart. The default "
|
||||
"time format is seconds. You can specify it by using units. "
|
||||
"Valid units are: \037s\037 for seconds, \037m\037 for minutes, "
|
||||
"\037h\037 for hours and \037d\037 for days. "
|
||||
"Combinations of these units are not permitted. "
|
||||
"To make services permanently ignore the user, type 0 as time. "
|
||||
"When adding a \037mask\037, it should be in the format nick!user@host, "
|
||||
"everything else will be considered a nick. Wildcards are permitted."
|
||||
"\n\n"
|
||||
"Ignores will not be enforced on IRC Operators."
|
||||
));
|
||||
|
||||
const Anope::string ®exengine = Config->GetBlock("options").Get<const Anope::string>("regexengine");
|
||||
if (!regexengine.empty())
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Regex matches are also supported using the %s engine.\n"
|
||||
"Enclose your pattern in // if this is desired."), regexengine.c_str());
|
||||
source.Reply(_(
|
||||
"Regex matches are also supported using the %s engine. "
|
||||
"Enclose your pattern in // if this is desired."
|
||||
),
|
||||
regexengine.c_str());
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -254,9 +254,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Add or delete oper information for a given nick or channel.\n"
|
||||
"This will show to opers in the respective info command for\n"
|
||||
"the nick or channel."));
|
||||
source.Reply(_(
|
||||
"Add or delete oper information for a given nick or channel. "
|
||||
"This will show to opers in the respective info command for "
|
||||
"the nick or channel."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -54,14 +54,16 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Tells services to jupiter a server -- that is, to create\n"
|
||||
"a fake \"server\" connected to services which prevents\n"
|
||||
"the real server of that name from connecting. The jupe\n"
|
||||
"may be removed using a standard \002SQUIT\002. If a reason is\n"
|
||||
"given, it is placed in the server information field;\n"
|
||||
"otherwise, the server information field will contain the\n"
|
||||
"text \"Juped by <nick>\", showing the nickname of the\n"
|
||||
"person who jupitered the server."));
|
||||
source.Reply(_(
|
||||
"Tells services to jupiter a server -- that is, to create "
|
||||
"a fake \"server\" connected to services which prevents "
|
||||
"the real server of that name from connecting. The jupe "
|
||||
"may be removed using a standard \002SQUIT\002. If a reason is "
|
||||
"given, it is placed in the server information field; "
|
||||
"otherwise, the server information field will contain the "
|
||||
"text \"Juped by <nick>\", showing the nickname of the "
|
||||
"person who jupitered the server."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -60,12 +60,15 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows staff to kick a user from any channel.\n"
|
||||
"Parameters are the same as for the standard /KICK\n"
|
||||
"command. The kick message will have the nickname of the\n"
|
||||
"IRCop sending the KICK command prepended; for example:\n"
|
||||
" \n"
|
||||
"*** SpamMan has been kicked off channel #my_channel by %s (Alcan (Flood))"), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Allows staff to kick a user from any channel. "
|
||||
"Parameters are the same as for the standard /KICK "
|
||||
"command. The kick message will have the nickname of the "
|
||||
"IRCop sending the KICK command prepended; for example:"
|
||||
"\n\n"
|
||||
"*** SpamMan has been kicked off channel #my_channel by %s (Alcan (Flood))"
|
||||
),
|
||||
source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -46,9 +46,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows you to kill a user from the network.\n"
|
||||
"Parameters are the same as for the standard /KILL\n"
|
||||
"command."));
|
||||
source.Reply(_(
|
||||
"Allows you to kill a user from the network. "
|
||||
"Parameters are the same as for the standard /KILL "
|
||||
"command."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -109,20 +109,25 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Lists all channels currently in use on the IRC network, whether they\n"
|
||||
"are registered or not.\n"
|
||||
" \n"
|
||||
"If \002pattern\002 is given, lists only channels that match it. If a nickname\n"
|
||||
"is given, lists only the channels the user using it is on. If SECRET is\n"
|
||||
"specified, lists only channels matching \002pattern\002 that have the +s or\n"
|
||||
"+p mode."));
|
||||
source.Reply(_(
|
||||
"Lists all channels currently in use on the IRC network, whether they "
|
||||
"are registered or not."
|
||||
"\n\n"
|
||||
"If \002pattern\002 is given, lists only channels that match it. If a nickname "
|
||||
"is given, lists only the channels the user using it is on. If SECRET is "
|
||||
"specified, lists only channels matching \002pattern\002 that have the +s or "
|
||||
"+p mode."
|
||||
));
|
||||
|
||||
const Anope::string ®exengine = Config->GetBlock("options").Get<const Anope::string>("regexengine");
|
||||
if (!regexengine.empty())
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Regex matches are also supported using the %s engine.\n"
|
||||
"Enclose your pattern in // if this is desired."), regexengine.c_str());
|
||||
source.Reply(_(
|
||||
"Regex matches are also supported using the %s engine. "
|
||||
"Enclose your pattern in // if this is desired."
|
||||
),
|
||||
regexengine.c_str());
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -252,20 +257,25 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Lists all users currently online on the IRC network, whether their\n"
|
||||
"nick is registered or not.\n"
|
||||
" \n"
|
||||
"If \002pattern\002 is given, lists only users that match it (it must be in\n"
|
||||
"the format nick!user@host[#realname]). If \002channel\002 is given, lists\n"
|
||||
"only users that are on the given channel. If INVISIBLE is specified, only users\n"
|
||||
"with the +i flag will be listed."));
|
||||
source.Reply(_(
|
||||
"Lists all users currently online on the IRC network, whether their "
|
||||
"nick is registered or not."
|
||||
"\n\n"
|
||||
"If \002pattern\002 is given, lists only users that match it (it must be in "
|
||||
"the format nick!user@host[#realname]). If \002channel\002 is given, lists "
|
||||
"only users that are on the given channel. If INVISIBLE is specified, only users "
|
||||
"with the +i flag will be listed."
|
||||
));
|
||||
|
||||
const Anope::string ®exengine = Config->GetBlock("options").Get<const Anope::string>("regexengine");
|
||||
if (!regexengine.empty())
|
||||
{
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Regex matches are also supported using the %s engine.\n"
|
||||
"Enclose your pattern in // if this is desired."), regexengine.c_str());
|
||||
source.Reply(_(
|
||||
"Regex matches are also supported using the %s engine. "
|
||||
"Enclose your pattern in // if this is desired."
|
||||
),
|
||||
regexengine.c_str());
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -48,9 +48,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Logs you in to %s so you gain Services Operator privileges.\n"
|
||||
"This command may be unnecessary if your oper block is\n"
|
||||
"configured without a password."), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Logs you in to %s so you gain Services Operator privileges. "
|
||||
"This command may be unnecessary if your oper block is "
|
||||
"configured without a password."
|
||||
),
|
||||
source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -91,9 +94,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Logs you out from %s so you lose Services Operator privileges.\n"
|
||||
"This command is only useful if your oper block is configured\n"
|
||||
"with a password."), source.service->nick.c_str());
|
||||
source.Reply(_(
|
||||
"Logs you out from %s so you lose Services Operator privileges. "
|
||||
"This command is only useful if your oper block is configured "
|
||||
"with a password."
|
||||
),
|
||||
source.service->nick.c_str());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -147,17 +147,19 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("This command searches the services logfiles for messages\n"
|
||||
"that match the given pattern. The day and limit argument\n"
|
||||
"may be used to specify how many days of logs to search\n"
|
||||
"and the number of replies to limit to. By default this\n"
|
||||
"command searches one week of logs, and limits replies\n"
|
||||
"to 50.\n"
|
||||
" \n"
|
||||
"For example:\n"
|
||||
" \002LOGSEARCH +21d +500l Anope\002\n"
|
||||
" Searches the last 21 days worth of logs for messages\n"
|
||||
" containing Anope and lists the most recent 500 of them."));
|
||||
source.Reply(_(
|
||||
"This command searches the services logfiles for messages "
|
||||
"that match the given pattern. The day and limit argument "
|
||||
"may be used to specify how many days of logs to search "
|
||||
"and the number of replies to limit to. By default this "
|
||||
"command searches one week of logs, and limits replies "
|
||||
"to 50."
|
||||
"\n\n"
|
||||
"For example:\n"
|
||||
" \002LOGSEARCH\032+21d\032+500l\032Anope\002\n"
|
||||
" Searches the last 21 days worth of logs for messages\n"
|
||||
" containing Anope and lists the most recent 500 of them."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -128,10 +128,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows Services Operators to change modes for any channel.\n"
|
||||
"Parameters are the same as for the standard /MODE command.\n"
|
||||
"Alternatively, CLEAR may be given to clear all modes on the channel.\n"
|
||||
"If CLEAR ALL is given then all modes, including user status, is removed."));
|
||||
source.Reply(_(
|
||||
"Allows Services Operators to change modes for any channel. "
|
||||
"Parameters are the same as for the standard /MODE command. "
|
||||
"Alternatively, CLEAR may be given to clear all modes on the channel. "
|
||||
"If CLEAR\032ALL is given then all modes, including user status, is removed."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -169,8 +171,10 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows Services Operators to change modes for any user.\n"
|
||||
"Parameters are the same as for the standard /MODE command."));
|
||||
source.Reply(_(
|
||||
"Allows Services Operators to change modes for any user. "
|
||||
"Parameters are the same as for the standard /MODE command."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -43,8 +43,7 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("This command loads the module named \037modname\037 from the modules\n"
|
||||
"directory."));
|
||||
source.Reply(_("This command loads the module named \037modname\037 from the modules directory."));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -319,12 +319,14 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Edits or displays the list of logon news messages. When a\n"
|
||||
"user connects to the network, these messages will be sent\n"
|
||||
"to them. However, no more than \002%d\002 messages will be\n"
|
||||
"sent in order to avoid flooding the user. If there are\n"
|
||||
"more news messages, only the most recent will be sent."),
|
||||
Config->GetModule(this->owner).Get<unsigned>("newscount", "3"));
|
||||
source.Reply(_(
|
||||
"Edits or displays the list of logon news messages. When a "
|
||||
"user connects to the network, these messages will be sent "
|
||||
"to them. However, no more than \002%d\002 messages will be "
|
||||
"sent in order to avoid flooding the user. If there are "
|
||||
"more news messages, only the most recent will be sent."
|
||||
),
|
||||
Config->GetModule(this->owner).Get<unsigned>("newscount", "3"));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -347,12 +349,14 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Edits or displays the list of oper news messages. When a\n"
|
||||
"user opers up (with the /OPER command), these messages will\n"
|
||||
"be sent to them. However, no more than \002%d\002 messages will\n"
|
||||
"be sent in order to avoid flooding the user. If there are\n"
|
||||
"more news messages, only the most recent will be sent."),
|
||||
Config->GetModule(this->owner).Get<unsigned>("newscount", "3"));
|
||||
source.Reply(_(
|
||||
"Edits or displays the list of oper news messages. When a "
|
||||
"user opers up (with the /OPER command), these messages will "
|
||||
"be sent to them. However, no more than \002%d\002 messages will "
|
||||
"be sent in order to avoid flooding the user. If there are "
|
||||
"more news messages, only the most recent will be sent."
|
||||
),
|
||||
Config->GetModule(this->owner).Get<unsigned>("newscount", "3"));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -375,9 +379,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Edits or displays the list of random news messages. When a\n"
|
||||
"user connects to the network, one (and only one) of the\n"
|
||||
"random news will be randomly chosen and sent to them."));
|
||||
source.Reply(_(
|
||||
"Edits or displays the list of random news messages. When a "
|
||||
"user connects to the network, one (and only one) of the "
|
||||
"random news will be randomly chosen and sent to them."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -64,10 +64,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("\002SET\002 kills all operators from the given\n"
|
||||
"\002server\002 and prevents operators from opering\n"
|
||||
"up on the given server. \002REVOKE\002 removes this\n"
|
||||
"restriction."));
|
||||
source.Reply(_(
|
||||
"\002SET\002 kills all operators from the given "
|
||||
"\002server\002 and prevents operators from opering "
|
||||
"up on the given server. \002REVOKE\002 removes this "
|
||||
"restriction."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -253,9 +253,11 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Allows you to change and view Services Operators.\n"
|
||||
"Note that operators removed by this command but are still set in\n"
|
||||
"the configuration file are not permanently affected by this."));
|
||||
source.Reply(_(
|
||||
"Allows you to change and view Services Operators. "
|
||||
"Note that operators removed by this command but are still set in "
|
||||
"the configuration file are not permanently affected by this."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -45,10 +45,12 @@ public:
|
||||
{
|
||||
this->SendSyntax(source);
|
||||
source.Reply(" ");
|
||||
source.Reply(_("Causes services to reload the configuration file. Note that\n"
|
||||
"some directives still need the restart of the services to\n"
|
||||
"take effect (such as services' nicknames, activation of the\n"
|
||||
"session limitation, etc.)."));
|
||||
source.Reply(_(
|
||||
"Causes services to reload the configuration file. Note that "
|
||||
"some directives still need the restart of the services to "
|
||||
"take effect (such as services' nicknames, activation of the "
|
||||
"session limitation, etc.)."
|
||||
));
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user