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