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