diff options
Diffstat (limited to 'scripts/cmpchans.pl')
| -rw-r--r-- | scripts/cmpchans.pl | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/scripts/cmpchans.pl b/scripts/cmpchans.pl new file mode 100644 index 0000000..80324b0 --- /dev/null +++ b/scripts/cmpchans.pl @@ -0,0 +1,64 @@ +use strict; +use warnings; + +our $VERSION = "0.5"; +our %IRSSI = ( + authors => 'Jari Matilainen, init[1]@irc.freenode.net', + contact => 'vague@vague.se', + name => 'cmpchans', + description => 'Compare nicks in two channels', + license => 'Public Domain', + url => 'http://vague.se' +); + +use Irssi::TextUI; +use Data::Dumper; + +sub cmd_cmp { + local $/ = " "; + my ($args, $server, $witem) = @_; + my (@channels) = split /\s+/, $args; + + my $server1 = $server; + if ($channels[0] =~ s,(.*?)/,,) { + $server1 = Irssi::server_find_tag($1) || $server; + } + my $chan1 = $server1->channel_find($channels[0]); + if(!$chan1) { + Irssi::active_win()->{active}->print("You have to specify atleast one channel to compare nicks to"); + return; + } + + my @nicks_1; + my @nicks_2; + + @nicks_1 = $chan1->nicks() if(defined $chan1); + + if(not defined $channels[1]) { + @nicks_2 = $witem->nicks(); + } + else { + if ($channels[1] =~ s,(.*?)/,,) { + $server1 = Irssi::server_find_tag($1) || $server; + } + my ($chan2) = $server1->channel_find($channels[1]); + @nicks_2 = $chan2->nicks() if(defined $chan2); + } + + return if(scalar @nicks_1 == 0 || scalar @nicks_2 == 0); + + my %count = (); + my @intersection; + + foreach (@nicks_1, @nicks_2) { $count{$_->{nick}}++; } + foreach my $key (keys %count) { + if($count{$key} > 1) { + push @{\@intersection}, $key; + } + } + + my $common = join(", ", @intersection); + $witem->print("Common nicks: " . $common); +} + +Irssi::command_bind("cmp", \&cmd_cmp); |
