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 9use Irssi; 10use Irssi::Irc; 11use vars qw($VERSION %IRSSI); 12use 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 26sub 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 47Irssi::signal_add('event nick', 'event_nick'); 48 49Irssi::settings_add_str ('misc', 'nickignore_pattern', ''); 50