diff options
Diffstat (limited to '')
-rw-r--r-- | scripts/washnicks.pl | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/scripts/washnicks.pl b/scripts/washnicks.pl new file mode 100644 index 0000000..09d1bcd --- /dev/null +++ b/scripts/washnicks.pl @@ -0,0 +1,79 @@ +# washnicks.pl +# +# Removes annoying characters from nicks +# +# TODO: +# - Don't use the function if only the first letter is upper case +# + +use strict; +use vars qw($VERSION %IRSSI); + +use Irssi; + +$VERSION = '1.02'; +%IRSSI = ( + authors => 'ulbkold', + contact => 'solaris@sundevil.de', + name => 'washnicks', + description => 'Removes annoying characters from nicks', + license => 'GPL', + url => 'n/a', + changed => '2018-04-04', +); + +# Channel list +my @channels; + +#main event handler +sub wash_nick { + my ($server, $data, $nick, $address, $target) = @_; + my ($channel, $msg) = split(/ :/, $data,2); + my $oldnick=$nick; + + # if the current channel is in the list... + for (@channels) { + if ($_ eq $channel) { + # ... check the nick + # if the nick contains one of these characters or upper case letters + # enter the changing function + if ( $nick =~/[A-Z]|\||\\|\]|\[|\^|-|\`|3|0|1|4|_/ ) { + $nick =~ s/\|//; + $nick =~ s/\\//; + $nick =~ s/\]//; + $nick =~ s/\[//; + $nick =~ s/\^//; + $nick =~ s/-//; + $nick =~ s/_//; + $nick =~ s/\`//; + $nick =~ s/3/e/; + $nick =~ s/0/O/; + $nick =~ s/1/i/; + $nick =~ s/4/a/; + $nick = lc($nick); + + # fail safe + if ($oldnick ne $nick) { + # emit signal + Irssi::signal_emit("event privmsg", $server, $data, + $nick, $address, $target); + + #and stop + Irssi::signal_stop(); + } + } + } + } + +} + +Irssi::settings_add_str('washnicks', 'washnicks_channels', '#fof'); + +sub update_config { + @channels=split(/ /,Irssi::settings_get_str('washnicks_channels')); +} + +update_config(); + +Irssi::signal_add('setup changed', 'update_config'); +Irssi::signal_add('event privmsg', 'wash_nick'); |