From ce362854a39c35249f8d2c7bcf27e3d5f9aa9980 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Wed, 16 Apr 2025 00:04:30 +0100 Subject: Update as many messages as possible for automatic line wrapping. --- modules/chanserv/chanserv.cpp | 47 +++++---- modules/chanserv/cs_access.cpp | 141 +++++++++++++++------------ modules/chanserv/cs_akick.cpp | 70 +++++++------- modules/chanserv/cs_ban.cpp | 14 +-- modules/chanserv/cs_clone.cpp | 10 +- modules/chanserv/cs_drop.cpp | 24 +++-- modules/chanserv/cs_enforce.cpp | 28 +++--- modules/chanserv/cs_entrymsg.cpp | 42 ++++---- modules/chanserv/cs_flags.cpp | 39 ++++---- modules/chanserv/cs_info.cpp | 14 +-- modules/chanserv/cs_invite.cpp | 13 ++- modules/chanserv/cs_kick.cpp | 10 +- modules/chanserv/cs_list.cpp | 73 +++++++------- modules/chanserv/cs_log.cpp | 42 ++++---- modules/chanserv/cs_mode.cpp | 66 +++++++------ modules/chanserv/cs_register.cpp | 50 ++++++---- modules/chanserv/cs_seen.cpp | 24 +++-- modules/chanserv/cs_set.cpp | 200 +++++++++++++++++++++++---------------- modules/chanserv/cs_status.cpp | 12 ++- modules/chanserv/cs_suspend.cpp | 24 +++-- modules/chanserv/cs_sync.cpp | 6 +- modules/chanserv/cs_topic.cpp | 32 ++++--- modules/chanserv/cs_unban.cpp | 17 ++-- modules/chanserv/cs_updown.cpp | 16 ++-- modules/chanserv/cs_xop.cpp | 75 +++++++++------ 25 files changed, 633 insertions(+), 456 deletions(-) (limited to 'modules/chanserv') 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("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 &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("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 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 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("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("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("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; } }; diff --git a/modules/chanserv/cs_log.cpp b/modules/chanserv/cs_log.cpp index e704b7021..de3bbed2b 100644 --- a/modules/chanserv/cs_log.cpp +++ b/modules/chanserv/cs_log.cpp @@ -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; } }; diff --git a/modules/chanserv/cs_mode.cpp b/modules/chanserv/cs_mode.cpp index 20638973b..85ebaf5ce 100644 --- a/modules/chanserv/cs_mode.cpp +++ b/modules/chanserv/cs_mode.cpp @@ -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()); diff --git a/modules/chanserv/cs_register.cpp b/modules/chanserv/cs_register.cpp index e8074ed19..f206aea8b 100644 --- a/modules/chanserv/cs_register.cpp +++ b/modules/chanserv/cs_register.cpp @@ -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; } }; diff --git a/modules/chanserv/cs_seen.cpp b/modules/chanserv/cs_seen.cpp index 835e3b124..31c5e6b88 100644 --- a/modules/chanserv/cs_seen.cpp +++ b/modules/chanserv/cs_seen.cpp @@ -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; } }; diff --git a/modules/chanserv/cs_set.cpp b/modules/chanserv/cs_set.cpp index 271746b49..d4325bd8a 100644 --- a/modules/chanserv/cs_set.cpp +++ b/modules/chanserv/cs_set.cpp @@ -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("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("SIGNKICK_LEVEL"); ci->Shrink("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("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; } }; diff --git a/modules/chanserv/cs_status.cpp b/modules/chanserv/cs_status.cpp index 39b54280e..31697e706 100644 --- a/modules/chanserv/cs_status.cpp +++ b/modules/chanserv/cs_status.cpp @@ -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; } }; diff --git a/modules/chanserv/cs_suspend.cpp b/modules/chanserv/cs_suspend.cpp index bda608481..9df5cea0b 100644 --- a/modules/chanserv/cs_suspend.cpp +++ b/modules/chanserv/cs_suspend.cpp @@ -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; } }; diff --git a/modules/chanserv/cs_sync.cpp b/modules/chanserv/cs_sync.cpp index 46b6bad66..dd03075b9 100644 --- a/modules/chanserv/cs_sync.cpp +++ b/modules/chanserv/cs_sync.cpp @@ -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; } }; diff --git a/modules/chanserv/cs_topic.cpp b/modules/chanserv/cs_topic.cpp index 59adcd433..e1aa98e99 100644 --- a/modules/chanserv/cs_topic.cpp +++ b/modules/chanserv/cs_topic.cpp @@ -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; } }; diff --git a/modules/chanserv/cs_unban.cpp b/modules/chanserv/cs_unban.cpp index 0a1955115..15d8679de 100644 --- a/modules/chanserv/cs_unban.cpp +++ b/modules/chanserv/cs_unban.cpp @@ -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; } }; diff --git a/modules/chanserv/cs_updown.cpp b/modules/chanserv/cs_updown.cpp index 28c35042d..3562daf9c 100644 --- a/modules/chanserv/cs_updown.cpp +++ b/modules/chanserv/cs_updown.cpp @@ -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; } }; diff --git a/modules/chanserv/cs_xop.cpp b/modules/chanserv/cs_xop.cpp index e2e326eb8..f808c7622 100644 --- a/modules/chanserv/cs_xop.cpp +++ b/modules/chanserv/cs_xop.cpp @@ -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 followin