use Irssi; use Irssi::Irc; use strict; 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 =~ /^You have been unbanned from/) { $text =~ s/[\x02]//g; $text =~ s/^You have been unbanned from //; $text =~ s/.$//; my $channel = $text; my $chanrec = $server->channel_find($channel); my $password = $chanrec->{key} if ($chanrec); Irssi::print "Rejoining $channel..."; $server->send_raw("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"); } Irssi::signal_add('event kick', 'event_rejoin_kick' ); Irssi::signal_add('event notice', 'event_rejoin_unban' ); Irssi::signal_add('event 474', 'event_unban');