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