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   );