1use Irssi; 2use Irssi::UI; 3use Irssi::TextUI; 4use vars qw($VERSION %IRSSI); 5 6$VERSION = '0.1'; 7%IRSSI = ( 8 author => 'meh', 9 contact => 'meh@schizofreni.co', 10 name => 'Query connection notification', 11 description => 'Notify in the query window when the nick connects', 12 license => 'WTFPL', 13); 14 15Irssi::theme_register([ 16 'connect', '{channick_hilight $0} {chanhost_hilight $1} has connected' 17]); 18 19my %quit; 20 21Irssi::signal_add 'message join' => sub { 22 my ($server, $channel, $nick, $address) = @_; 23 24 if ($quit{"$server->{tag}:$nick"}) { 25 delete $quit{"$server->{tag}:$nick"}; 26 27 foreach $query (Irssi::queries()) { 28 if ($query->{server_tag} eq $server->{tag} && $query->{name} eq $nick) { 29 $query->printformat(MSGLEVEL_JOINS, 'connect', $nick, $address); 30 31 break; 32 } 33 } 34 } 35}; 36 37Irssi::signal_add 'message quit' => sub { 38 my ($server, $nick, $address, $reason) = @_; 39 40 $quit{"$server->{tag}:$nick"} = 1; 41}; 42 43Irssi::signal_add 'query created' => sub { 44 my ($query, $automatic) = @_; 45 46 foreach $channel ($query->{server}->channels) { 47 foreach $nick ($channel->nicks) { 48 if ($nick eq $query->{name}) { 49 return; 50 } 51 } 52 } 53 54 $quit{"$query->{server}->{tag}:$query->{name}"} = 1; 55}; 56 57Irssi::signal_add 'query destroyed' => sub { 58 my ($query) = @_; 59 60 delete $quit{"$query->{server}->{tag}:$query->{name}"}; 61}; 62 63Irssi::signal_add 'message private' => sub { 64 my ($server, $msg, $nick, $address) = @_; 65 66 delete $quit{"$server->{tag}:$nick"}; 67}; 68