- mark session activity by using "raw_irc" and "raw_irc_out"
authorAndreas Scherbaum <andreas@scherbaum.biz>
Thu, 2 Feb 2012 00:00:48 +0000 (01:00 +0100)
committerAndreas Scherbaum <andreas@scherbaum.biz>
Thu, 2 Feb 2012 00:00:48 +0000 (01:00 +0100)
docbot.pl

index c6c56afc96917f016548440befc967732ec95f8c..316fa482f40b6c29d4058d962e655e2c01ee7870 100755 (executable)
--- a/docbot.pl
+++ b/docbot.pl
@@ -146,7 +146,8 @@ foreach my $session (keys(%main::sessions)) {
                   Nick => $main::sessions{$session}{'nickname'},
                   Ircname => $name,
                   Server => $server,
-                  Port => $port
+                  Port => $port,
+                  Raw => 1
               );
     if (!$irc) {
         print_msg("Could not spawn POE session: $!", ERROR);
@@ -172,6 +173,8 @@ foreach my $session (keys(%main::sessions)) {
             irc_ping         => \&on_ping,
             autoping         => \&do_autoping,
             irc_error        => \&on_error,
+            irc_raw          => \&on_irc_raw,
+            irc_raw_out      => \&on_irc_raw_out,
         },
         heap => { irc => $irc },
     );
@@ -2000,6 +2003,34 @@ sub on_quit {
 }
 
 
+# on_irc_raw()
+#
+# set session activity (incoming traffic)
+#
+sub on_irc_raw {
+    my ($sender, $kernel, $heap, $raw) = @_[SENDER, KERNEL, HEAP, ARG0];
+
+    my $irc = $sender->get_heap();
+    my $session = find_irc_session($irc);
+
+    set_session_activity($session);
+}
+
+
+# on_irc_raw_out()
+#
+# set session activity (outgoing traffic)
+#
+sub on_irc_raw_out {
+    my ($sender, $kernel, $heap, $raw) = @_[SENDER, KERNEL, HEAP, ARG0];
+
+    my $irc = $sender->get_heap();
+    my $session = find_irc_session($irc);
+
+    set_session_activity($session);
+}
+
+
 ## http://poe.perl.org/?POE_Cookbook/IRC_Bot_Debugging
 ## http://poe.perl.org/?POE_Cookbook/IRC_Bot_Disconnecting
 ## http://poe.perl.org/?POE_Cookbook/IRC_Bot_Reconnecting
@@ -2058,8 +2089,6 @@ if (substr($event, 0, 1) eq '_') {
         case('irc_topic') { $print_it = 0; }
         case('irc_ctcp_action') { $print_it = 0; }
         case('irc_ctcp') { $print_it = 0; }
-        case('irc_raw') { $print_it = 0; }
-        case('irc_raw_out') { $print_it = 0; }
         case('irc_isupport') { $print_it = 0; }
         case('irc_nick') { $print_it = 0; }
         case('autoping') { $print_it = 0; }