summaryrefslogtreecommitdiff
path: root/scripts/autorejoin.pl
diff options
context:
space:
mode:
authorTimo Sirainen <cras@irssi.org>2002-02-16 13:06:57 +0000
committercras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564>2002-02-16 13:06:57 +0000
commitb28781c7e67eaef648612f0c05d21aafb8cfe61e (patch)
treef8909e5ce77f4f3c52d078c544b628f087a6b78d /scripts/autorejoin.pl
parent7ebe053ebfefbdd5fbdcada4235a51fadc7fce68 (diff)
downloadirssi-b28781c7e67eaef648612f0c05d21aafb8cfe61e.zip
added /SET autorejoin_channels
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2481 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'scripts/autorejoin.pl')
-rw-r--r--scripts/autorejoin.pl39
1 files changed, 27 insertions, 12 deletions
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');