以 AnyEvent::XMPP 寫 XMPP (Jabber) 機器人
作者:gugod 發佈於:AnyEvent::XMPP 的實做完整程度實在太 高了,大家快去按個讚。
基本上要使用的是 AnyEvent::XMPP::Client
這個 class,可以用來處理多重帳號登入。
以下是個回聲機器人範例,你跟他說甚麼,他就回你甚麼。同時也處理了自動接受加好友。
帳號部份是以 Google Talk 的帳號為例,jabber server 與 jid domain 不同,需要另行指 定,其他 Jabber 帳號設定不盡相同。
use v5.14;
use AnyEvent;
use AnyEvent::XMPP::Client;
my $cl = AnyEvent::XMPP::Client->new();
$cl->add_account(
'gtalk-account@gmail.com', # account
'flyingpigfloordance', # password
'talk.google.com', # server
5223, # port
# other weird args
{ domain => 'gmail.com', old_style_ssl => 1 }
);
$cl->reg_cb(
message => sub {
my ($client, $account, $message) = @_;
my $r = $message->make_reply();
$r->add_body("ECHO: $message");
$client->send_message($r);
},
contact_request_subscribe => sub {
my ($client, $account, $roster, $contact, $message) = @_;
$contact->send_subscribed;
}
);
$cl->start;
AE::cv->recv;
基本上這樣就可以動了,這,真是太容易了。