# /OWNAGE # 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 = '20180715'; %IRSSI = ( authors => '', contact => '', name => 'ownage', description => 'shows how many channels you\'re joined and how many in them you\'re op, and how many nicks are in those channels', 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' );