mirror of
https://github.com/irssi/irssi.git
synced 2026-08-10 12:23:37 +02:00
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:
parent
788f181ecb
commit
a663d2f674
10 changed files with 142 additions and 222 deletions
|
|
@ -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' );
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue