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