1# rk.pl/Irssi/fahren@bochnia.pl 2 3use Irssi 20020300; 4use strict; 5 6use vars qw($VERSION %IRSSI); 7$VERSION = "0.9"; 8%IRSSI = ( 9 authors => "Maciek \'fahren\' Freudenheim", 10 contact => "fahren\@bochnia.pl", 11 name => "Random kicker", 12 description => "/RK [-o | -l | -a] - kicks random nick from ops | lusers | all on channel", 13 license => "GNU GPLv2 or later", 14 changed => "Fri Mar 15 15:09:42 CET 2002" 15); 16 17sub cmd_rk { 18 my ($args, $server, $chan) = @_; 19 20 unless ($chan && $chan->{type} eq "CHANNEL" && $chan->{chanop}) { 21 Irssi::print("%R>>%n You aren't opped / You don't have active channel :/"); 22 return; 23 } 24 25 my @data = split(/ /, $args); 26 my ($rk, @nicks); 27 $rk = 0; 28 29 while ($_ = shift(@data)) { 30 /^-a$/ and $rk = 2, next; 31 /^-o$/ and $rk = 1, next; 32 /^-l$/ and $rk = 0, next; 33 } 34 35 my $channel = $chan->{name}; 36 37 for my $hash ($chan->nicks()) { 38 unless ($rk) { 39 next if $hash->{op}; 40 } elsif ($rk eq 1 && !$hash->{op}) {next}; 41 42 next if ($hash->{nick} eq $server->{nick}); 43 44 push @nicks, $hash; 45 } 46 47 my $nnum = scalar(@nicks); 48 my $victim = $nicks[rand($nnum)]->{nick}; 49 50 $server->send_raw("KICK $channel $victim :\002Random Kick\002"); 51} 52 53Irssi::command_bind('rk', 'cmd_rk'); 54