The difference between ignorance and apathy? I don't know, and I couldn't care less.
#!/usr/bin/perl -w
#
# AutoHello 0.0.1 by digitalpeer
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License 2 as published by
# the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License (http://www.gnu.org/copyleft/gpl.html)
# for more details.
#
# If you have no access to read the license, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Any suggestions are welcome. There is sometimes a bot in #gaim on
# irc.openprojects.net running this code, but with more triggers, if
# you want to see it.
# I swear some people in #gaim use a damn script to say hi.
# So, here's my attempt to make one that's pretty "realistic."
# Of course, the brains are modeled after LSchiere AI.
# this is the max wait seconds when responding to a buddy joining the room
# a random second is picked somewhere in this
#WARNING: the min is 3 seconds, so if you put 1 here you'll get 3 or 4 seconds
$maxwait = 60;
# every time i respond, i go into sleep mode for this many seconds before I can talk again
# use this so you don't annoy those #gaim folks (i wouldn't go below 10)
$sleeptime = 10;
# what to respond with when bot is said
@iamnotabot = ("I AM NOT A BOT!, i don't think", "i have feelings too you know", "leave me alone", "there, i just wrote you down in my I don't like you book");
# greeting responses
@greetresponse = ("hello", "hi", "hey", "wahoo! it's", "howdy", "what's up", "what have you been up to");
# here are the responses used for saying goodbye
@ungreetresponse = ("goodbye", "later", "bye", "see you later", "see ya");
# this is the response that is used on "welcome back"
@wbresponse = ("wb", "welcome back", "back so soon", "in or out", "we missed you");
#here's a first in first out queue to use for welcome back
$lastusertoleave = "nobody";
# flag to keepp track of sleep mode
$allowspeak = 0;
$forcenospeak = "";
$queue_what = "";
$queue_where = "";
$queue_gc = "";
$queue_who = "";
# got a chat message, so lets decipher it
sub autohello_chat_recv
{
if ($allowspeak)
{
$gc = $_[0];
$where = $_[1];
$who = $_[2];
$what = $_[3];
$me = GAIM::get_info(3, $gc);
if ($who eq $me)
{
return 0;
}
elsif ($what =~ "GAIM " || $what =~ "gAIM" || $what =~ "gAim" || $what =~ "GAim" || $what =~ "gaIM")
{
$allowspeak = 0;
#$answer = $ungreetresponse[rand @ungreetresponse];
$queue_what = $who.": it is prefered that you use 'gaim' or 'Gaim' as the spelling";
$queue_where = $where;
$queue_gc = $gc;
$queue_who = $who;
$minsleep = rand(10);
GAIM::add_timeout_handler($minsleep, "autohello_dospeak");
GAIM::add_timeout_handler($minsleep + $sleeptime, "autohello_enable_speak");
}
elsif ($what =~ "FAQ" || $what =~ "faq")
{
$allowspeak = 0;
#$answer = $ungreetresponse[rand @ungreetresponse];
$queue_what = "yes, the gaim FAQ can be found at http://gaim.sf.net/faq.php";
$queue_where = $where;
$queue_gc = $gc;
$queue_who = $who;
$minsleep = rand(10);
GAIM::add_timeout_handler($minsleep, "autohello_dospeak");
GAIM::add_timeout_handler($minsleep + $sleeptime, "autohello_enable_speak");
}
elsif ($what =~ "digitalpeer" && ($what =~ "script" || $what =~ "bot"))
{
$allowspeak = 0;
#$answer = $ungreetresponse[rand @ungreetresponse];
$queue_what = $iamnotabot[rand @iamnotabot];
$queue_where = $where;
$queue_gc = $gc;
$queue_who = $who;
GAIM::add_timeout_handler(2, "autohello_dospeak");
GAIM::add_timeout_handler(20 + $sleeptime, "autohello_enable_speak");
}
elsif ($what =~ "digitalpeer" && ($what =~ "shutup" || $what =~ "quiet"|| $what =~ "stop"))
{
$allowspeak = 0;
#$answer = $ungreetresponse[rand @ungreetresponse];
$queue_what = "/me now walks and talks with a limp thanks to you";
$queue_where = $where;
$queue_gc = $gc;
$queue_who = $who;
GAIM::add_timeout_handler(2, "autohello_dospeak");
GAIM::add_timeout_handler(10 + $sleeptime, "autohello_enable_speak");
}
elsif ($what =~ "gaim" && ($what =~ "doesn't" || $what =~ "work"))
{
$allowspeak = 0;
#$answer = $ungreetresponse[rand @ungreetresponse];
$queue_what = "if your having a problem with gaim, FAQ can be found at http://gaim.sf.net/faq.php";
$queue_where = $where;
$queue_gc = $gc;
$queue_who = $who;
GAIM::add_timeout_handler(5, "autohello_dospeak");
GAIM::add_timeout_handler(10 + $sleeptime, "autohello_enable_speak");
}
elsif (($what =~ "MSN" || $what =~ "msn") && ($what =~ "work" || $what =~ "suck"))
{
$allowspeak = 0;
#$answer = $ungreetresponse[rand @ungreetresponse];
$queue_what = "You shouldn't use MSN. MSN is evil. Besides: it sux0rz. If your friends use MSN, make them change. If they won't change, get new friends.";
$queue_where = $where;
$queue_gc = $gc;
$queue_who = "";
GAIM::add_timeout_handler(5, "autohello_dospeak");
GAIM::add_timeout_handler(10 + $sleeptime, "autohello_enable_speak");
}
}
}
sub autohello_chat_buddy_leave
{
$gc = $_[0];
$where = $_[1];
$who = $_[2];
$me = GAIM::get_info(3, $gc);
#make sure this isn't me
if ($who eq $me)
{
return 0;
}
if ($queue_who =~ $who)
{
$forcenospeak = "1";
}
$lastusertoleave = $who;
}
#a buddy has entered the room
sub autohello_chat_buddy_join
{
if ($allowspeak)
{
$gc = $_[0];
$where = $_[1];
$who = $_[2];
$me = GAIM::get_info(3, $gc);
#make sure this isn't me
if ($who eq $me)
{
return 0;
}
if ($lastusertoleave =~ $who)
{
$allowspeak = 0;
$answer = $wbresponse[rand @wbresponse];
$queue_what = $answer." ".$who;
$queue_where = $where;
$queue_gc = $gc;
$queue_who = $who;
$minsleep = rand($maxwait);
GAIM::add_timeout_handler($minsleep, "autohello_dospeak");
GAIM::add_timeout_handler($minsleep + $sleeptime, "autohello_enable_speak");
}
else
{
$allowspeak = 0;
$answer = $greetresponse[rand @greetresponse];
$queue_what = $answer." ".$who;
$queue_where = $where;
$queue_gc = $gc;
$queue_who = $who;
$minsleep = rand($maxwait);
GAIM::add_timeout_handler($minsleep, "autohello_dospeak");
GAIM::add_timeout_handler($minsleep + $sleeptime, "autohello_enable_speak");
}
}
}
# this is the renabler to come back from sleep mode
sub autohello_enable_speak
{
$allowspeak = 1;
}
sub autohello_dospeak
{
if (!$forcenospeak)
{
GAIM::print_to_chat($queue_gc, $queue_where, $queue_what);
}
$forcenospeak="";
}
# i have joined a chat, don't say hi to every freaking person, so wait
sub autohello_chat_join
{
if ($allowspeak)
{
$allowspeak = 0;
GAIM::add_timeout_handler(10, "autohello_enable_speak");
}
}
#this is called when the plugin is unloaded
sub autohello_goodbye
{
#GAIM::print("Unloading AutoHello", "Autohello is unloading.");
}
GAIM::register("AutoHello", "0.0.1", "autohello_goodbye", "");
GAIM::add_event_handler("event_chat_recv", "autohello_chat_recv");
GAIM::add_event_handler("event_chat_buddy_join", "autohello_chat_buddy_join");
GAIM::add_event_handler("event_chat_join", "autohello_chat_join");
GAIM::add_event_handler("event_chat_buddy_leave", "autohello_chat_buddy_leave");
GAIM::add_timeout_handler(10, "autohello_enable_speak",0);