1# -----------------------------------------------------------------------------
2# $Id: ShowNick.pm 11365 2008-05-10 14:58:28Z topia $
3# -----------------------------------------------------------------------------
4# copyright (C) 2004 Topia <topia@clovery.jp>. all rights reserved.
5package Client::ShowNick;
6use strict;
7use warnings;
8use base qw(Module);
9
10sub message_io_hook {
11    my ($this,$msg,$io,$type) = @_;
12
13    if ($io->isa('IrcIO::Client')) {
14	if ($type eq 'in' &&
15		($msg->command eq 'WHOIS' || $msg->command eq 'WHO') &&
16		    RunLoop->shared_loop->multi_server_mode_p) {
17	    my $local_nick = RunLoop->shared_loop->current_nick;
18	    if ($msg->param(0) eq $local_nick) {
19		my $prefix = RunLoop->shared_loop->sysmsg_prefix(qw(priv system));
20		map {
21		    # ローカルnickとグローバルnickが食い違っていたらその旨を伝える。
22		    # 接続しているネットワーク名を全部表示する
23		    my $network_name = $_->network_name;
24		    my $global_nick = $_->current_nick;
25		    if ($global_nick ne $local_nick) {
26			$io->send_message(
27			    $this->construct_irc_message(Prefix => $prefix,
28					   Command => 'NOTICE',
29					   Params => [$local_nick,
30						      "*** Your global nick in $network_name is currently '$global_nick'."]));
31		    } else {
32			$io->send_message(
33			    $this->construct_irc_message(Prefix => $prefix,
34					   Command => 'NOTICE',
35					   Params => [$local_nick,
36						      "*** Your global nick in $network_name is same as local nick."]));
37		    }
38		} RunLoop->shared_loop->networks_list;
39	    }
40	}
41    }
42    return $msg;
43}
44
45sub client_attached {
46    my ($this,$client) = @_;
47
48    if (RunLoop->shared_loop->multi_server_mode_p) {
49	my $current_nick = RunLoop->shared_loop->current_nick;
50	map {
51	    # ローカルnickとグローバルnickが同じネットワークについてその旨を伝える。
52	    # (接続しているチャンネルを表示する、程度の用途)
53	    my $network_name = $_->network_name;
54	    my $global_nick = $_->current_nick;
55	    if ($global_nick eq $current_nick) {
56		$client->send_message(
57		    $this->construct_irc_message(
58			Prefix => RunLoop->shared_loop->sysmsg_prefix(qw(priv system)),
59			Command => 'NOTICE',
60			Params => [$current_nick,
61				   "*** Your global nick in $network_name is same as local nick."]));
62	    }
63	} RunLoop->shared_loop->networks_list;
64    }
65}
66
67
681;
69=pod
70info: show network
71default: off
72=cut
73