
这是我的来源:http://pastebin.com/03Habbvh
# set jabber bot callbacks$jabberBot->SetMessageCallBacks(chat=>\&chat);$jabberBot->SetPresenceCallBacks(available=>\&welcome,unavailable=>\&killBot);$jabberBot->SetCallBacks(receive=>\&prnt,iq=>\&gotIQ);$jabberBot->PresenceSend(type=>"available");$jabberBot->Process(1);sub welcome{ print "Welcome!\n"; $jabberBot->MessageSend(to=>$jbrBoss->GetJID(),subject=>"",body=>"Hello There!",type=>"chat",priority=>10); &keepItGoing;}sub prnt{ print $_[1]."\n";}#$jabberBot->MessageSend(to=>$jbrBoss->GetJID(),body=>"Hello There! Global...",priority=>10);#$jabberBot->Process(5);#&keepItGoing;sub chat{ my ($sessionID,$msg) = @_; $dump->pl2xml($msg); if($msg->GetType() ne 'get' && $msg->GetType() ne 'set' && $msg->GetType() ne '') { my $jbrCmd = &trimspaces($msg->Getbody()); my $dbQry = $dbh->prepare("SELECT command,ackNowledgement FROM commands WHERE message = '".lc($jbrCmd)."'"); $dbQry->execute(); if($dbQry->rows() > 0 && $jbrCmd !~ /^insert/si) { my $ref = $dbQry->fetchrow_hashref(); $dbQry->finish(); $jabberBot->MessageSend(to=>$msg->GetFrom(),body=>$ref->{'ackNowledgement'},priority=>10); eval $ref->{'command'}; &keepItGoing; } else { $jabberBot->MessageSend(to=>$msg->GetFrom(),body=>"I dIDn't understand you!",priority=>10); $dbQry->finish(); &keepItGoing; } }}sub gotIQ{ print "iq\n";}sub trimspaces{ my $string = $_[0]; $string =~ s/^\s+//; #remove leading spaces $string =~ s/\s+$//; #remove trailing spaces return $string;}sub keepItGoing{ print "keepItGoing!\n"; my $proc = $jabberBot->Process(1); while(defined($proc) && $proc != 1) { $proc = $jabberBot->Process(1); }}sub killBot{ print "killing\n"; $jabberBot->MessageSend(to=>$_[0]->GetFrom(),body=>"Logging Out!",priority=>10); $jabberBot->Process(1); $jabberBot->disconnect(); exit;}解决方法 POE有一些非常好的事件框架.我不知道Jabber(POE :: Component :: Jabber)有多好,但它可能值得一看. 总结 以上是内存溢出为你收集整理的如何让我的Perl Jabber机器人成为事件驱动程序?全部内容,希望文章能够帮你解决如何让我的Perl Jabber机器人成为事件驱动程序?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)