sub irc_public { my ($kernel, $who, $where, $msg) = @_[KERNEL, ARG0 .. ARG2]; run_script($kernel, $bot_version, $bot_nick, $irc_admins, $qstat_master, $who, $where, $msg, $qstat_addr, $User_Info, @randquote); } #### my @alias = eval "${script}_load()"; #### our %script_aliases = load_scripts(); sub load_scripts { my (%script_aliases, $script_aliases); if (-d "scripts") { while() { my $script_name = $_; my $script = $1 if $script_name =~ /\/(.*)\.script/; print "Loading script: $script_name\n"; require "$script_name"; my @alias = eval "${script}_load()"; $script_aliases{$alias[0]} = $alias[1]; } return %script_aliases; } else { die "Scripts directory does not exist.\n"; } } #### sub run_script { our ($kernel, $bot_version, $bot_nick, $irc_admins, $qstat_master, $irc_host, $irc_chan, $irc_msg, $qstat_addr, $User_Info, @randquote) = @_; our ($irc_nick, $irc_hostmask) = split(/!/, $irc_host); if ($irc_msg =~ /^$bot_nick.* commands$/i) { my @commands; for (keys %script_aliases) { push @commands, $_; } @commands = sort @commands; my $commands = join ', ', @commands; send_chan_message($irc_chan, "commands: $commands", $kernel); } elsif ($irc_msg =~ /^$bot_nick.* /i) { for (keys %script_aliases) { if ($irc_msg =~ /^$bot_nick.* $_/) { eval "$script_aliases{$_}()"; last; } } } } #### sub mem_usage_load { my $alias = 'mem usage'; my $sub = 'display_mem_usage'; my $variables = '$kernel, $irc_chan'; return ($alias, $sub, $variables); }