diff options
Diffstat (limited to 'scripts/bitlbee_join_notice-pre-3.0.pl')
| -rw-r--r-- | scripts/bitlbee_join_notice-pre-3.0.pl | 95 | 
1 files changed, 95 insertions, 0 deletions
| diff --git a/scripts/bitlbee_join_notice-pre-3.0.pl b/scripts/bitlbee_join_notice-pre-3.0.pl new file mode 100644 index 0000000..a64af60 --- /dev/null +++ b/scripts/bitlbee_join_notice-pre-3.0.pl @@ -0,0 +1,95 @@ +#CHANGELOG: +# +#28-11-2004: +#it gives a join message in a query if a user joins &bitlbee and you hve a query open with that person. +# +#/statusbar window add join_notice +#use Data::Dumper; + +use strict; +#use Irssi::TextUI; +#use Irssi::Themes; + +use vars qw($VERSION %IRSSI); + +$VERSION = '1.2'; +%IRSSI = ( +    authors     => 'Tijmen "timing" Ruizendaal', +    contact     => 'tijmen.ruizendaal@gmail.com', +    name        => 'Bitlbee_join_notice-pre-3.0', +    description => '	1. Adds an item to the status bar wich shows [joined: <nicks>] when someone is joining &bitlbee. +    			2. Shows join messages in the query. +    			(For bitlbee 1.2.x)', +    license => 'GPLv2', +    url     => 'http://the-timing.nl/stuff/irssi-bitlbee', +    changed => '2006-10-27', +); +my %online; +my %tag; +my $bitlbee_channel= "&bitlbee"; +my $bitlbee_server_tag="localhost"; + +get_channel(); + +Irssi::signal_add_last 'channel sync' => sub { +        my( $channel ) = @_; +        if( $channel->{topic} eq "Welcome to the control channel. Type \x02help\x02 for help information." ){ +                $bitlbee_server_tag = $channel->{server}->{tag}; +                $bitlbee_channel = $channel->{name}; +        } +}; + +sub get_channel { +        my @channels = Irssi::channels(); +        foreach my $channel(@channels) { +                if ($channel->{topic} eq "Welcome to the control channel. Type \x02help\x02 for help information.") { +                        $bitlbee_channel = $channel->{name}; +                        $bitlbee_server_tag = $channel->{server}->{tag}; +			return 1; +                } +        } +	return 0; +} + +sub event_join { +  my ($server, $channel, $nick, $address) = @_; +  if ($channel eq ":$bitlbee_channel" && $server->{tag} eq $bitlbee_server_tag){ +    $online{$nick} = 1; +    Irssi::timeout_remove($tag{$nick}); +    $tag{$nick} = Irssi::timeout_add(7000, 'empty', $nick); +    Irssi::statusbar_items_redraw('join_notice'); +    my $window = Irssi::window_find_item($nick); +    if($window){ +      $window->printformat(MSGLEVEL_JOINS, 'join', $nick, $address, $bitlbee_channel);  +    } +  } +} +sub join_notice { +  my ($item, $get_size_only) = @_;  +  my $line; +  foreach my $key (keys(%online) ) +  { +    $line = $line." ".$key; +  } +  if ($line ne "" ){ +    $item->default_handler($get_size_only, "{sb joined:$line}", undef, 1); +    $line = ""; +  }else{ +    $item->default_handler($get_size_only, "", undef, 1); +  }  +} +sub empty{ +  my $nick = shift; +  delete($online{$nick}); +  Irssi::timeout_remove($tag{$nick}); +  Irssi::statusbar_items_redraw('join_notice'); +} + +Irssi::signal_add("event join", "event_join"); +Irssi::statusbar_item_register('join_notice', undef, 'join_notice'); +Irssi::statusbars_recreate_items(); +Irssi::theme_register([ +  'join', '{channick_hilight $0} {chanhost $1} has joined {channel $2}', +]); + + | 
