sub getReply {
my($message) = @_;
my($lhs,$mhs,$rhs);
- my($reply);
+ my($reply, $count, $fauthor, $result, $factoid, $search, @searches);
$orig{message} = $message;
if (!defined $message or $message =~ /^\s*$/) {
}
$message =~ tr/A-Z/a-z/;
+ $message =~ s/^cmd:/CMD:/;
- my ($count, $fauthor, $result) = &sqlSelect("factoids",
- "requested_count,created_by,factoid_value",
- { factoid_key => $message }
- );
+ if (&IsChanConf("factoidSearch")) {
+ @searches = split(/\s+/, &getChanConf("factoidSearch"));
+ } else {
+ @searches = ('_default');
+ }
+
+ # requesting the _default one, ignore factoidSearch
+ if ($message =~ /^_default\s+/) {
+ @searches = ('_default');
+ $message =~ s/^_default\s+//;
+ }
+
+ # check for factoids with each prefix
+ foreach $search (@searches) {
+ if ($search eq '$chan') {
+ $factoid = "$chan $message";
+ } elsif ($search eq '_default') {
+ $factoid = $message;
+ } else {
+ $factoid = "$search $message";
+ }
+ ($count, $fauthor, $result) = &sqlSelect("factoids",
+ "requested_count,created_by,factoid_value",
+ { factoid_key => $factoid }
+ );
+ last if ($result);
+ }
if ($result) {
$lhs = $message;
$mhs = "is";
$rhs = $result;
- return "$lhs $mhs $rhs" if ($literal);
+ return "\"$factoid\" $mhs \"$rhs\"" if ($literal);
} else {
return '';
}
### FIXME: old mysql doesn't support
### "requested_count=requested_count+1".
$count++;
- &sqlSet("factoids", {'factoid_key' => $lhs}, {
+ &sqlSet("factoids", {'factoid_key' => $factoid}, {
requested_by => $nuh,
requested_time => time(),
requested_count => $count
} );
- # todo: rename $real to something else!
+ # TODO: rename $real to something else!
my $real = 0;
# my $author = &getFactInfo($lhs,"created_by") || '';
# $real++ if ($author =~ /^\Q$who\E\!/);
}
}
- return $reply if ($literal);
-
# remove excessive beginning and end whitespaces.
$reply =~ s/^\s+|\s+$//g;
foreach (split //, $string) {
if ($_ eq "(") {
-### print "( l=>$l, r=>$r\n";
-
if (!$l and !$r) {
-# print "STARTING at $i\n";
$s = $i;
$t = $i;
}
}
if ($_ eq ")") {
-### print ") l=>$l, r=>$r\n";
-
$r++;
$l--;
if (!$l and !$r) {
my $substr = substr($old,$s,$i-$s+1);
-# print "STOP at $i $substr\n";
push(@rand, substr($old,$t+1,$i-$t-1) );
my $rand = $rand[rand @rand];
- &status("SARing '$substr' to '$rand'.");
+# &status("SARing '$substr' to '$rand'.");
$string =~ s/\Q$substr\E/$rand/;
undef @rand;
}
}
if ($_ eq "|" and $l+$r== 0 and $l==1) {
-# print "| at $i (l=>$l,r=>$r)\n";
push(@rand, substr($old,$t+1,$i-$t-1) );
$t = $i;
}
my($reply,$flag) = @_;
# $date, $time.
- # todo: support localtime.
+ # TODO: support localtime.
my $date = scalar(gmtime());
$date =~ s/\:\d+(\s+\w+)\s+\d+$/$1/;
$reply =~ s/\$date/$date/gi;