]> git.donarmstrong.com Git - infobot.git/blobdiff - src/IRC/IrcHooks.pl
Many changes, basically added and integrated News, and bug fixes.
[infobot.git] / src / IRC / IrcHooks.pl
index c4f1ef08d55d1a55210daa8ef6b4985f67de9387..87d3f6857967ff88098b3d4a7172ed48e98c167f 100644 (file)
@@ -65,10 +65,12 @@ sub on_chat {
 
        ### TODO: prevent users without CRYPT chatting.
        if (!defined $crypto) {
-           &DEBUG("chat: no pass required.");
-###        $success++;
+           &DEBUG("todo: dcc close chat");
+           &msg($who, "nope, no guest logins allowed...");
+           return;
+       }
 
-       } elsif (&ckpasswd($msg, $crypto)) {
+       if (&ckpasswd($msg, $crypto)) {
            # stolen from eggdrop.
            $self->privmsg($sock, "Connected to $ident");
            $self->privmsg($sock, "Commands start with '.' (like '.quit' or '.help')");
@@ -475,6 +477,35 @@ sub on_join {
                    $user =~ /^r(oo|ew|00)t$/i &&
                    $channels{$chan}{'o'}{$ident});
 
+    ### NEWS:
+    if (&IsChanConf("news") && &IsChanConf("newsKeepRead")) {
+       my @new;
+       foreach (keys %{ $::news{$chan} }) {
+           my $t = $::newsuser{$chan}{$who};
+           next if (!defined $t);
+           next if ($t > $::news{$chan}{$_}{Time});
+
+           push(@new, $_);
+       }
+
+       if (scalar @new) {
+           &msg($who, "+==== New news for $chan (".scalar(@new)."):");
+           # todo: show how many sec/min/etc ago?
+           my $timestr = &Time2String( $::newsuser{$chan}{$who} );
+           &msg($who, "|= Last time read $timestr ago");
+
+           foreach (@new) {
+               my $i   = &News::getNewsItem($_);
+               my $age = time() - $::news{$chan}{$_}{Time};
+               &msg($who, sprintf("\002[\002%2d\002]\002 %s (%s)",
+                       $i, $_, &Time2String($age) ) );
+           }
+
+           # lame hack to prevent dupes if we just ignore it.
+           $::newsuser{$chan}{$who} = time();
+       }
+    }
+
     ### chanlimit check.
     &chanLimitVerify($chan);
 
@@ -552,6 +583,14 @@ sub on_msg {
     $nuh       = $nick."!".$uh;
     $msgtime   = time();
 
+    if ($nick eq $ident) { # hopefully ourselves.
+       if ($msg eq "TEST") {
+           &status("Local: Yes, we're alive.");
+           delete $cache{connect};
+           return;
+       }
+    }
+
     &hookMsg('private', undef, $nick, $msg);
 }