# 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, chunk 98.