X-Git-Url: http://git.vpit.fr/?p=perl%2Fscripts%2Fxchat.git;a=blobdiff_plain;f=opers.pl;h=f8d178d59e3d870318c0943976bf487fdc01036b;hp=66c9c0b17974b39253a3c03c8b2e7c0e93eb39b5;hb=HEAD;hpb=edd1cbfd1a969e16d8df9988eb448a53c97c02e7 diff --git a/opers.pl b/opers.pl index 66c9c0b..f8d178d 100755 --- a/opers.pl +++ b/opers.pl @@ -7,7 +7,7 @@ use Xchat qw<:all>; use lib get_info 'xchatdir'; use Xchat::XPI; -use Xchat::XPI::Utils qw; +use Xchat::XPI::Utils qw; our $VERSION = '0.03'; @@ -20,10 +20,10 @@ hook_server '352', sub { my $serv = get_info 'server'; my $nick = $_[0][7]; - return EAT_NONE if $opers{$serv}{$nick}; - $opers{$serv}{$nick} = 1; + return EAT_NONE if $opers{$serv}{irc_lc($nick)}; + $opers{$serv}{irc_lc($nick)} = $nick; - my $host = $_[0][4] . '@' . $_[0][5]; + my $host = $_[0][4] . '@' . strip_code $_[0][5]; my %chans; push @{$chans{$_->{type}}}, $_ for grep $_->{server} eq $serv, get_list 'channels'; @@ -63,7 +63,7 @@ hook_server 'QUIT', sub { my ($nick) = $_[0][0] =~ /^:([^!]+)!/; my $serv = get_info 'server'; - delete $opers{$serv}{$nick}; + delete $opers{$serv}{irc_lc($nick)}; return EAT_NONE; }; @@ -71,9 +71,11 @@ hook_server 'QUIT', sub { sub nick_cb { my ($old, $new) = @{$_[0]}; + $old = irc_lc $old; + my $ops = $opers{get_info 'server'}; if ($ops and $ops->{$old}) { - $ops->{$new} = 1; + $ops->{irc_lc($new)} = $new; delete $ops->{$old}; } @@ -101,11 +103,11 @@ hook_command 'OPSCAN', sub { my ($name, @ops); if ($isnet) { $name = 'network'; - @ops = keys %{$opers{$serv}}; + @ops = values %{$opers{$serv}}; } else { $name = 'channel'; @ops = map $_->{nick}, - grep $opers{$serv}{$_->{nick}}, + grep $opers{$serv}{irc_lc($_->{nick})}, get_list 'users'; }