Updated the bundled scripts to their latest version (#143)

Updated the bundled scripts to their latest version (#143)

Removed sb_search.pl which is not contributed into the script archive, I
will poke coekie about it.
This commit is contained in:
Geert Hauwaerts 2015-06-12 19:40:15 +02:00
commit a663d2f674
10 changed files with 142 additions and 222 deletions

View file

@ -1,6 +1,5 @@
# automatically rejoin to channel after kicked
# /SET autorejoin_channels #channel1 #channel2 ...
# automatically rejoin to channel after kick
# delayed rejoin: Lam 28.10.2001 (lam@lac.pl)
# 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
@ -10,43 +9,49 @@ use Irssi;
use Irssi::Irc;
use strict;
use vars qw($VERSION %IRSSI);
$VERSION = "1.00";
$VERSION = "1.0.0";
%IRSSI = (
authors => 'Timo Sirainen',
name => 'autorejoin',
description => 'Automatically rejoin to channel after kicked',
license => 'Public Domain',
changed => 'Sun Mar 10 23:18 EET 2002'
authors => "Timo 'cras' Sirainen, Leszek Matok",
contact => "lam\@lac.pl",
name => "autorejoin",
description => "Automatically rejoin to channel after being kick, after a (short) user-defined delay",
license => "GPLv2",
changed => "10.3.2002 14:00"
);
sub channel_rejoin {
my ($server, $channel) = @_;
# check if channel has password
my $chanrec = $server->channel_find($channel);
my $password = $chanrec->{key} if ($chanrec);
# How many seconds to wait before the rejoin?
# TODO: make this a /setting
my $delay = 5;
# 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");
my @tags;
my $acttag = 0;
sub rejoin {
my ( $data ) = @_;
my ( $tag, $servtag, $channel, $pass ) = split( / +/, $data );
my $server = Irssi::server_find_tag( $servtag );
$server->send_raw( "JOIN $channel $pass" ) if ( $server );
Irssi::timeout_remove( $tags[$tag] );
}
sub event_rejoin_kick {
my ($server, $data) = @_;
my ($channel, $nick) = split(/ +/, $data);
my ( $server, $data ) = @_;
my ( $channel, $nick ) = split( / +/, $data );
return if ($server->{nick} ne $nick);
return if ( $server->{ nick } ne $nick );
# 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;
}
}
# check if channel has password
my $chanrec = $server->channel_find( $channel );
my $password = $chanrec->{ key } if ( $chanrec );
my $rejoinchan = $chanrec->{ name } if ( $chanrec );
my $servtag = $server->{ tag };
Irssi::print "Rejoining $rejoinchan in $delay seconds.";
$tags[$acttag] = Irssi::timeout_add( $delay * 1000, "rejoin", "$acttag $servtag $rejoinchan $password" );
$acttag++;
$acttag = 0 if ( $acttag > 60 );
}
Irssi::settings_add_str('misc', 'autorejoin_channels', '');
Irssi::signal_add('event kick', 'event_rejoin_kick');
Irssi::signal_add( 'event kick', 'event_rejoin_kick' );