/** * help.C: This file contains routines to handle the ChanServ HELP command. * * Copyright © 2007 Pippijn van Steenhoven / The Ermyth Team * Rights to this code are as documented in COPYING. * * * Portions of this file were derived from sources bearing the following license: * Copyright © 2003-2004 E. Will et al. * Rights to this code are documented in doc/pod/license.pod. * * $Id: help.C,v 1.7 2007/09/22 14:27:27 pippijn Exp $ */ #include "atheme.h" #include #include static char const rcsid[] = "$Id: help.C,v 1.7 2007/09/22 14:27:27 pippijn Exp $"; REGISTER_MODULE ("chanserv/help", false, "The Ermyth Team "); static void cs_cmd_help (sourceinfo_t *si, int parc, char *parv[]); command_t const cs_help = { "HELP", N_("Displays contextual help information."), AC_NONE, 1, cs_cmd_help }; E cmdvec cs_cmdtree; E helpvec cs_helptree; bool _modinit (module *m) { cs_cmdtree << cs_help; help_addentry (cs_helptree, "HELP", "help/chanserv/help", NULL); return true; } void _moddeinit () { cs_cmdtree >> cs_help; help_delentry (cs_helptree, "HELP"); } /* HELP [params] */ static void cs_cmd_help (sourceinfo_t *si, int parc, char *parv[]) { char *command = parv[0]; /* strip off channel name for fantasy commands */ if (si->c) { command = strchr (command, ' '); if (command != NULL) command++; } if (!command) { command_success_nodata (si, _("***** \2%s Help\2 *****"), chansvs.nick); command_success_nodata (si, _("\2%s\2 gives normal users the ability to maintain control"), chansvs.nick); command_success_nodata (si, _("of a channel, without the need of a bot. Channel takeovers are")); command_success_nodata (si, _("virtually impossible when a channel is registered with \2%s\2."), chansvs.nick); command_success_nodata (si, _("Registration is a quick and painless process. Once registered,")); command_success_nodata (si, _("the founder can maintain complete and total control over the channel.")); if (chansvs.expiry > 0) { command_success_nodata (si, _("Please note that channels will expire after %d days of inactivity,"), (chansvs.expiry / 86400)); command_success_nodata (si, _("or if there are no eligible channel successors.")); command_success_nodata (si, _("Activity is defined as a user with one of %s being on the channel."), bitmask_to_flags2 (CA_USEDUPDATE & ca_all, 0, chanacs_flags)); } else { command_success_nodata (si, _("Please note that channels will expire if there are no eligible channel successors.")); } command_success_nodata (si, _("Successors are primarily those who have the +R flag")); command_success_nodata (si, _("set on their account in the channel, although other")); command_success_nodata (si, _("people may be chosen depending on their access")); command_success_nodata (si, _("level and activity.")); command_success_nodata (si, " "); if (chansvs.fantasy && config_options.join_chans && chansvs.trigger != '\0') { command_success_nodata (si, _("Commands can also be given on channel by prefixing one of '%s'"), chansvs.trigger); command_success_nodata (si, _("and omitting the channel name. These are called \"fantasy\"")); command_success_nodata (si, _("commands and can also be disabled on a per-channel basis.")); command_success_nodata (si, " "); } command_success_nodata (si, _("For more information on a command, type:")); command_success_nodata (si, "\2/%s%s help \2", (ircd->uses_rcommand == false) ? "msg " : "", chansvs.disp); command_success_nodata (si, " "); command_success_nodata (si, _("For a verbose listing of all commands, type:")); command_success_nodata (si, "\2/%s%s help commands\2", (ircd->uses_rcommand == false) ? "msg " : "", chansvs.disp); command_success_nodata (si, " "); command_help_short (si, cs_cmdtree, "REGISTER OP INVITE UNBAN FLAGS RECOVER SET"); command_success_nodata (si, _("***** \2End of Help\2 *****")); return; } if (!strcasecmp ("COMMANDS", command)) { command_success_nodata (si, _("***** \2%s Help\2 *****"), chansvs.nick); command_help (si, cs_cmdtree); command_success_nodata (si, _("***** \2End of Help\2 *****")); return; } help_display (si, command, cs_helptree); }