|
|
|
|
|
|
|
|
|
# infobot :: Kevin Lenzo (c) 1997
|
|
|
|
|
# with thanks to Patrick Cole
|
|
|
|
|
|
|
|
|
|
use Socket;
|
|
|
|
|
|
|
|
|
|
# send info to devnull
|
|
|
|
|
sub devnull {
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# ask frendly bots
|
|
|
|
|
sub askFriendlyBots {
|
|
|
|
|
my $request = $_[0];
|
|
|
|
|
return if ($request =~ /^no\,?\s+/);
|
|
|
|
|
|
|
|
|
|
foreach $bot (split /\s+/, $param{'friendlyBots'}) {
|
|
|
|
|
$request =~ s/^(is|are) //i;
|
|
|
|
|
&msg($bot, ":INFOBOT:QUERY <$who> $request");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# format a public message
|
|
|
|
|
sub FormatText {
|
|
|
|
|
my($nick, $msg) = @_;
|
|
|
|
|
|
|
|
|
|
undef @ret;
|
|
|
|
|
undef %str;
|
|
|
|
|
my $msgLen = length($msg);
|
|
|
|
|
my $nickLen = length($nick);
|
|
|
|
|
my $tot = 0;
|
|
|
|
|
my $cnt = 0;
|
|
|
|
|
foreach (split //, $msg) {
|
|
|
|
|
if ($cnt == (80 - $nickLen - 3)) {
|
|
|
|
|
$tot++;
|
|
|
|
|
$cnt=0;
|
|
|
|
|
}
|
|
|
|
|
$str{$tot} .= $_;
|
|
|
|
|
$cnt++;
|
|
|
|
|
}
|
|
|
|
|
foreach (keys %str) {
|
|
|
|
|
push(@ret, $str{$_}."\n");
|
|
|
|
|
}
|
|
|
|
|
return @ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub status {
|
|
|
|
|
$statcount++;
|
|
|
|
|
my($input) = @_;
|
|
|
|
|
|
|
|
|
|
if ($param{'VERBOSITY'} > 0) {
|
|
|
|
|
if ($param{ansi_control}) {
|
|
|
|
|
printf $_green."[%5d] ".$ob, $statcount;
|
|
|
|
|
$input =~ s/[\cA-\c_]//ig; # (Derek Moeller)++
|
|
|
|
|
my $printable = $input;
|
|
|
|
|
|
|
|
|
|
if ($printable =~ s/^(<\/\S+>) //) {
|
|
|
|
|
# it's me saying something on a channel
|
|
|
|
|
my $name = $1;
|
|
|
|
|
print "$b_yellow$name $printable$ob\n";
|
|
|
|
|
} elsif ($printable =~ s/^(<\S+>) //) {
|
|
|
|
|
my $name = $1;
|
|
|
|
|
|
|
|
|
|
if ($addressed) {
|
|
|
|
|
print "$b_red$name $printable$ob\n";
|
|
|
|
|
} else {
|
|
|
|
|
print "$b_cyan$name$ob $printable\n";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} elsif ($printable =~ s/^(-\S+-) //) {
|
|
|
|
|
# notice
|
|
|
|
|
print "$_green$1 $printable$ob\n";
|
|
|
|
|
} elsif ($printable =~ s/^(\[\S+\]) //) {
|
|
|
|
|
# message from someone
|
|
|
|
|
print "$b_red$1 $printable$ob\n";
|
|
|
|
|
} elsif ($printable =~ s/^(>\S+<) //) {
|
|
|
|
|
# i'm messaging someone
|
|
|
|
|
print "$b_magenta$1 $printable$ob\n";
|
|
|
|
|
} elsif ($printable =~ s/^(!\S+!) //) {
|
|
|
|
|
# i'm messaging someone
|
|
|
|
|
print "$_red$1 $printable$ob\n";
|
|
|
|
|
} elsif ($printable =~ s/^(enter:|update:|forget:) //) {
|
|
|
|
|
# something that should be SEEN
|
|
|
|
|
print "$b_green$1 $printable$ob\n";
|
|
|
|
|
} else {
|
|
|
|
|
print "$printable\n";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
printf ("[%5d] $input\n", $statcount) if ($input !~ /^\s*$/);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&log_line("[$statcount] ".$input);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub performSay {
|
|
|
|
|
my($in) = @_;
|
|
|
|
|
if (!defined($prevIn)) { $prevIn = ""; };
|
|
|
|
|
if (($skipReply == 0) && ($in !~ 'NOREPLY')) {
|
|
|
|
|
$prevIn = $in;
|
|
|
|
|
if (0) { # for mac speech manager niceties
|
|
|
|
|
$in =~ s/ at (ht|f)/ $1/ig;
|
|
|
|
|
$in =~ s/((ht|f)tp:\S+)/here [[cmnt $1 ]]/ig;
|
|
|
|
|
}
|
|
|
|
|
&say($in);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# this could echo everything to somewhere
|
|
|
|
|
# &msg('somebody', ".say $in");
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub performReply {
|
|
|
|
|
if ($msgType eq 'private') {
|
|
|
|
|
&msg($who, $_[0]);
|
|
|
|
|
} else {
|
|
|
|
|
&say("$_[0]");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub log_line {
|
|
|
|
|
my($line) = @_;
|
|
|
|
|
my($logwrite) = 0;
|
|
|
|
|
|
|
|
|
|
my $s = time();
|
|
|
|
|
|
|
|
|
|
if ($param{'logfile'} ne '') {
|
|
|
|
|
$line =~ s/\n*$/\n/;
|
|
|
|
|
|
|
|
|
|
open(TRACK, ">>$param{logfile}");
|
|
|
|
|
|
|
|
|
|
$loglines++;
|
|
|
|
|
$total_loglines++;
|
|
|
|
|
print TRACK "$s $line";
|
|
|
|
|
|
|
|
|
|
close(TRACK); # if (TRACK);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub getAllKeys {
|
|
|
|
|
@myIsKeys = getDBMKeys("is");
|
|
|
|
|
@myAreKeys = getDBMKeys("are");
|
|
|
|
|
|
|
|
|
|
$factoidCount = $#myIsKeys + $#myAreKeys + 2;
|
|
|
|
|
$updateCount = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sub purifyNick {
|
|
|
|
|
my $safeWho = $_[0];
|
|
|
|
|
$safeWho =~ s/\*//g;
|
|
|
|
|
$safeWho =~ s/\\/\\\\/g;
|
|
|
|
|
$safeWho =~ s/\[/\\\[/g;
|
|
|
|
|
$safeWho =~ s/\]/\\\]/g;
|
|
|
|
|
$safeWho =~ s/\|/\\\|/g;
|
|
|
|
|
$safeWho =~ tr/A-Z/a-z/;
|
|
|
|
|
$safeWho = substr($safeWho, 0, 9);
|
|
|
|
|
$safeWho =~ s/\s+.*//;
|
|
|
|
|
return $safeWho;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
1;
|
|
|
|
|
|
|
|
|
|
__DATA__
|
|
|
|
|
|
|
|
|
|
/dimer\[0\/: trailing \ in regexp at /usr/users/infobot/infobot-current/src/Misc.pl line 164, <FH> chunk 98.
|