1use strict; 2use Irssi; 3use 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 35Irssi::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 43Irssi::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 51Irssi::signal_add('event 282', 'callerid_accept_eof'); 52 sub callerid_accept_eof { Irssi::signal_stop(); } 53 54Irssi::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 62Irssi::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 73Irssi::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 82Irssi::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 90Irssi::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 98Irssi::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 107Irssi::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 ); 136