html/callerid.pl
1 use strict;
2 use Irssi;
3 use vars qw($VERSION %IRSSI);
4
5 $VERSION = "1.0";
6 %IRSSI = (
7 authors => 'Daniel "dubkat" Reidy',
8 contact => 'dubkat@dubkat.org (www.dubkat.org)',
9 name => 'callerid',
10 description => 'Reformats CallerID (+g) Messages
11 (Also known as Server-Side Ignore)
12 on Hybrid & Ratbox IRCDs (EFnet)
13 to be Easier on the Eyes',
14 license => 'GPL',
15 url => 'http://scripts.irssi.org/',
16 );
17
18 #########################################################################################
19 # Thanks to Geert and Senneth for helping me out with my first irssi script! #
20 # Hopefully someone will find this useful. #
21 # #
22 # Callerid is used to block messages from users at the server. #
23 # Callerid mode is activated by usermode +g on Hybrid and Ratbox servers (EFnet) #
24 # The ircd maintains a list of users that may message you. #
25 # To add users to the list, do /quote accept NICK #
26 # The IRCD will *NOT* inform you that the user has been added. #
27 # To remove a user from the list do /quote accept -NICK #
28 # The IRCD will *NOT* inform you that the user has been removed. #
29 # To see a list of users on your accept list do /quote accept * #
30 # #
31 # The following alias may make life easier: #
32 # alias accept quote accept #
33 #########################################################################################
34
35 Irssi::signal_add('event 716', 'callerid_them');
36 sub callerid_them {
37 my ($server, $data) = @_;
38 my (undef, $nick, undef) = split(/ +/, $data, 3);
39 Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'callerid_them', $nick);
40 Irssi::signal_stop();
41 }
42
43 Irssi::signal_add('event 717', 'callerid_them_notified');
44 sub callerid_them_notified {
45 my ($server, $data) = @_;
46 my (undef, $nick, undef) = split(/ +/, $data, 3);
47 $server->printformat($nick, MSGLEVEL_CLIENTCRAP, 'callerid_them_notified', $nick);
48 Irssi::signal_stop();
49 }
50
51 Irssi::signal_add('event 282', 'callerid_accept_eof');
52 sub callerid_accept_eof { Irssi::signal_stop(); }
53
54 Irssi::signal_add('event 718', 'callerid_you');
55 sub callerid_you {
56 my ($server, $data) = @_;
57 my (undef, $nick, $host, undef) = split(/ +/, $data, 4);
58 $server->printformat($nick, MSGLEVEL_CLIENTCRAP, 'callerid_you', $nick, $host);
59 Irssi::signal_stop();
60 }
61
62 Irssi::signal_add('event 281', 'callerid_accept_list');
63 sub callerid_accept_list {
64 my ($server, $data) = @_;
65 my (undef, $list, undef) = split(/ +/, $data, 3);
66 $data =~ s/^\S+\s//;
67 $data =~ s/\s+:$//;
68 $server->printformat($data, MSGLEVEL_CLIENTCRAP, 'callerid_accept_list', $data);
69 Irssi::signal_stop();
70 }
71
72
73 Irssi::signal_add('event 457', 'callerid_accept_exsists');
74 sub callerid_accept_exsists {
75 my ($server, $data) = @_;
76 my (undef, $nick, undef) = split(/ +/, $data, 3);
77 Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'callerid_accept_exsists', $nick);
78 Irssi::signal_stop();
79 }
80
81
82 Irssi::signal_add('event 458', 'callerid_not_on_list');
83 sub callerid_not_on_list {
84 my ($server, $data) = @_;
85 my (undef, $info, undef) = split(/ +/, $data, 3);
86 Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'callerid_not_on_list', $info);
87 Irssi::signal_stop();
88 }
89
90 Irssi::signal_add('event 456', 'callerid_full');
91 sub callerid_full {
92 my ($server, $data) = @_;
93 my (undef, $info) = split(/ +/, $data, 2);
94 Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'callerid_full', $info);
95 Irssi::signal_stop();
96 }
97
98 Irssi::signal_add('event 401', 'callerid_invalid_nick');
99 sub callerid_invalid_nick{
100 my ($server, $data) = @_;
101 my (undef, $info, undef) = split(/ +/, $data, 3);
102 Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'callerid_invalid_nick', $info);
103 Irssi::signal_stop();
104 }
105
106
107 Irssi::theme_register
108 (
109 [
110 'callerid_them',
111 '%_[%_%RCALLERID%n%_]%_ %W$0%n is in server-side ignore.',
112
113 'callerid_you',
114 '%_[%_%yCALLERID%n%_]%_ %W$0%n ($1) is attempting to message you.',
115
116 'callerid_accept_list',
117 '%_[%_%gACCEPTED%n%_]%_ %W$0%n',
118
119 'callerid_accept_exsists',
120 '%_[%_%BCALLERID%n%_]%_ %W$0%n Is Already On Your Accept List. Do %_/quote accept *%_ for a list :)',
121
122 'callerid_full',
123 '%_[%_%pCALLERID%n%_]%_ List is full. Do %_/quote accept *%_ for a list',
124
125 'callerid_not_on_list',
126 '%_[%_%pCALLERID%n%_]%_ $0 is not a user on your accept list.',
127
128 'callerid_invalid_nick',
129 '%_[%_%pCALLERID%n%_]%_ Cannot add/remove $0. That nick does not exist.',
130
131 'callerid_them_notified',
132 '%_[%_%rCALLERID%n%_]%_ %_$0%_ has been notified that you attempted to message them. (They will not notified of further messages for 60sec).',
133
134 ]
135 );