# when kicked from a channel, unban yourself, rejoin, and /kill the fucker
# who did this to you


use Irssi;
use Irssi::Irc;
use strict;
use vars qw($VERSION %IRSSI);

$VERSION = "2.00";
%IRSSI = (
    authors     => 'toast',
    name        => 'punishkick',
    description => 'Make those kickng bastards pay',
    license     => 'Public Domain',
    changed	=> 'Tue Jul  1 17:33:44 PDT 2003'
);

sub channel_rejoin {
  my ($server, $channel) = @_;

  # check if channel has password
  my $chanrec = $server->channel_find($channel);
  my $password = $chanrec->{key} if ($chanrec);

  # Now we join
  $server->send_raw("JOIN $channel $password");
}

sub event_punish {
  my ($server, $data, $kicker, $mask) = @_;
  my ($channel, $nick, $reason) = split(/ +/, $data);

  # No need to punish kicks if it isn't us being kicked
  return if ($server->{nick} ne $nick);

  # And make those fuckers pay (let's not kill ourselves though)
  if(Irssi::settings_get_bool('kill_when_kicked') && 
  	$kicker ne $nick){
    Irssi::print("Kicked by $kicker, LAUNCHING WMD!");
    $server->command("KILL $kicker :asshat");
  }

  channel_rejoin($server, $channel);
}

sub event_unban {
  my ($server, $args, $cruft) = @_;

  my ($nick, $channel, @crap) = split(/ +/, $args);

  Irssi::print("Uh oh, banned in $channel");
  
  #unban ourselves
  #$server->command("MSG Chanserv unban $channel $nick");

  sleep(1);

  #and rejoin the channel
  channel_rejoin($server, $channel);
}


Irssi::signal_add('event kick', 'event_punish');
Irssi::signal_add('event 474', 'event_unban');

Irssi::settings_add_bool($IRSSI{name}, 'kill_when_kicked', 0);
