From 2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1 Mon Sep 17 00:00:00 2001 From: Alexander Færøy Date: Sat, 31 May 2014 13:10:46 +0200 Subject: Import scripts from scripts.irssi.org --- scripts/nickban.pl | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 scripts/nickban.pl (limited to 'scripts/nickban.pl') diff --git a/scripts/nickban.pl b/scripts/nickban.pl new file mode 100644 index 0000000..c24e579 --- /dev/null +++ b/scripts/nickban.pl @@ -0,0 +1,50 @@ +$VERSION = "1.1"; +%IRSSI = ( + authors => "Roeland 'Trancer' Nieuwenhuis", + contact => "irssi\@trancer.nl", + name => "nickban", + description => "A simple nick banner. If it encounters a nick it bans its host", + license => "Public Domain" +); + +use strict; +use Irssi; + +# The channels the nicks are banned on (on which this script is active) +my @channels = qw(#worldchat #chat-world #php); + +# The banned nicks +my @nicks = qw(evildude evilgirl); + +# Your kickreason +my $kickreason = "Not welcome here."; + +sub nick_banner { + + my($server, $channel, $nick, $address) = @_; + + # Are we opped? + return unless $server->channel_find($channel)->{chanop}; + + # If the nick is a server, stop it. + return if $nick eq $server->{nick}; + + # Is the user a banned nick? + my $nono = 0; + foreach (@nicks) { $nono = 1 if lc($nick) eq lc($_) } + return unless $nono; + + # Is the user on one of the banned channels? + my $react = 0; + foreach (@channels) { $react = 1 if lc($channel) eq lc($_) } + return unless $react; + + # User voiced or op'd? + # Pretty useless, but ok + return if $server->channel_find($channel)->nick_find($nick)->{op} || $server->channel_find($channel)->nick_find($nick)->{voice}; + + $server->command("kickban $channel $nick $kickreason"); + Irssi::print("Nick banning $nick on $channel. Banned."); +} + +Irssi::signal_add_last('message join', 'nick_banner'); -- cgit v1.2.3