summaryrefslogtreecommitdiff
path: root/modules/chanserv
diff options
context:
space:
mode:
authorSadie Powell <sadie@witchery.services>2025-04-16 00:04:30 +0100
committerSadie Powell <sadie@witchery.services>2025-04-16 00:04:30 +0100
commitce362854a39c35249f8d2c7bcf27e3d5f9aa9980 (patch)
tree6d4012d9579c2d56055d621768122cf5f3b658ba /modules/chanserv
parenta883b616a1360ba74254661cbd39280404d1753a (diff)
Update as many messages as possible for automatic line wrapping.
Diffstat (limited to 'modules/chanserv')
-rw-r--r--modules/chanserv/chanserv.cpp47
-rw-r--r--modules/chanserv/cs_access.cpp141
-rw-r--r--modules/chanserv/cs_akick.cpp70
-rw-r--r--modules/chanserv/cs_ban.cpp14
-rw-r--r--modules/chanserv/cs_clone.cpp10
-rw-r--r--modules/chanserv/cs_drop.cpp24
-rw-r--r--modules/chanserv/cs_enforce.cpp28
-rw-r--r--modules/chanserv/cs_entrymsg.cpp42
-rw-r--r--modules/chanserv/cs_flags.cpp39
-rw-r--r--modules/chanserv/cs_info.cpp14
-rw-r--r--modules/chanserv/cs_invite.cpp13
-rw-r--r--modules/chanserv/cs_kick.cpp10
-rw-r--r--modules/chanserv/cs_list.cpp73
-rw-r--r--modules/chanserv/cs_log.cpp42
-rw-r--r--modules/chanserv/cs_mode.cpp66
-rw-r--r--modules/chanserv/cs_register.cpp50
-rw-r--r--modules/chanserv/cs_seen.cpp24
-rw-r--r--modules/chanserv/cs_set.cpp200
-rw-r--r--modules/chanserv/cs_status.cpp12
-rw-r--r--modules/chanserv/cs_suspend.cpp24
-rw-r--r--modules/chanserv/cs_sync.cpp6
-rw-r--r--modules/chanserv/cs_topic.cpp32
-rw-r--r--modules/chanserv/cs_unban.cpp17
-rw-r--r--modules/chanserv/cs_updown.cpp16
-rw-r--r--modules/chanserv/cs_xop.cpp75
25 files changed, 633 insertions, 456 deletions
diff --git a/modules/chanserv/chanserv.cpp b/modules/chanserv/chanserv.cpp
index 4fcf3c097..38d2f0ef0 100644
--- a/modules/chanserv/chanserv.cpp
+++ b/modules/chanserv/chanserv.cpp
@@ -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
diff --git a/modules/chanserv/cs_access.cpp b/modules/chanserv/cs_access.cpp
index 72dc57450..d3ca6e492 100644
--- a/modules/chanserv/cs_access.cpp
+++ b/modules/chanserv/cs_access.cpp
@@ -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;
}
diff --git a/modules/chanserv/cs_akick.cpp b/modules/chanserv/cs_akick.cpp
index e6672b965..b242fed4a 100644
--- a/modules/chanserv/cs_akick.cpp
+++ b/modules/chanserv/cs_akick.cpp
@@ -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;
}
};
diff --git a/modules/chanserv/cs_ban.cpp b/modules/chanserv/cs_ban.cpp
index 8560e4eac..dca9e8bbf 100644
--- a/modules/chanserv/cs_ban.cpp
+++ b/modules/chanserv/cs_ban.cpp
@@ -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;
}
};
diff --git a/modules/chanserv/cs_clone.cpp b/modules/chanserv/cs_clone.cpp
index b58635ff0..bad74d304 100644
--- a/modules/chanserv/cs_clone.cpp
+++ b/modules/chanserv/cs_clone.cpp
@@ -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;
}
};
diff --git a/modules/chanserv/cs_drop.cpp b/modules/chanserv/cs_drop.cpp
index 582ede836..7e513b340 100644
--- a/modules/chanserv/cs_drop.cpp
+++ b/modules/chanserv/cs_drop.cpp
@@ -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;
}
};
diff --git a/modules/chanserv/cs_enforce.cpp b/modules/chanserv/cs_enforce.cpp
index 3b38b3a89..d0d2cc03a 100644
--- a/modules/chanserv/cs_enforce.cpp
+++ b/modules/chanserv/cs_enforce.cpp
@@ -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;
}
};
diff --git a/modules/chanserv/cs_entrymsg.cpp b/modules/chanserv/cs_entrymsg.cpp
index bbb3f03cb..fa3c59c84 100644
--- a/modules/chanserv/cs_entrymsg.cpp
+++ b/modules/chanserv/cs_entrymsg.cpp
@@ -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;
}
};
diff --git a/modules/chanserv/cs_flags.cpp b/modules/chanserv/cs_flags.cpp
index 876eb67e4..708978191 100644
--- a/modules/chanserv/cs_flags.cpp
+++ b/modules/chanserv/cs_flags.cpp
@@ -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;
diff --git a/modules/chanserv/cs_info.cpp b/modules/chanserv/cs_info.cpp
index c1200aa3e..8d9b0c04f 100644
--- a/modules/chanserv/cs_info.cpp
+++ b/modules/chanserv/cs_info.cpp
@@ -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;
}
};
diff --git a/modules/chanserv/cs_invite.cpp b/modules/chanserv/cs_invite.cpp
index 1d36c0375..df11e45fb 100644
--- a/modules/chanserv/cs_invite.cpp
+++ b/modules/chanserv/cs_invite.cpp
@@ -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;
}
};
diff --git a/modules/chanserv/cs_kick.cpp b/modules/chanserv/cs_kick.cpp
index 5ba61eaef..e4175d29e 100644
--- a/modules/chanserv/cs_kick.cpp
+++ b/modules/chanserv/cs_kick.cpp
@@ -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;
}
};
diff --git a/modules/chanserv/cs_list.cpp b/modules/chanserv/cs_list.cpp
index 1002d10ba..408d4c9a8 100644
--- a/modules/chanserv/cs_list.cpp
+++ b/modules/chanserv/cs_list.cpp
@@ -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 optio