http://www.perlmonks.org?node_id=262562
Category: Fun Stuff
Author/Contact Info #include (include@riotmod.com)
http://linux.riotmod.com
Description: This script is a perl plugin for Gaim. To install it, just copy the script into your "plugins" directory, restart Gaim if it is already running, and then turn it on in the "Preferences" menu. This script turns your Gaim client into a Magic 8 Ball. If anyone sends you an instant message containing "!8ball" followed by a question, the script will select a "random" answer, and send it to the requesting client. This won't interrupt your regular IM traffic, and is all done in the background.

Edit: Updated and fixed a bug. Now all possible 8 ball messages are used. Thanks Juerd.
#
# magic8ball.pl
#
# GAIM script that delivers "usefull"
# answers to questions.
#
# Usage:
# !8ball <question>
#

my @ball_messages=
(
  "yes",
  "definitely",
  "the answer is yes",
  "positively sure",
  "no",
  "definitely not",
  "no way",
  "answer isn't clear",
  "there's no way to be sure"
);

sub description {
        my($a, $b, $c, $d, $e, $f) = @_;
        ("Magic 8 Ball", "0.1", "Answers all of your questions", "Incl
+ude &lt;include\@riotmod.com>", "http://linux.riotmod.com", "/dev/nul
+l");
}
$handle = GAIM::register("Magic 8 Ball", "0.1", "", "");
GAIM::add_event_handler($handle, "event_im_recv", "shake_the_ball");

sub shake_the_ball
{
  my($eb_connection,$eb_sender,$eb_message,$eb_flags)=@_;
  
  my @tokmess=split(" ",$eb_message);
  if($eb_message=~/!8ball/)
  {
    if($#tokmess > 0)
    {
      # shake the ball
      my $sm = $ball_messages[ rand scalar @ball_messages ];
      my $eb_message=~s/!8ball//g;
      my $answer_message="The magic 8 ball says...$ball_messages[$sm].
+";
      GAIM::serv_send_im($eb_connection, $eb_sender, $answer_message, 
+1);
      return 1;
    } else {
      GAIM::serv_send_im($eb_connection, $eb_sender, "You need to ask 
+a question!", 1);
      return 1;
    }
  }
}