2000-02-25 12:03:17 -05:00
|
|
|
# automatically rejoin to channel after kicked
|
|
|
|
|
2002-02-16 08:06:57 -05:00
|
|
|
# /SET autorejoin_channels #channel1 #channel2 ...
|
|
|
|
|
2000-02-25 12:03:17 -05:00
|
|
|
# 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
|
2000-03-02 13:09:13 -05:00
|
|
|
# if you kick/get kicked all the time "just for fun" ...
|
2000-02-25 12:03:17 -05:00
|
|
|
|
2002-03-10 16:28:38 -05:00
|
|
|
use Irssi;
|
2002-02-16 08:06:57 -05:00
|
|
|
use Irssi::Irc;
|
2002-03-10 16:28:38 -05:00
|
|
|
use strict;
|
|
|
|
use vars qw($VERSION %IRSSI);
|
|
|
|
|
|
|
|
$VERSION = "1.00";
|
|
|
|
%IRSSI = (
|
|
|
|
authors => 'Timo Sirainen',
|
|
|
|
name => 'autorejoin',
|
|
|
|
description => 'Automatically rejoin to channel after kicked',
|
|
|
|
license => 'Public Domain',
|
|
|
|
changed => 'Sun Mar 10 23:18 EET 2002'
|
|
|
|
);
|
2000-02-25 12:03:17 -05:00
|
|
|
|
2002-02-16 08:06:57 -05:00
|
|
|
sub channel_rejoin {
|
|
|
|
my ($server, $channel) = @_;
|
2000-04-28 07:00:53 -04:00
|
|
|
|
2002-02-16 08:06:57 -05:00
|
|
|
# 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);
|
2000-02-25 12:03:17 -05:00
|
|
|
|
2002-02-16 08:06:57 -05:00
|
|
|
return if ($server->{nick} ne $nick);
|
2000-02-25 12:03:17 -05:00
|
|
|
|
2002-02-16 08:06:57 -05:00
|
|
|
# check if we want to autorejoin this channel
|
2005-05-09 11:18:24 -04:00
|
|
|
my @chans = split(/[ ,]+/, Irssi::settings_get_str('autorejoin_channels'));
|
2002-02-16 08:06:57 -05:00
|
|
|
foreach my $chan (@chans) {
|
|
|
|
if (lc($chan) eq lc($channel)) {
|
|
|
|
channel_rejoin($server, $channel);
|
|
|
|
last;
|
|
|
|
}
|
|
|
|
}
|
2000-02-25 12:03:17 -05:00
|
|
|
}
|
|
|
|
|
2002-02-16 08:06:57 -05:00
|
|
|
Irssi::settings_add_str('misc', 'autorejoin_channels', '');
|
2000-02-25 12:03:17 -05:00
|
|
|
Irssi::signal_add('event kick', 'event_rejoin_kick');
|