From: tomaw Date: Mon, 30 Jan 2006 23:27:30 +0000 (+0100) Subject: [banaffects][#7] version 0.2 X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=ca45d870929c25f992d8f85efd2bde22090b356f;p=irssi-scripts.irssi.org.git [banaffects][#7] version 0.2 --- diff --git a/scripts/banaffects.pl b/scripts/banaffects.pl new file mode 100644 index 0000000..ff36ddb --- /dev/null +++ b/scripts/banaffects.pl @@ -0,0 +1,55 @@ +use strict; +use Irssi; +use Irssi::Irc; + +use vars qw($VERSION %IRSSI); +$VERSION = "0.2"; +%IRSSI = ( + authors => 'Valentin Batz', + contact => 'senneth@irssi.org', + name => 'banaffects', + description => 'shows affected nicks by a ban on a new ban', + url => 'http://www.oberkommando.org/~senneth/irssi/scripts/', + licence => 'GPLv2', + revision => '$LastChangedRevision: 369 $', + changed => '$LastChangedDate: 2006-01-31 22:35:03 +0100 (Di, 31 Jan 2006) $', + version => $VERSION, +); + +Irssi::theme_register([ 'ban_affects', ' %K-%r-%R-%n Ban {hilight $0} affects: {hilight $1-}']); + +sub ban_new() { + #print "@_"; + my ($chan, $ban) = @_; + return unless $chan; + my $server = $chan->{server}; + my $banmask = $ban->{ban}; + my $window = $server->window_find_item($chan->{name}); + my @matches; + foreach my $nick ( sort ( $chan->nicks() ) ) { + if (Irssi::mask_match_address( $banmask, $nick->{nick}, $nick->{host} )) { + push (@matches, $nick->{nick}); + } + } + my $nicks = join(", ", @matches); + $window->printformat(MSGLEVEL_CRAP, 'ban_affects', $banmask, $nicks) if ($nicks ne ''); +} + +Irssi::signal_add('ban new', \&ban_new); + +sub test_ban() { + my ($arg, $server, $witem) = @_; + return unless (defined $witem && $witem->{type} eq 'CHANNEL'); + my $chan = $server->channel_find($witem->{name}); + my @matches; + foreach my $nick ( sort ( $chan->nicks() ) ) { + if (Irssi::mask_match_address( $arg, $nick->{nick}, $nick->{host} )) { + push (@matches, $nick->{nick}); + } + } + my $nicks = join(", ", @matches); + $witem->printformat(MSGLEVEL_CRAP, 'ban_affects', $arg, $nicks) if ($nicks ne ''); +} + + +Irssi::command_bind('banaffects', \&test_ban);