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