Added SILC Thread Queue API
[runtime.git] / apps / irssi / scripts / clones.pl
1 # /CLONES - Display clones in the active channel
2 # Modified by Roi Dayan. dejavo@punkass.com
3
4 use strict;
5
6 sub cmd_clones {
7   my ($data, $server, $channel) = @_;
8   my $min_show_count = ($data =~ /^[0-9]+$/) ? $data : 2;
9
10   if (!$channel || $channel->{type} ne "CHANNEL") {
11     Irssi::print("No active channel in window");
12     return;
13   }
14
15   my %hostnames = {};
16   my %hostnicks = {};
17   my @hosttmp = {};
18   foreach my $nick ($channel->nicks()) {
19     my @hosttmp = split(/\@/,$nick->{host});
20     $hostnames{$hosttmp[1]}++;
21     $hostnicks{$hosttmp[1]} = $hostnicks{$hosttmp[1]}.$hostnames{$hosttmp[1]}.". ".$nick->{nick}."!".$nick->{host}."\n";
22     $hostnicks{$hosttmp[1]} =~ s/^,//;
23 #    $hostnicks{$hosttmp[1]} =~ s/\n$//;
24   }
25   
26   foreach my $nick (keys %hostnicks) {
27     $hostnicks{$nick} =~ s/\n$//;
28   }
29
30   my $count = 0;
31   foreach my $host (keys %hostnames) {
32     my $clones = $hostnames{$host};
33     if ($clones >= $min_show_count) {
34       $channel->print("Clones:") if ($count == 0);
35       $channel->print("$host: $clones $hostnicks{$host}");
36       $count++;
37     }
38   }
39
40   $channel->print("No clones in channel") if ($count == 0);
41 }
42
43 Irssi::command_bind('clones', 'cmd_clones');