The funniest thing I've ever seen on AOL was the time I coded up a quick AOL bot using the Eliza perl module. It would hang out in a chat room, randomly bother people in an attempt to start conversations, then respond to anything they say in the form of a question. Of course, being AOL, the first thing most people asked were "a/s/l" or "who are you?" or something of that nature (AOL lusers are much more focused on somebody's physical form than "Can you write kernel modules?")

So, the bot managed to piss off most of the people it talked to, but a few AOLers persisted to talk to it most of the day I had it running, and never seemed to notice it wasn't a real person. (and Eliza isn't exactly the smartest AI) One person commented "Your a really stupid AI and whoever coded you is #$#$@$# #%@#@", but (s)he was the only one that seemed to notice. Most people thought it was just a really annoying person.

Anyway, this bot is very primitive and doesn't do much error checking. It picks a new username from its list at each login. Requires the Chatbot::Eliza and AOL::TOC modules. Here's the code: (everything2 munged the brackets, so put the brackets back around anything you see linked here)

 #!/usr/bin/perl
use Chatbot::Eliza;
use AOL::TOC;

# seed the random number generator
srand( time ^ ($$ + ($$ << 15)) );    

######### Config stuff

$chatroom = "chat";

$name = listrand(qw( steve123412 bupaintt2 oscope54321 jdsjfdi 
                     voidptr34982 unknown4993));
$pwd = "zxcv";

if ($ARGV0) {
        ($name,$pwd) = @ARGV;
}

#########

$toc = AOL::TOC::new("toc.oscar.aol.com","login.oscar.aol.com",
                     9993,$name,$pwd);

$chatbot = new Chatbot::Eliza $name;

# Register callbacks
$toc->register_callback("SIGN_ON", \&sign_on);
$toc->register_callback("IM_IN", \&im_in);
$toc->register_callback("CHAT_IN", \&client_chatin);

$toc->connect() or die "Can't connect";

while (1) {
        sleep 1;
        $toc->dispatch();
}

sub sign_on {
    msg( "Connected as $name in room $chatroom\n");

    $toc->chat_join($chatroom);
}

# From jaim
sub im_in {
    my ($self) = shift;
    my ($name, $auto, $msg) = split(/:/, "$_0:$_1:$_2", 3); 
    # ^ Looks stupid but needed when the $msg has ':' in it    
    # ^ Thanks gorn!
    # v this is for  in the message. it tries to strip it, but 
    # v not very hard
    $msg  =~ s/\<.*?\>//g;
    $name =~ s/\ //g;
    msg("$name: $msg\n");

    $reply = $chatbot->transform($msg);
    msg("To $name: $reply\n");
    sleep 4;
    $toc->send_im($name,$reply);
}

# (CHAT_IN) A new chat message has arrived
sub client_chatin {
    my $self = shift;
    my ($room_id, $nickname, $whisper, $message) = 
         split(/:/, "$_0:$_1:$_2:$_3", 4); 
    $message  =~ s/\<.*?\>//g;
    $nickname =~ s/\ //g;
    msg("\<$room_id\> $nickname: $message\n");

    return if (rand()<0.7);

    $name = $nickname;
    $reply = listrand("What's up?",
                        "hey!",
                        "who are you?",
                        "Do you want to talk?",
                        "Tell me about your problems");
    msg("To $name: $reply\n");
    $toc->send_im($name,$reply);
}

sub msg {
    my ($str) = @_;
    $str = localtime()."\t".$str;
    print $str;
    open LOGF,">>aimpsych.log" or die;
    print LOGF $str;
    close LOGF;
}


sub listrand {
    return $_rand()*($#_+1);
}

### The End ###