Re: Devel/Perl/MSN.pm (Bot-Depot realesed) - cubic9.com
2005.01.19 Wednesday 12:38
MSN.pm (Bot-Depot realesed)
MSN Messenger用Perlモジュール。
妖怪うらがえしのサンプル
Devel/Perl/MSN.pm (Bot-Depot realesed) - cubic9.com[googleキャッシュ]
このサンプルはMSN.pm (Bot-Depot realesed)のライブラリを使っています。
メッセンジャー用モジュールがいろいろ紹介されてます。
Roblog::読兎の中の人から教えてもらった方法は、MSN.pm (Bot-Depot realesed)を使う方法で私もうしぶろぐの無脳をMSN対応したときはこれを使いました。
以下サンプル
ポート18180への通信は自作の人工無脳うしサーバとのやりとりです。
ポート18180への通信は自作の人工無脳うしサーバとのやりとりです。
use MSN;
use Jcode;
#---------------------------------------
use Socket;
use FileHandle;
# デフォルトホストの設定
$host = 'localhost';
$port = 18180;
# ソケットの生成
$ip = inet_aton($host) || die "host($host) not found.\n";
$sockaddr = pack_sockaddr_in($port, $ip);
socket(SOCKET, PF_INET, SOCK_STREAM, 0) || die "socket error.\n";
# ソケットの接続
connect(SOCKET, $sockaddr) || die "connect $con_host $con_port error.\n";
autoflush SOCKET (1);
#---------------------------------------
my $msn = MSN->new( Handle => "yomiusi\@hotmail.com",
Password => "ひみつ",
Host => 'messenger.hotmail.com',
Port => 1863
);
$msn->set_handler(Message => \&on_message);
$msn->connect();
while(1) {
$msn->do_one_loop
}
# 終了処理
close(SOCKET);
sub on_message {
my ($self, $email, $name, $msg) = @_;
$msg =~ s/<(|B%n)+?>//g;
my $utf8_name = Jcode->new($name, 'utf8')->euc;
my $str = Jcode->new($msg, 'utf8')->euc;
if ($str ne "") {
chomp($str);
print SOCKET "msn talk " . $str . "\n";
chomp($usimsg=<SOCKET>);
@usimsg = split(" ", $usimsg, 2);
$output = @usimsg[1];
$utf8_str = Jcode->new($output, 'euc')->utf8;
$self->sendmsg($utf8_str);
}
open(OUT, ">> ./msnlog.txt");
print OUT "$utf8_name:$msg";
print OUT "B%n\n";
print OUT "$utf8_str";
print OUT "B%n\n";
close(OUT);
}

Comments
Comment Form