1use strict; 2use Irssi 20020217; # Irssi 0.8.0 3use vars qw($VERSION %IRSSI); 4$VERSION = "1.1"; 5%IRSSI = ( 6 authors => "Matti 'qvr' Hiljanen", 7 contact => "matti\@hiljanen.com", 8 name => "wkb", 9 description => "A simple word kickbanner", 10 license => "Public Domain", 11 url => "http://matin.maapallo.org/softa/irssi", 12); 13 14use Irssi; 15 16my @channels = 17 qw(#foo #foo2); 18 19my @words = 20 qw(bad_word bad_word2); 21 22my @gods = 23 qw(qvr other_gods); 24 25sub sig_public { 26 my ($server, $msg, $nick, $address, $target) = @_; 27 28 return if $nick eq $server->{nick}; 29 30 $msg =~ s/[\000-\037]//g; 31 my $rmsg = $msg; 32 $msg = lc($msg); 33 34 # bad word 35 my $nono = 0; 36 foreach (@words) { $nono = 1 if $msg =~ /$_/ } 37 return unless $nono; 38 39 # channel? 40 my $react = 0; 41 foreach (@channels) { $react = 1 if lc($target) eq lc($_) } 42 return unless $react; 43 44 # god-like person? 45 my $jumala = 0; 46 foreach (@gods) { $jumala = 1 if lc($nick) =~ /$_/ } 47 return if $jumala; 48 49 # voiced or op'd? 50 return if $server->channel_find($target)->nick_find($nick)->{op} || $server->channel_find($target)->nick_find($nick)->{voice}; 51 52 $server->command("kickban $target $nick WKB initiated"); 53 Irssi::print("Word kick: Kicking $nick from $target. (He said $rmsg)"); 54} 55 56Irssi::signal_add_last('message public', 'sig_public'); 57 58 59