1# ----------------------------------------------------------------------------- 2# $Id: Time.pm 11365 2008-05-10 14:58:28Z topia $ 3# ----------------------------------------------------------------------------- 4package CTCP::Time; 5use strict; 6use warnings; 7use base qw(Module); 8use Module::Use qw(Tools::DateConvert); 9use Tools::DateConvert; 10use CTCP; 11use Multicast; 12use Config; 13use BulletinBoard; 14 15# ctcp-clientinfo-timeを設定 16BulletinBoard->shared->ctcp_clientinfo_time('TIME'); 17 18sub message_arrived { 19 my ($this,$msg,$sender) = @_; 20 21 if ($sender->isa('IrcIO::Server') && 22 $msg->command eq 'PRIVMSG' && 23 defined $msg->nick) { 24 25 my $ctcp = CTCP::extract($msg); 26 if (defined $ctcp && $ctcp eq 'TIME') { 27 28 my $last = $sender->remark('last-ctcp-replied'); 29 if (!defined $last || time - $last > ($this->config->interval || 3)) { 30 # 前回のCTCP反応から一定時間以上経過している。 31 my $reply = CTCP::make( 32 'TIME :'.Tools::DateConvert::replace('%a, %Y/%m/%d %H:%M:%S %z'), 33 scalar Multicast::detach($msg->nick) 34 ); 35 $sender->send_message($reply); 36 $sender->remark('last-ctcp-replied',time); 37 } 38 } 39 } 40 41 $msg; 42} 43 441; 45 46=pod 47info: CTCP TIMEに応答する。 48default: off 49section: important 50 51# CTCP::Versionのintervalと同じ。 52interval: 3 53=cut 54