html/nickignore.pl


   1 #
   2 # nickignore.pl
   3 #
   4 # ignore minimal changes in nicks (case, special characters)
   5 #
   6 # can also ignore more complex/drastic changes via variable
   7 # 'nickignore_pattern' (use like '/set nickignore_pattern (away|afk)')
   8 
   9 use Irssi;
  10 use Irssi::Irc;
  11 use vars qw($VERSION %IRSSI); 
  12 use strict;
  13 
  14 
  15 $VERSION = "0.03";
  16 %IRSSI = (
  17     authors     => "Kalle 'rpr' Marjola",
  18     contact	=> "marjola\@iki.fi", 
  19     name        => "ignore (minimal) nick changes",
  20     description => "Ignores any nick changes when only the case or special characters are modified, like 'rpr -> Rpr' or 'rpr_ -> rpr', with optional pattern for more complicated ignores",
  21     license	=> "Public Domain",
  22     url		=> "http://iki.fi/rpr/irssi/nickignore.pl",
  23     changed	=> "26.8.2003"
  24 );
  25 
  26 sub event_nick {
  27     my ($server, $newnick, $nick, $address) = @_;
  28 
  29     # (debug) Irssi::print("new: $newnick old: $nick");
  30     $newnick = substr($newnick, 1) if ($newnick =~ /^:/);
  31     
  32     # remove any special characters from nicks
  33     $newnick =~ s/[^a-zA-Z]//g;
  34     $nick =~ s/[^a-zA-Z]//g;
  35 
  36     # if the user has specific other patterns to be used, use it
  37     my $extra_pattern = Irssi::settings_get_str('nickignore_pattern');
  38     if ($extra_pattern) {
  39 	$newnick =~ s/$extra_pattern//g;
  40 	$nick =~ s/$extra_pattern//g;
  41     }
  42 
  43     # compare if they are identical (excluding case)
  44     Irssi::signal_stop() if ($newnick =~ m/^$nick$/i);
  45 }
  46 
  47 Irssi::signal_add('event nick', 'event_nick');
  48 
  49 Irssi::settings_add_str  ('misc', 'nickignore_pattern', '');