on *:start: { load_hash } alias -l load_hash { var %i = 1, %a, %b while ($findfile($scriptdir, *.hash, %i)) { %a = $ifmatch %b = $nopath(%a) hmake %b hload %b $+(", %a, ") inc %i } } on *:text:*:#: { if (%disable) { halt } tokenize 32 $remove($strip($1-), $chr(36)) if ($regex($remove($1-, $me $+ $chr(32)), /^(who|what)('s|\sis)\s(\w+)/i)) { var %n = $regml(3) if ($definition(%n)) { .timer 1 $rand(1, 3) msg $chan %n $ifmatch $iif($rand(0, 1), $emote) return } } elseif ($me isin $1) { inconv $nick if (!$2) { bot_say $chan $nick yeash, $nick $+ ? $emote } elseif ($regex($remove($1-, $me), /(\w+)('s|\s(is|are))\s(.*)$/i)) { hadd -m bot3.hash $2- $iif($rand(0, 1), .timer 1 $rand(1, 3) msg $chan $+(Gotcha', $chr(44) $nick, .)) return } elseif ($2 == forget) { if ($definition($3)) { hdel bot3.hash $3 msg $chan $nick $+ : I forgot $3 $+ . } else { msg $chan $nick $+ : I don't know who/what $3 is. } } elseif ($2 == delete) { if ($3) { var %i = 1, %s while ($hmatch(bot1.hash, $+(*, $3-, *), 1).data) { %s = $ifmatch hdel bot1.hash %s hadd -m bot4.hash %s inc %i } msg $chan %i quotes have been deleted from my database. } else { msg $chan Delete what? } return } elseif ($2 == match) { if ($3 isnum) { msg $chan Match $3 $+ : $hget(bot1.hash, $hmatch(bot1.hash, $+(*, $4-, *), $3).data) } else { msg $chan I have $hmatch(bot1.hash, $+(*, $3-, *), 0).data matches for $+(", $3-, ".) } return } elseif ($2 == stfu) { set -u5 %disable 1 } elseif ($2 == troll) { .timer 0 1 send_bla $3 msg $chan Now Trolling $3 $+ . } elseif ($3 ison $chan) || ($4 ison $chan) { bot_act $chan $1 $+ $iif($right($2, 1) != s, s) $replace($2-, me, $nick) } elseif ($2 == pm) { set %base $chan .msg $3 $4- return } } if ($0 < 20) { tokenize 32 $strip($1-) reply $chan $nick $1- learn $chan $1- } } alias send_bla { $iif($rand(0,1), msg, $iif($rand(0,1), notice, ctcp)) $1 $flood_chars } alias -l flood_chars { dll $+(", $scriptdir, whilefix.dll, ") WhileFix | var %a = $rand(1, 2), %b if (%a == 1) { %b = $str($+($asc_junk, $rand(A, Z), $asc_junk, $rand(a, z)), 40) } elseif (%a == 2) { %b = $str($+($asc_junk, $chr($rand(1, 300)), $asc_junk, $chr($rand(1, 300)),$asc_junk, $chr($rand(1, 300))), 10) } return %b } alias -l asc_junk { return $+($chr(2), $chr(3), $rand(1, 15)) } alias definition { return $hget(bot3.hash, $1) } alias -l reply { if ($me isin $1-) || ($inconv($2)) || ($rand(1, 3) == 3) { var %c = $1, %n = $2, %s, %p tokenize 32 $3- if ($hget(reply)) { hfree reply } while ($gettok($1-, %i, 32)) { %s = $ifmatch if ($len(%s) > 3) && (%s !ison $chan) { if ($hmatch(bot1.hash, $+(*, %s, *), 0).data) { hadd -m reply $ticks $hget(bot1.hash, $hmatch(bot1.hash, $+(*, %s, *), $rand(1, $ifmatch)).data) } } %p = $iif(%p, %p $+ \s) $+ $iif($rand(0, 1), %s, \w+) inc %i } %i = $hget(reply, 0).item if (%i) { %p = $+(/, %p, /i) if ($hregex(reply, %p, 0).data) { %s = $hget($hregex(reply, %p, $rand(1, $ifmatch)).data) if (%s != $1-) { bot_say %c %n %s return } } else { :retry if (%i) { %s = $hget(reply, $rand(1, %i)).data if (%s != $1-) { bot_say %c %n %s if ($rand(1, 5) == 5) { .timer 1 $rand(1, 60) msg %c $word($rand(5, 10)) } return } else { dec %i goto retry } } } } } } alias -l inconv { if ($isid) { return $hget(inconv, $1) } else { hadd -mu15 inconv $1 1 } } alias -l learn { var %i = 1, %c = $1, %s tokenize 32 $2- while ($gettok($1-, %i, 32)) { %s = $ifmatch if ($isnick(%s, %c)) { tokenize 32 $reptok($1-, %s, , 1, 32) } elseif ($regex(%s, /((s)?he(')?s)/i)) { %s = $iif($rand(0, 1), i, me) } inc %i } if (!$hmatch(bot1.hash, $1-).data) { if ($hget(bot4.hash, 1).item) { %i = $ifmatch hdel bot4.hash %i } else { %i = ITEM $+ $calc($hget(bot1.hash, 0).item + 1) } hadd -m bot1.hash %i $1- } } alias -l bot_say { var %c = $1, %n = $2, %i = 1, %x = 0 tokenize 32 $3- while ($gettok($1-, %i, 32)) { %s = $ifmatch if (** iswm %s) { tokenize 32 $reptok($1-, %s, $replace(%s, , $iif(!%x, %n, $nick(%c, $rand(1, $nick(%c, 0))))), 1, 32) inc %x } inc %i } .timer 1 $rand(1, 3) msg %c $iif(%n !isin $1- && $rand(1, 5) == 5 && $1, %n $+ :) $1- if ($rand(1, 5) == 5) { .timer 1 $rand(1, 3) msg %c $emote } } alias emote { var %p = /^((:|;|=|x)('|-|o)?(\)|\||\(|\[|\]|o|x|d)|(o|\^|\.)(\.|_)(o|\^|\.))$/i if ($hregex(bot1.hash, %p, 0).data) { return $hget(bot1.hash, $hregex(bot1.hash, %p, $rand(1, $ifmatch)).data) } } alias word { var %a = $str(., $calc($1 - 1)), %b = $str(., $calc($1 + 1)), %p = $+(/\s(a(n)?|the)\s, $chr(40), [^, $chr(40), \W|, %a, |, %b, $chr(41), ]+, $chr(41)/) if ($hregex(bot1.hash, %p, 0).data) { if ($hget(bot1.hash, $hregex(bot1.hash, %p, $rand(1, $ifmatch)).data)) { if ($regex($ifmatch, %p)) { return $regml(1) $regml(2) } } } } on *:action:*:#: { if (%disable) { halt } tokenize 32 $remove($strip($1-), $chr(36)) if ($0 <= 10) { if ($me isin $1-) { reply_a $chan $nick $1- } learn_a $chan $1- } } alias reply_a { if ($rand(0, 1)) { var %s = $gettok($word($rand(4, 10)), 2, 32) if ($right(%s, 1) != s) { %s = %s $+ s } %s = %s $2 } else { %s = $replace($3-, $me, $2) } bot_act $1-2 %s $iif($rand(0, 1), in return, $iif($rand(0, 1), back)) $iif($rand(0, 1) && with !isin $3-, with $word($rand(1, 10))) $iif($rand(0, 1), $emote) } alias -l learn_a { var %i = 1, %c = $1, %s tokenize 32 $2- while ($gettok($1-, %i, 32)) { %s = $ifmatch if ($isnick(%s, %c)) { tokenize 32 $reptok($1-, %s, , 1, 32) } inc %i } if (!$hmatch(bot2.hash, $1-).data) { hadd -m bot2.hash ITEM $+ $calc($hget(bot2.hash, 0).item + 1) $1- } } alias -l bot_act { var %c = $1, %n = $2, %x = 0, %i = 1 tokenize 32 $3- while ($gettok($1-, %i, 32)) { %s = $ifmatch if (** iswm %s) { tokenize 32 $reptok($1-, %s, $replace(%s, , $iif(!%x, %n, $nick(%c, $rand(1, $nick(%c, 0))))), 1, 32) inc %x } inc %i } .timer 1 $rand(1, 3) describe %c $1- } alias isnick { var %c = $2, %i, %s if ($hget(nlist, active) != %c) { hadd -m nlist active %c %i = 1 while ($nick(%c, %i)) { hadd nlist $ifmatch inc %i } } %i = 1 while ($hget(nlist, %i).item) { %s = $ifmatch if (%s isin $1) { return 1 } inc %i } return 0 } on !*:voice:#: { if ($vnick == $me) { var %p = /^(thanks|thank\syou)/i if ($hregex(bot1.hash, %p, 0).data) { bot_say $chan $nick $hget(bot1.hash, $hregex(bot1.hash, %p, $rand(1, $ifmatch)).data) $emote } } } on *:exit: { save_hash } alias save_hash { var %i = 1, %s while ($hget($+(bot, %i, .hash))) { %s = $ifmatch hsave -o %s $+(", $scriptdir, %s, ") hfree %s inc %i } } on *:text:*:?: { msg %base message from $nick $+ : $1- | window -c $nick }