X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2FProcess.pl;h=36cffd423054a12cfaebfdb9fb5a5c2d1da70a76;hb=d3faaba2ad8c02cdf10e1a9698592afc6ed928bc;hp=abe7d187943107a479672743a88d313e33942205;hpb=b28802c40e8775f2a9457b833e2014ccc2f4161c;p=infobot.git diff --git a/src/Process.pl b/src/Process.pl index abe7d18..36cffd4 100644 --- a/src/Process.pl +++ b/src/Process.pl @@ -24,7 +24,12 @@ sub process { return 'addressedother set' if ($addressedother); $talkok = ($param{'addressing'} =~ /^OPTIONAL$/i or $addressed); - $learnok = ($param{'learn'} =~ /^HUNGRY$/i or $addressed); + $learnok = 1 if ($addressed); + if ($param{'learn'} =~ /^HUNGRY$/i) { + $learnok = 1; + $addrchar = 1; + $talkok = 1; + } &shmFlush(); # hack. @@ -43,7 +48,7 @@ sub process { &msg($who, "give me an unlobotomy.") if ($delta_time > 60*60); $cache{lobotomy}{$who} = time(); } - return 'LOBOTOMY'; + return 'LOBOTOMY' unless IsFlag("A"); } # talkMethod. @@ -60,32 +65,34 @@ sub process { if ($message =~ /^join(\s+(.*))?\s*$/i) { return 'join: not addr' unless ($addressed); - $2 =~ /^($mask{chan})(,(\S+))?/; - my($thischan, $key) = (lc $1, $3); - my $chankey = lc $thischan; - $chankey .= " $key" if (defined $key); + $2 =~ /^($mask{chan})(\s+(\S+))?/; + my($joinchan, $key) = (lc $1, $3); - if ($thischan eq "") { + if ($joinchan eq "") { &help("join"); return; } + if ($joinchan !~ /^$mask{chan}$/) { + &msg($who, "$joinchan is not a valid channel name."); + return; + } + if (&IsFlag("o") ne "o") { - if (!exists $chanconf{$thischan}) { - &msg($who, "I am not allowed to join $thischan."); + if (!exists $chanconf{$joinchan}) { + &msg($who, "I am not allowed to join $joinchan."); return; } - if (&validChan($thischan)) { - &msg($who,"warn: I'm already on $thischan, joining anyway..."); -# return; + if (&validChan($joinchan)) { + &msg($who,"warn: I'm already on $joinchan, joining anyway..."); } } - $cache{join}{$thischan} = $who; # used for on_join self. + $cache{join}{$joinchan} = $who; # used for on_join self. - &joinchan($chankey); - &status("JOIN $chankey <$who>"); - &msg($who, "joining $chankey"); + &status("JOIN $joinchan $key <$who>"); + &msg($who, "joining $joinchan $key"); + &joinchan($joinchan, $key); &joinNextChan(); # hack. return; @@ -97,7 +104,7 @@ sub process { my @array = split / /, $message; if ($who =~ /^_default$/i) { - &pSReply("you are too eleet."); + &performStrictReply("you are too eleet."); return; } @@ -109,25 +116,25 @@ sub process { my $do_nick = $array[1] || $who; if (!exists $users{$do_nick}) { - &pSReply("nick $do_nick is not in user list."); + &performStrictReply("nick $do_nick is not in user list."); return; } my $crypt = $users{$do_nick}{PASS}; if (!defined $crypt) { - &pSReply("user $do_nick has no passwd set."); + &performStrictReply("user $do_nick has no passwd set."); return; } if (!&ckpasswd($array[0], $crypt)) { - &pSReply("invalid passwd for $do_nick."); + &performStrictReply("invalid passwd for $do_nick."); return; } - my $mask = "*!$user@".&makeHostMask($host); + my $mask = "$who!$user@".&makeHostMask($host); ### TODO: prevent adding multiple dupe masks? ### TODO: make &addHostMask() CMD? - &pSReply("Added $mask for $do_nick..."); + &performStrictReply("Added $mask for $do_nick..."); $users{$do_nick}{HOSTS}{$mask} = 1; return; @@ -139,7 +146,7 @@ sub process { my @array = split ' ', $message; if ($who =~ /^_default$/i) { - &pSReply("you are too eleet."); + &performStrictReply("you are too eleet."); return; } @@ -148,7 +155,7 @@ sub process { return; } - # todo: use &getUser()? + # TODO: use &getUser()? my $first = 1; foreach (keys %users) { if ($users{$_}{FLAGS} =~ /n/) { @@ -158,18 +165,18 @@ sub process { } if (!exists $users{$who} and !$first) { - &pSReply("nick $who is not in user list."); + &performStrictReply("nick $who is not in user list."); return; } if ($first) { - &pSReply("First time user... adding you as Master."); - $users{$who}{FLAGS} = "mrsteon"; + &performStrictReply("First time user... adding you as Master."); + $users{$who}{FLAGS} = "aemnorst"; } my $crypt = $users{$who}{PASS}; if (defined $crypt) { - &pSReply("user $who already has pass set."); + &performStrictReply("user $who already has pass set."); return; } @@ -180,13 +187,13 @@ sub process { if (!scalar keys %{ $users{$who}{HOSTS} }) { my $mask = "*!$user@".&makeHostMask($host); - &pSReply("Added hostmask '\002$mask\002' to $who"); + &performStrictReply("Added hostmask '\002$mask\002' to $who"); $users{$who}{HOSTS}{$mask} = 1; } $crypt = &mkcrypt($array[0]); $users{$who}{PASS} = $crypt; - &pSReply("new pass for $who, crypt $crypt."); + &performStrictReply("new pass for $who, crypt $crypt."); return; } @@ -222,7 +229,7 @@ sub process { # User Processing, for all users. if ($addressed) { my $retval; - return 'returned from pCH' if &parseCmdHook("main",$message); + return 'SOMETHING parseCmdHook' if &parseCmdHook($message); $retval = &userCommands(); return unless (defined $retval); @@ -256,16 +263,14 @@ sub process { # customized random message. my $tmp = (rand() < 0.5) ? ", $who" : ""; - &pSReply( &getRandom(keys %{ $lang{'hello'} }) . $tmp ); + &performStrictReply( &getRandom(keys %{ $lang{'hello'} }) . $tmp ); return; } # greetings. if ($message =~ /how (the hell )?are (ya|you)( doin\'?g?)?\?*$/) { - my $reply = &getRandom(keys %{ $lang{'howareyou'} }); - &performReply($reply); - + &performReply(&getRandom(keys %{ $lang{'howareyou'} })); return; } @@ -275,11 +280,7 @@ sub process { { return 'praise: no addr' unless ($addressed); - &status("random praise detected"); - - my $tmp = (rand() < 0.5) ? "thanks $who " : ""; - &pSReply($tmp.":)"); - + &performReply(&getRandom(keys %{ $lang{'praise'} })); return; } @@ -296,18 +297,11 @@ sub process { ### # karma. set... - if ($message =~ /^(\S+)(--|\+\+)\s*$/ and $addressed) { - return '' unless (&hasParam("karma")); - # well... since it is policy to do bot functions before factoids - # karma gets hit if, for example, "g++" is issued. - # only way to request it is to put a question mark at the end. - - my($term,$inc) = (lc $1,$2); - - if ($msgType !~ /public/i) { - &msg($who, "karma must be done in public!"); - return; - } + if ($msgType =~ /public/i && $message =~ /^(\S+)(--|\+\+)\s*$/ && + $addressed && &IsChanConfOrWarn("karma") + ) { + # to request factoids such as "g++" or "libstdc++", append "?" to the query. + my ($term,$inc) = (lc $1,$2); if (lc $term eq lc $who) { &msg($who, "please don't karma yourself"); @@ -335,10 +329,6 @@ sub process { # here's where the external routines get called. # if they return anything but null, that's the "answer". if ($addressed) { - if ( &parseCmdHook("extra",$message) ) { - return 'DID SOMETHING IN PCH.'; - } - my $er = &Modules(); if (!defined $er) { return 'SOMETHING 1'; @@ -346,7 +336,7 @@ sub process { # allow administration of bot via messages (default is DCC CHAT only) if (&IsFlag("A")) { - &loadMyModule( $myModules{'ircdcc'} ); + &loadMyModule('UserDCC'); $er = &userDCC(); if (!defined $er) { return 'SOMETHING 2'; @@ -359,7 +349,7 @@ sub process { } } - if (&IsParam("factoids") and $param{'DBType'} =~ /^(mysql|sqlite|pgsql)/i) { + if (&IsParam("factoids") and $param{'DBType'} =~ /^(mysql|sqlite(2)?|pgsql)$/i) { &FactoidStuff(); } elsif ($param{'DBType'} =~ /^none$/i) { return "NO FACTOIDS.";