From b28781c7e67eaef648612f0c05d21aafb8cfe61e Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Sat, 16 Feb 2002 13:06:57 +0000 Subject: added /SET autorejoin_channels git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2481 dbcabf3a-b0e7-0310-adc4-f8d773084564 --- scripts/autorejoin.pl | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) (limited to 'scripts/autorejoin.pl') diff --git a/scripts/autorejoin.pl b/scripts/autorejoin.pl index bbbb0ed8..3738f5fc 100644 --- a/scripts/autorejoin.pl +++ b/scripts/autorejoin.pl @@ -1,26 +1,41 @@ # automatically rejoin to channel after kicked +# /SET autorejoin_channels #channel1 #channel2 ... + # NOTE: I personally don't like this feature, in most channels I'm in it # will just result as ban. You've probably misunderstood the idea of /KICK # if you kick/get kicked all the time "just for fun" ... -use Irssi; -use Irssi::Irc; use strict; +use Irssi::Irc; -sub event_rejoin_kick { - my ($server, $data) = @_; - my ($channel, $nick) = split(/ +/, $data); +sub channel_rejoin { + my ($server, $channel) = @_; - return if ($server->{nick} ne $nick); + # check if channel has password + my $chanrec = $server->channel_find($channel); + my $password = $chanrec->{key} if ($chanrec); + + # We have to use send_raw() because the channel record still + # exists and irssi won't even try to join to it with command() + $server->send_raw("JOIN $channel $password"); +} + +sub event_rejoin_kick { + my ($server, $data) = @_; + my ($channel, $nick) = split(/ +/, $data); - # check if channel has password - my $chanrec = $server->channel_find($channel); - my $password = $chanrec->{key} if ($chanrec); + return if ($server->{nick} ne $nick); - # We have to use send_raw() because the channel record still - # exists and irssi won't even try to join to it with command() - $server->send_raw("JOIN $channel $password"); + # check if we want to autorejoin this channel + my @chans = split(/ ,/, Irssi::settings_get_str('autorejoin_channels')); + foreach my $chan (@chans) { + if (lc($chan) eq lc($channel)) { + channel_rejoin($server, $channel); + last; + } + } } +Irssi::settings_add_str('misc', 'autorejoin_channels', ''); Irssi::signal_add('event kick', 'event_rejoin_kick'); -- cgit v1.2.3