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