X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=opers.pl;h=988a22a7688c3931215ca4cadff123faf57638d1;hb=e764db53b60b217e3d417c6faa60ba9bda6db3ea;hp=4ff5c788cfb677b51e92bc8c95fdceb24b96ce5a;hpb=263b6777b90548951a13bd56419fa911b010eb9b;p=perl%2Fscripts%2Fxchat.git diff --git a/opers.pl b/opers.pl index 4ff5c78..988a22a 100755 --- a/opers.pl +++ b/opers.pl @@ -3,7 +3,7 @@ package Xchat::VPIT::Opers; use strict; use warnings; -use Xchat qw/:all/; +use Xchat qw<:all>; use lib get_info 'xchatdir'; use Xchat::XPI; @@ -15,23 +15,26 @@ my ($ph, %opers); sub print_op { print $ph "\002$_[0]\002 ($_[1]) \002is an IRC operator\n"; 1 } hook_server '352', sub { - return EAT_NONE unless (rindex $_[0][8], '*') >= 0; + return EAT_NONE unless 0 <= rindex $_[0][8], '*'; my $serv = get_info 'server'; my $nick = $_[0][7]; if (!$opers{$serv}{$nick}) { $opers{$serv}{$nick} = 1; my $host = $_[0][4].'@'.$_[0][5]; my %chans; - push @{$chans{$_->{type}}}, $_ for grep { $_->{server} eq $serv } + push @{$chans{$_->{type}}}, $_ for grep $_->{server} eq $serv, get_list 'channels'; my $oldctxt = get_context; - my $onachan = grep { $_ } map { - set_context($_->{context}) && user_info($nick) && print_op($nick, $host) + my $onachan = grep $_, map { + set_context $_->{context} + and user_info $nick + and print_op $nick, $host } @{$chans{2}}; do { - set_context($_->{context}) && print_op($nick, $host) + set_context $_->{context} + and print_op $nick, $host } for ($onachan ? () : @{$chans{1}}), - grep { !nickcmp($_->{channel}, $nick) } @{$chans{3}}; + grep !nickcmp($_->{channel}, $nick), @{$chans{3}}; set_context $oldctxt; } return EAT_NONE; @@ -46,7 +49,7 @@ hook_print 'Disconnected', sub { }; hook_server 'QUIT', sub { - my ($nick) = ($_[0][0] =~ /^:([^!]+)!/); + my ($nick) = $_[0][0] =~ /^:([^!]+)!/; my $serv = get_info 'server'; delete $opers{$serv}{$nick}; return EAT_NONE; @@ -72,11 +75,14 @@ hook_command 'OPSCAN', sub { } my ($chan, $isnet) = (get_info('channel'), 0); for (get_list 'channels') { - if ($_->{type} eq 1 && $_->{channel} eq $chan) { $isnet = 1; last; } + if ($_->{type} eq 1 && $_->{channel} eq $chan) { + $isnet = 1; + last; + } } my ($name, @ops) = ($isnet) ? ('network', keys %{$opers{$serv}}) - : ('channel', map { $_->{nick} } - grep { $opers{$serv}{$_->{nick}} } + : ('channel', map $_->{nick}, + grep $opers{$serv}{$_->{nick}}, get_list 'users'); if (@ops) { print $ph 'IRC operators on this '.$name." : \002@ops\n"; @@ -88,12 +94,14 @@ hook_command 'OPSCAN', sub { help_text => 'OPSCAN, scan for IRC operators in the current channel' }; -$ph = new Xchat::XPI name => 'Operators', - tag => 'Opers', - desc => 'IRC operators scanner', - author => 'Vincent Pit (VPIT)', - email => 'perl@profvince.com', - url => 'http://www.profvince.com', - unload => sub { undef %opers; }; +$ph = Xchat::XPI->new( + name => 'Operators', + tag => 'Opers', + desc => 'IRC operators scanner', + author => 'Vincent Pit (VPIT)', + email => 'perl@profvince.com', + url => 'http://www.profvince.com', + unload => sub { undef %opers }, +); 1;