X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2FUserExtra.pl;h=584a43b40636aa9ba453c5707f60afa770581374;hb=45dfebfddf4099b617eaf9ddd558596f60309b71;hp=30b05f5c9187c345abcd23151c54f4416709608e;hpb=1dd29278b20cd1fb9ffdb6b5067ade84899c6654;p=infobot.git diff --git a/src/UserExtra.pl b/src/UserExtra.pl index 30b05f5..584a43b 100644 --- a/src/UserExtra.pl +++ b/src/UserExtra.pl @@ -17,24 +17,23 @@ use vars qw(%channels %chanstats %cmdstats %count %ircstats %param &addCmdHook("main", 'chan(stats|info)', ('CODEREF' => 'chaninfo', ) ); &addCmdHook("main", 'cmd(stats|info)', ('CODEREF' => 'cmdstats', ) ); +&addCmdHook("main", 'sched(stats|info)', ('CODEREF' => 'scheduleList', ) ); &addCmdHook("main", 'factinfo', ('CODEREF' => 'factinfo', - 'Cmdstats' => 'Factoid Info', Module => 'factoids', ) ); + 'Cmdstats' => 'Factoid Info', Module => 'Factoids', ) ); &addCmdHook("main", 'factstats?', ('CODEREF' => 'factstats', 'Cmdstats' => 'Factoid Stats', Help => "factstats", - Forker => 1, 'Identifier' => 'factoids', ) ); + Forker => 1, 'Identifier' => 'Factoids', ) ); &addCmdHook("main", 'help', ('CODEREF' => 'help', 'Cmdstats' => 'Help', ) ); &addCmdHook("main", 'karma', ('CODEREF' => 'karma', ) ); -&addCmdHook("main", 'i?spell', ('CODEREF' => 'ispell', - Help => 'spell', Identifier => 'spell', ) ); &addCmdHook("main", 'd?nslookup', ('CODEREF' => 'DNS', Help => 'nslookup', Identifier => 'allowDNS', Forker => "NULL", ) ); &addCmdHook("main", 'tell|explain', ('CODEREF' => 'tell', Help => 'tell', Identifier => 'allowTelling', Cmdstats => 'Tell') ); -&addCmdHook("main", 'news', ('CODEREF' => 'News::Parse', - Module => 'news', 'Cmdstats' => 'News' ) ); +&addCmdHook("main", 'News', ('CODEREF' => 'News::Parse', + Module => 'News', 'Cmdstats' => 'News' ) ); &addCmdHook("main", 'countrystats', ('CODEREF' => 'countryStats', # Forker => "NULL", ) ); @@ -60,7 +59,7 @@ sub chaninfo { foreach (sort keys %channels) { if ( /^\s*$/ or / / ) { &status("chanstats: fe channels: chan == NULL."); - &ircCheck(); + #&ircCheck(); next; } next if (/^_default$/); @@ -69,6 +68,7 @@ sub chaninfo { push(@array, $str); } &pSReply($reply.": ".join(', ', @array)); + &ircCheck(); ### total user count. foreach $chan (keys %channels) { @@ -164,8 +164,8 @@ sub chaninfo { $new{$_} = $userstats{$_}{'Count'}; } - # todo: show top 3 with percentages? - my($count) = (sort { $new{$a} <=> $new{$b} } keys %new)[0]; + # TODO: show top 3 with percentages? + my($count) = (sort { $new{$b} <=> $new{$a} } keys %new)[0]; if ($count) { $reply .= ". \002$count\002 has said the most with a total of \002$new{$count}\002 messages"; } @@ -234,50 +234,6 @@ sub karma { } } -sub ispell { - my $query = shift; - - if (! -x "/usr/bin/ispell") { - &msg($who, "no binary found."); - return; - } - - if (!&validExec($query)) { - &msg($who,"argument appears to be fuzzy."); - return; - } - - my $reply = "I can't find alternate spellings for '$query'"; - - foreach (`/bin/echo '$query' | /usr/bin/ispell -a -S`) { - chop; - last if !length; # end of query. - - if (/^\@/) { # intro line. - next; - } elsif (/^\*/) { # possibly correct. - $reply = "'$query' may be spelled correctly"; - last; - } elsif (/^\&/) { # possible correction(s). - s/^\& (\S+) \d+ \d+: //; - my @array = split(/,? /); - - $reply = "possible spellings for $query: @array"; - last; - } elsif (/^\+/) { - &DEBUG("spell: '+' found => '$_'."); - last; - } elsif (/^# (.*?) 0$/) { - # none found. - last; - } else { - &DEBUG("spell: unknown: '$_'."); - } - } - - &pSReply($reply); -} - sub nslookup { my $query = shift; &status("DNS Lookup: $query"); @@ -486,7 +442,7 @@ sub do_countrystats { push(@list, "$str ($_, $perc %)"); } - # todo: move this into a scheduler like nickometer + # TODO: move this into a scheduler like nickometer $msgType = "private"; &pSReply( &formListReply(0, "Country Stats ", @list) ); @@ -535,7 +491,7 @@ sub userCommands { } } - &performReply( sprintf("'%s' is ascii %s", $arg, ord $1) ); + &performReply( sprintf("'%s' is ascii %s", $arg, ord $arg) ); return; } @@ -574,10 +530,11 @@ sub userCommands { } if (scalar @args == 2) { - if (length $args[0] != 2) { - &msg($who, "invalid format..."); - return; - } +# disable cause $1$ will use md5 +# if (length $args[0] != 2) { +# &msg($who, "invalid format..."); +# return; +# } &pSReply( crypt($args[1], $args[0]) ); } else { @@ -795,7 +752,7 @@ sub userCommands { if ($message =~ /^statu?s$/i) { my $startString = scalar(gmtime $^T); my $upString = &Time2String(time() - $^T); - my ($auser,$asystem,$cuser,$csystem) = times; + my ($puser,$psystem,$cuser,$csystem) = times; my $factoids = &countKeys("factoids"); my $forks = 0; foreach (keys %forked) { @@ -824,7 +781,7 @@ sub userCommands { "I'm using about \002$memusage\002 ". "kB of memory. With \002$forks\002 active ". &fixPlural("fork",$forks). - ". uptimes $auser,$asystem,$cuser,$csystem" + ". Process time user/system $puser/$psystem child $cuser/$csystem" ); return; @@ -848,38 +805,36 @@ if (0) { } # wantNick. xk++ - if ($message =~ /^wantNick(\+)?$/i) { - my ($force) = ($1) ? 1 : 0; - $force = 0 unless (&IsFlag("n")); + # FIXME does not try to get nick "back", just switches nicks + if ($message =~ /^wantNick\s(.*)?$/i) { + return unless (&hasFlag("o")); + my $wantnick = lc $1; + my $mynick = $conn->nick(); - # cannot trust Net::IRC's nick() - if ($param{'ircNick'} eq $ident) { - &msg($who, "I hope you're right. I'll try anyway."); - &DEBUG("ircNick => $param{'ircNick'}"); - &DEBUG("ident => $ident"); + if ($mynick eq $wantnick) { + &msg($who, "I hope you're right. I'll try anyway (mynick=$mynick, wantnick=$wantnick)."); } # fallback check, I guess. needed? - if (! &IsNickInAnyChan( $param{'ircNick'} ) ) { - my $str = "attempting to change nick to $param{'ircNick'}"; + if (! &IsNickInAnyChan( $wantnick ) ) { + my $str = "attempting to change nick from $mynick to $wantnick"; &status($str); &msg($who, $str); - &nick($param{ 'ircNick' }); + &nick($wantnick); return; } # idea from dondelecarlo :) - # todo: use cache{nickserv} + # TODO: use cache{nickserv} if ($param{'nickServ_pass'}) { - return if ($param{'ircNick'} eq $ident or $force == 0); - - &status("someone is using our nick; GHOSTing"); - &msg($who, "using GHOST on $param{'ircNick'}."); - &msg("NickServ", "GHOST $param{'ircNick'} $param{'nickServ_pass'}"); + my $str = "someone is using nick $wantnick; GHOSTing"; + &status($str); + &msg($who, $str); + &msg("NickServ", "GHOST $wantnick $param{'nickServ_pass'}"); $conn->schedule(5, sub { - &status("going to change nick after GHOST."); - &nick( $param{'ircNick'} ); + &status("going to change nick from $mynick to $wantnick after GHOST."); + &nick($wantnick); } ); return;