html/highlite.pl


   1 use strict;
   2 use Irssi;
   3 use Irssi::Irc;
   4 
   5 use vars qw($VERSION %IRSSI);
   6 
   7 $VERSION = "1.0";
   8 %IRSSI = (
   9 	"authors"       => "Mantis",
  10 	"contact"       => "mantis\@inta-link.com",
  11 	"name"          => "highlite",
  12 	"description"   => "shows events happening in all channels you are in that may concern you",
  13 	"url"           => "http://www.inta-link.com/",
  14 	"license"       => "GNU GPL v2",
  15 	"changed"       => "2003-01-03"
  16 );
  17 
  18 sub msg_join
  19 {
  20   my ($server, $channame, $nick, $host) = @_;
  21   $channame =~ s/^://;
  22 
  23   my $windowname = Irssi::window_find_name('highlite');
  24   $windowname->print("%B%0JOIN : " . $nick . " : " . $channame . " : " . $host, MSGLEVEL_CLIENTCRAP) if ($windowname);
  25 }
  26 
  27 sub msg_part
  28 {
  29   my ($server, $channame, $nick, $host) = @_;
  30   $channame =~ s/^://;
  31 
  32   my $windowname = Irssi::window_find_name('highlite');
  33   $windowname->print("%b%0PART : " . $nick . " : " . $channame . " : " . $host, MSGLEVEL_CLIENTCRAP) if ($windowname);
  34 }
  35 
  36 sub msg_quit
  37 {
  38   my ($server, $nick, $host, $quitmsg) = @_;
  39 
  40   if (substr($quitmsg, 0, 14) eq "Read error to ")
  41   {
  42     $quitmsg = "[ General Read Error ]";
  43   }
  44   if (substr($quitmsg, 0, 17) eq "Ping timeout for ")
  45   {
  46     $quitmsg = "[ General Ping Timeout Error ]";
  47   }
  48 
  49   my $windowname = Irssi::window_find_name('highlite');
  50   $windowname->print("%R%0QUIT : " . $nick . " : " . $host . " : " . $quitmsg, MSGLEVEL_CLIENTCRAP) if ($windowname);
  51 
  52   $quitmsg = "";
  53 }
  54 
  55 sub msg_topic
  56 {
  57   my ($server, $channame, $topicmsg, $nick, $host) = @_;
  58   $channame =~ s/^://;
  59 
  60   my $windowname = Irssi::window_find_name('highlite');
  61   $windowname->print("%G%0TOPIC : " . $nick . " : " . $channame . " : " . $topicmsg, MSGLEVEL_CLIENTCRAP) if ($windowname);
  62 }
  63 
  64 sub msg_nick
  65 {
  66   my ($server, $nick, $old_nick, $host) = @_;
  67 
  68   my $windowname = Irssi::window_find_name('highlite');
  69   $windowname->print("%m%0NICK : " . $old_nick . " : " . $nick . " : " . $host, MSGLEVEL_CLIENTCRAP) if ($windowname);
  70 }
  71 
  72 sub msg_kick
  73 {
  74   my ($server, $channame, $kicked, $nick, $host, $reason) = @_;
  75   $channame =~ s/^://;
  76 
  77   my $windowname = Irssi::window_find_name('highlite');
  78   $windowname->print("%Y%0KICK : " . $kicked . " : " . $channame . " : " . $nick . " : " . $reason, MSGLEVEL_CLIENTCRAP) if ($windowname);
  79 }
  80 
  81 sub sig_printtext {
  82   my ($dest, $text, $stripped) = @_;
  83 
  84   if (($dest->{level} & (MSGLEVEL_HILIGHT|MSGLEVEL_MSGS)) && ($dest->{level} & MSGLEVEL_NOHILIGHT) == 0)
  85   {
  86     if ($dest->{level} & MSGLEVEL_PUBLIC)
  87     {
  88       my $windowname = Irssi::window_find_name('highlite');
  89 
  90       $windowname->print("%W%0HIGHLITE : " . $dest->{target} . " : " . $text, MSGLEVEL_CLIENTCRAP) if ($windowname);
  91     }
  92   }
  93 }
  94 
  95 my $windowname = Irssi::window_find_name('highlite');
  96 if (!$windowname)
  97 {
  98   Irssi::command("window new hidden");
  99   Irssi::command("window name highlite");
 100 }
 101 
 102 Irssi::signal_add(
 103 {
 104   'message join' => \&msg_join,
 105   'message part' => \&msg_part,
 106   'message quit' => \&msg_quit,
 107   'message topic' => \&msg_topic,
 108   'print text', 'sig_printtext',
 109   'message nick' => \&msg_nick,
 110   'message kick' => \&msg_kick
 111 }
 112 );
 113