summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/clones.pl35
1 files changed, 21 insertions, 14 deletions
diff --git a/scripts/clones.pl b/scripts/clones.pl
index a469a575..45fa2033 100644
--- a/scripts/clones.pl
+++ b/scripts/clones.pl
@@ -1,25 +1,32 @@
-# /CLONES - display real name of nick
+# /CLONES - Display clones in the active channel
use Irssi;
use strict;
sub cmd_clones {
- my ($data, $server, $channel) = @_;
- my (%hostnames, $host, @nicks, $nick);
+ my ($data, $server, $channel) = @_;
- @nicks = $channel->nicks();
+ if (!$channel || $channel->{type} ne "CHANNEL") {
+ Irssi::print("No active channel in window");
+ return;
+ }
- foreach $nick (@nicks) {
- $hostnames{$nick->{host}}++;
- }
+ my %hostnames = {};
+ foreach my $nick ($channel->nicks()) {
+ $hostnames{$nick->{host}}++;
+ }
- $channel->print("Clones:");
- foreach $host (keys %hostnames) {
- my $clones = $hostnames{$host};
- if ($clones >= 2) {
- $channel->print("$host: $clones");
- }
- }
+ my $count = 0;
+ foreach my $host (keys %hostnames) {
+ my $clones = $hostnames{$host};
+ if ($clones >= 2) {
+ $channel->print("Clones:") if ($count == 0);
+ $channel->print("$host: $clones");
+ $count++;
+ }
+ }
+
+ $channel->print("No clones in channel") if ($count == 0);
}
Irssi::command_bind('clones', 'cmd_clones');