aboutsummaryrefslogblamecommitdiffstats
path: root/feature-tests/rejoin-unban.pl
blob: ea4322067438c49a9f174661447c30ff35907def (plain) (tree)


















































































                                                                     
use strict;
use warnings;

use Data::Dumper;

# not sure of hte original source author, but probably based on
# autorejoin.pl: http://scripts.irssi.org/html/autorejoin.pl.html

our $VERSION = '0.1';
our %IRSSI = (
              authors     => 'shabble, dunno original source',
              contact     => 'shabble+irssi@metavore.org',
              name        => '',
              description => '',
              license     => 'GPLv2',
              updated     => '$DATE'
             );


use Irssi;
use Irssi::Irc;


sub event_rejoin_kick  {
    my ($server, $data) = @_;
    my ($channel, $nick) = split(/ +/, $data);

    return if ($server->{nick} ne $nick);

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

    Irssi::print "Rejoining $channel...";

    $server->send_raw("JOIN $channel $password");
}

sub event_rejoin_unban {
    my ($server, $data, $nick, $address) = @_;
    my ($target, $text) = $data =~ /^(\S*)\s:(.*)/;

    if ($text =~ m/(\w+) has been unbanned from (#?\w+)/) {
        my ($nick, $channel) = ($1, $2);
        my $chanrec = $server->channel_find($channel);
        my $password = $chanrec->{key} if ($chanrec);

        Irssi::print "Rejoining $channel...";
        $server->command("JOIN $channel $password");
    }
}

sub event_unban {
    my ($server, $data) = @_;
    my ($nick, $channel) = split(/ +/, $data);

    Irssi::print "Attempting unban on $channel...";
    $server->send_raw("PRIVMSG ChanServ unban $channel");
}

sub sig_msg_kick {
    my ($server, $channel, $victim, $kicker, $addr, $reason) = @_;

}

sub sig_msg_notice {
    my ($server, $msg, $nick, $addr, $target) = @_;

}

sub sig_event_joinfail_banned {

}

sub init {

    Irssi::signal_add('message kick',   'sig_msg_kick');
    Irssi::signal_add('message notice', 'sig_msg_notice');
    Irssi::signal_add('event 474',      'sig_event_joinfail_banned');

}

init();