X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2FMisc.pl;h=fc6f037418788d7cbb34c1388df9e66fd25b78d1;hb=2c6eb8868eb5e0a36bedf9d2a491409c69baa8a0;hp=9b6240aa1aca829ee03c666ce3ad8038be7f3a73;hpb=b422ff2719e8b389e41108958e91b7abfd5642f1;p=infobot.git diff --git a/src/Misc.pl b/src/Misc.pl index 9b6240a..fc6f037 100644 --- a/src/Misc.pl +++ b/src/Misc.pl @@ -16,7 +16,7 @@ sub help { my $file = $bot_data_dir."/blootbot.help"; my %help = (); - # crude hack for pSReply() to work as expected. + # crude hack for performStrictReply() to work as expected. $msgType = "private" if ($msgType eq "public"); if (!open(FILE, $file)) { @@ -70,10 +70,10 @@ sub help { if (exists $help{$topic}) { foreach (split /\n/, $help{$topic}) { - &pSReply($_); + &performStrictReply($_); } } else { - &pSReply("no help on $topic. Use 'help' without arguments."); + &performStrictReply("no help on $topic. Use 'help' without arguments."); } return ''; @@ -117,10 +117,13 @@ sub timedelta { sub formListReply { my($rand, $prefix, @list) = @_; my $total = scalar @list; - my $maxshow = $param{'maxListReplyCount'} || 10; - my $maxlen = $param{'maxListReplyLength'} || 400; + my $maxshow = &getChanConfDefault('maxListReplyCount', 15, $chan); + my $maxlen = &getChanConfDefault('maxListReplyLength', 400, $chan); my $reply; + # remove irc overhead + $maxlen -= 30; + # no results. return $prefix ."returned no results." unless ($total); @@ -131,7 +134,11 @@ sub formListReply { push(@rand, $list[$_]); last if (scalar @rand == $maxshow); } - @list = sort @rand; + if ($total > $maxshow) { + @list = sort @rand; + } else { + @list = @rand; + } } elsif ($total > $maxshow) { &status("formListReply: truncating list."); @@ -139,10 +146,11 @@ sub formListReply { } # form the reply. + # FIXME: should grow and exit when full, not discard any that are oversize while () { - $reply = $prefix ."(\002". scalar(@list). "\002 shown"; - $reply .= "; \002$total\002 total" if ($total != scalar @list); - $reply .= "): ". join(" \002;;\002 ", @list) ."."; + $reply = $prefix ."(\002". scalar(@list). "\002"; + $reply .= " of \002$total\002" if ($total != scalar @list); + $reply .= "): " . join(" \002;;\002 ", @list) ."."; last if (length($reply) < $maxlen and scalar(@list) <= $maxshow); last if (scalar(@list) == 1); @@ -557,7 +565,7 @@ sub checkMsgType { sub validExec { my ($str) = @_; - if ($str =~ /[\'\"\|]/) { # invalid. + if ($str =~ /[\`\'\"\|]/) { # invalid. return 0; } else { # valid. return 1; @@ -572,7 +580,7 @@ sub hasProfanity { for (lc $string) { /fuck/ and last; /dick|dildo/ and last; - /shit|turd|crap/ and last; + /shit/ and last; /pussy|[ck]unt/ and last; /wh[0o]re|bitch|slut/ and last; @@ -582,10 +590,10 @@ sub hasProfanity { return $profanity; } -sub hasParam { +sub IsChanConfOrWarn { my ($param) = @_; - if (&IsChanConf($param) or &IsParam($param)) { + if (&IsChanConf($param)) { return 1; } else { ### TODO: specific reason why it failed. @@ -610,7 +618,7 @@ sub Forker { select(undef, undef, undef, 0.2); # &status("fork starting for '$label', PID == $$."); - &status("--- fork starting for '$label', PID == $$ ---"); + &status("--- fork starting for '$label', PID == $$, bot_pid == $bot_pid ---"); &shmWrite($shm,"SET FORKPID $label $$"); sleep 1; @@ -618,7 +626,7 @@ sub Forker { ### TODO: use AUTOLOAD ### very lame hack. - if ($label !~ /-/ and !&loadMyModule($myModules{$label})) { + if ($label !~ /-/ and !&loadMyModule($label)) { &DEBUG("Forker: failed?"); &delForked($label); }