summaryrefslogtreecommitdiffstats
path: root/scripts/ownage.pl
blob: 363c0b36939efa1dd3bfe26552d2cb362bf4f39f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# /OWNAGE [<output to channel>]
# shows how many channels you're joined and how many in them you're op, and
# how many nicks are in those channels (not including you)

use strict;
use vars qw($VERSION %IRSSI);

use Irssi;
$VERSION = '20071209';
%IRSSI = (
    authors     => '',
    contact     => '',
    name        => '',
    description => '',
    license     => '',
    commands    => 'ownage',
);

sub cmd_ownage {
    my $chans   = 0;
    my $opchans = 0;
    my $nicks   = 0;
    my $opnicks = 0;

    foreach my $channel ( Irssi::channels() ) {
        $chans++;
        if ( $channel->{chanop} ) {
            $opchans++;
            my @channicks = $channel->nicks();
            $nicks += ( scalar @channicks ) - 1;

            $opnicks--;    # don't count youself
            foreach my $nick (@channicks) {
                $opnicks++ if $nick->{op};
            }
        }
    }
    my ( undef, undef, $dest ) = @_;
    my $text =
      "@" . "$opchans / $chans : $nicks nicks (of which $opnicks are ops)";
    if ( $dest && ( $dest->{type} eq "CHANNEL" || $dest->{type} eq "QUERY" ) ) {
        $dest->command("msg $dest->{name} $text");
    }
    else {
        Irssi::print $text, MSGLEVEL_CLIENTCRAP;
    }
}

Irssi::command_bind( 'ownage', 'cmd_ownage' );