From 3e83a47e12c1677ad3202649460adafdcd298031 Mon Sep 17 00:00:00 2001 From: Elijah Perrault Date: Fri, 4 Feb 2011 14:21:57 -0700 Subject: [PATCH] * Fixed cmd_add syntax. Correct format: name, level, short help, full help, callback. * Added core command HELP. --- bin/auto | 1 + doc/CHANGELOG | 3 +++ src/API/Std.pm | 2 +- src/Core/IRC.pm | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+), 1 deletion(-) diff --git a/bin/auto b/bin/auto index dcc751f..07e1b09 100755 --- a/bin/auto +++ b/bin/auto @@ -298,6 +298,7 @@ API::Std::cmd_add("MODUNLOAD", 1, \%Core::IRC::SHELP_MODUNLOAD, \%Core::IRC::FHE API::Std::cmd_add("MODRELOAD", 1, \%Core::IRC::SHELP_MODRELOAD, \%Core::IRC::FHELP_MODRELOAD, \&Core::IRC::cmd_modreload); API::Std::cmd_add("SHUTDOWN", 2, \%Core::IRC::SHELP_SHUTDOWN, \%Core::IRC::FHELP_SHUTDOWN, \&Core::IRC::cmd_shutdown); API::Std::cmd_add("RESTART", 2, \%Core::IRC::SHELP_RESTART, \%Core::IRC::FHELP_RESTART, \&Core::IRC::cmd_restart); +API::Std::cmd_add("HELP", 2, \%Core::IRC::SHELP_HELP, \%Core::IRC::FHELP_HELP, \&Core::IRC::cmd_help); # Infinite while loop. while (1) { diff --git a/doc/CHANGELOG b/doc/CHANGELOG index b85988d..c47aa6b 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -3,6 +3,9 @@ Auto IRC Bot 3.0: Change Log 3.0 Indev ================================================================== + * Fixed cmd_add syntax. Correct format: name, level, short help, + full help, callback. + * Added core command HELP. * Added core command RESTART. * Added config option server:autorejoin for rejoining on kick. * Added event on_kick. diff --git a/src/API/Std.pm b/src/API/Std.pm index 32bb474..1415288 100644 --- a/src/API/Std.pm +++ b/src/API/Std.pm @@ -102,7 +102,7 @@ sub mod_void # Add a command to Auto. sub cmd_add { - my ($cmd, $lvl, $fhelp, $shelp, $sub) = @_; + my ($cmd, $lvl, $shelp, $fhelp, $sub) = @_; $cmd = uc($cmd); return 0 if (defined $API::Std::CMDS{$cmd}); diff --git a/src/Core/IRC.pm b/src/Core/IRC.pm index 9db4fa0..93239a7 100644 --- a/src/Core/IRC.pm +++ b/src/Core/IRC.pm @@ -237,5 +237,71 @@ sub cmd_restart return 1; } +# Help hashes for HELP. Spanish, French and German needed. +our %SHELP_HELP = ( + 'en' => 'Displays help for commands.', +); +our %FHELP_HELP = ( + 'en' => 'Displays help for commands.', +); +# HELP callback. +sub cmd_help +{ + my (%data) = @_; + my @argv = @{ $data{args} }; delete $data{args}; + + # Check for arguments and reply accordingly. + if (!defined $argv[0]) { + # No command specified. List commands. + my $cmdlist = ''; + foreach (sort keys %API::Std::CMDS) { + $cmdlist .= ", \002".uc($_)."\002"; + } + $cmdlist = substr($cmdlist, 2); + + notice($data{svr}, $data{nick}, "Command List: ".$cmdlist); + } + else { + # Help for a specific command was requested. Lets get it. + my $rcm = uc($argv[0]); + + if (defined $API::Std::CMDS{$rcm}{fhelp}) { + # If there is help for this command. + if ($API::Std::CMDS{$rcm}{fhelp}) { + # If there is valid help for this command. + + # Get the language. + my ($lang, undef) = split('_', $Auto::LOCALE); + + if (defined ${ $API::Std::CMDS{$rcm}{fhelp} }{$lang}) { + # If help for this command is available in the configured language. + notice($data{svr}, $data{nick}, "Help for \002".$rcm."\002: ".${ $API::Std::CMDS{$rcm}{fhelp} }{$lang}); + } + else { + # If it isn't, default to English. + if (defined ${ $API::Std::CMDS{$rcm}{fhelp} }{en}) { + # If help for this command is available in English. + notice($data{svr}, $data{nick}, "Help for \002".$rcm."\002: ".${ $API::Std::CMDS{$rcm}{fhelp} }{en}); + } + else { + # If it isn't, no help. + notice($data{svr}, $data{nick}, "No help for \002".$rcm."\002 available."); + } + } + } + else { + # If it isn't valid, no help. + notice($data{svr}, $data{nick}, "No help for \002".$rcm."\002 available."); + } + } + else { + # If there is no help, don't give any. + notice($data{svr}, $data{nick}, "No help for \002".$rcm."\002 available."); + } + } + + return 1; +} + 1;