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)) {
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 '';
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);
push(@rand, $list[$_]);
last if (scalar @rand == $maxshow);
}
- @list = @rand;
+ if ($total > $maxshow) {
+ @list = sort @rand;
+ } else {
+ @list = @rand;
+ }
} elsif ($total > $maxshow) {
&status("formListReply: truncating list.");
}
# 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);
my $i = $1;
my $fuzzy = int(rand 5);
if ($i < 10) {
- return $i*60;
+ return $i;
}
if (rand > 0.5) {
return ($i - $fuzzy)*60;
my $time_file = (stat $file)[9];
- if ($time == $time_file) {
+ if ($time <= $time_file) {
return 0;
} else {
return 1;
sub validExec {
my ($str) = @_;
- if ($str =~ /[\'\"\|]/) { # invalid.
+ if ($str =~ /[\`\'\"\|]/) { # invalid.
return 0;
} else { # valid.
return 1;
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;
return $profanity;
}
-sub hasParam {
+sub IsChanConfOrWarn {
my ($param) = @_;
- if (&IsChanConf($param) or &IsParam($param)) {
+ if (&IsChanConf($param) > 0) {
return 1;
} else {
### TODO: specific reason why it failed.
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;
### TODO: use AUTOLOAD
### very lame hack.
- if ($label !~ /-/ and !&loadMyModule($myModules{$label})) {
+ if ($label !~ /-/ and !&loadMyModule($label)) {
&DEBUG("Forker: failed?");
&delForked($label);
}