#!/usr/bin/perl
 
 
 
use strict;
 
use utf8;
 
use AnyEvent;
 
use AnyEvent::XMPP::Client;
 
use AnyEvent::XMPP::IM::Account;
 
use AnyEvent::XMPP::Ext::Disco;
 
use AnyEvent::XMPP::Ext::Version;
 
use AnyEvent::
XMPP::
Namespaces qw/xmpp_ns/;
  
# use diagnostics;
 
 
 
BEGIN { $ENV{PROTOCOL_OTR_ENABLE_QUICK_RANDOM} = 1 }
 
 
 
use Protocol::OTR;
 
 
 
 
 
my $jid="robot\@domena.tld";
 
my $pw='hasełkorobota'; 
 
 
 
my $jid2="robot\@drugadomena.tld";
 
my $pw2='hasełkoxmpp'; 
 
 
 
my $j       = AnyEvent->condvar;
 
my $konto1  = AnyEvent::XMPP::Client->new( debug => 0 );
 
my $konto2  = AnyEvent::XMPP::Client->new( debug => 0 );
 
 
 
my $disco   = AnyEvent::XMPP::Ext::Disco->new;
 
 
 
# my $otr = Protocol::OTR->new({
 
#              privkeys_file => "/var/lib/robot/otr.private_key",
 
#           contacts_file => "/var/lib/robot/otr.fingerprints",
 
#          instance_tags_file => "/var/lib/robot/otr.instance_tags",
 
#          }
 
#      );
 
 
 
# my $act = $otr->account( $jid, 'prpl-jabber' );
 
# my $act2 = $otr->account( $jid2, 'prpl-jabber' );
 
 
 
$konto1 ->add_extension($disco);
 
$konto1 ->
set_presence( undef, 
'Robocik melduje posłusznie pełną gotowość bojową ;)...', 
1 );
  
 
 
 
 
$konto2 ->add_extension($disco);
 
$konto2 ->
set_presence( undef, 
'Robocik melduje posłusznie pełną gotowość bojową ;)...', 
1 );
  
 
 
$konto1 ->add_account( $jid, $pw );
 
print "connecting to $jid...\n";
  
 
 
$konto2 ->add_account( $jid2, $pw2);
 
print "connecting to $jid2...\n";
  
 
 
$konto1->reg_cb(
 
    session_ready => sub {
 
        my ( $account, $acc ) = @_;
 
        
 
    },
 
      print "Robot jest połączony...;\) \n";
  
   },
 
   message => sub {
 
    my ($cl, $acc, $msg) = @_;
 
    my $from = $msg->from;
 
    my $message = $msg ->any_body; 
 
    my $repl = $msg ->make_reply;
 
    $repl->add_body ( "Robot usłyszał:  $message\n");
 
    $repl->send;
 
      print "\nRobot - połącznie od:  $from\n";
  
      print "Robot usłyszał:  $message\n";
  
   },
 
     contact_request_subscribe => sub {
 
        my ( $account, $acc, $roster, $contact ) = @_;
 
        $contact->send_subscribed;
 
        warn "Subscribed to " . 
$contact->
jid . 
"\n";
  
    },
 
    error => sub {
 
        my ( $konto1, $acc, $error ) = @_;
 
        warn "Error encountered: " . 
$error->
string . 
"\n";
  
        $j->broadcast;
 
    },
 
    disconnect => sub {
 
        warn "Got disconnected: [@_]\n";
  
        $j->broadcast;
 
    }, 
 
);
 
 
 
$konto2->reg_cb(
 
    session_ready => sub {
 
        my ( $account, $acc ) = @_;
 
        
 
    },
 
      print "XMPP jest połączony...;\)\n";
  
   },
 
   message => sub {
 
    my ($cl, $acc, $msg) = @_;
 
    my $from = $msg->from;
 
    my $message = $msg ->any_body; 
 
    if ($message ne ""){
 
                my $repl = $msg ->make_reply;
 
                $repl->add_body ( "XMPP usłyszał: $message\n");
 
                $repl->send;
 
                print "\nXMPP - połącznie od:  $from\n";
  
                print "XMPP usłyszał:  $message\n";
  
         }
 
   },
 
     contact_request_subscribe => sub {
 
        my ( $account, $acc, $roster, $contact ) = @_;
 
        $contact->send_subscribed;
 
        warn "Subscribed to " . 
$contact->
jid . 
"\n";
  
    },
 
    error => sub {
 
        my ( $konto1, $acc, $error ) = @_;
 
        warn "Error encountered: " . 
$error->
string . 
"\n";
  
        $j->broadcast;
 
    },
 
    disconnect => sub {
 
        warn "Got disconnected: [@_]\n";
  
        $j->broadcast;
 
    }, 
 
);
 
 
 
 
 
$konto1 ->start;
 
$konto2 ->start;
 
print "Robocik melduje pełną gotowość bojową :\)\n";
  
 
 
 
 
$j->wait;
 
 
 
 
  
Źródło: