JRuDevels

Jabber Russian Developers Forum.
Log in Register FAQ Memberlist Search JRuDevels Forum Index

JRuDevels Forum Index » Разработка и проектирование [Devel] » Бот на Perl Goto page Previous  1, 2, 3, 4, 5  Next
Post new topic  Reply to topic View previous topic :: View next topic 
PostPosted: Thu Oct 18, 2007 10:51 pm Reply with quote
ipse
Начинающий тестер
Начинающий тестер
Joined: 11 Nov 2006
Posts: 29




Code:
247    print $presence->GetXML(),"\n";
248   
249    my $perezens = $presence->GetXML();
250    my $x = $presence->GetX('http://jabber.org/protocol/muc#user');
251    print $x,"\n";


Quote:
<presence from='perk11@perk11.info/SieJC' to='jabberwocky@kanet.ru/nokia 3320' xml:lang='en'><priority>0</priority><show>xa</show><status>Вот, к примеру, одна подружка Завела себе собачку. Или, скажем, не собачку, А ублюдошного тролля. Через месяц он ей наскучил, Она его послала в жопу. Но тролль персонаж брутальный, Он понимает все буквально...</status><c node='Siemens Native Jabber Client 2.9.C-Z-r1693' ver='Mi45LkMtWjoxNjkzOjE=' xmlns='http://jabber.org/protocol/caps'/></presence>
Use of uninitialized value in print at ./bot.pl line 251 (#1)

Кароч вобще ничего из вышеприведенного не хочет работать.
View user's profile Send private message
PostPosted: Fri Oct 19, 2007 9:54 am Reply with quote
om
Бывалый Жабовод
Бывалый Жабовод
Joined: 26 Sep 2006
Posts: 76
Location: Россия,Тольятти




ipse wrote:
Code:
247    print $presence->GetXML(),"\n";
248   
249    my $perezens = $presence->GetXML();
250    my $x = $presence->GetX('http://jabber.org/protocol/muc#user');
251    print $x,"\n";


Quote:
<presence from='perk11@perk11.info/SieJC' to='jabberwocky@kanet.ru/nokia 3320' xml:lang='en'><priority>0</priority><show>xa</show><status>Вот, к примеру, одна подружка Завела себе собачку. Или, скажем, не собачку, А ублюдошного тролля. Через месяц он ей наскучил, Она его послала в жопу. Но тролль персонаж брутальный, Он понимает все буквально...</status><c node='Siemens Native Jabber Client 2.9.C-Z-r1693' ver='Mi45LkMtWjoxNjkzOjE=' xmlns='http://jabber.org/protocol/caps'/></presence>
Use of uninitialized value in print at ./bot.pl line 251 (#1)

Кароч вобще ничего из вышеприведенного не хочет работать.


А тебя не смутило упоминание http://jabber.org/protocol/muc#user
в методе GetX? Изначальный вопрос у человека был по обработке MUC-презенсов...
View user's profile Send private message Send Jabber-message Visit poster's website HabaHaba - Fast communicate
PostPosted: Fri Oct 19, 2007 9:56 am Reply with quote
om
Бывалый Жабовод
Бывалый Жабовод
Joined: 26 Sep 2006
Posts: 76
Location: Россия,Тольятти




ipse wrote:
Что-то не работает..
Code:
Undefined function GetItem in package Net::Jabber::Presence

Кстати почитал цпан, про Net::Jabber, там тоже ни слова про такую функцию..


не там смотрите, уважаемый Smile
Отличная документация содержится в самом дистрибутиве... Вот выдержка из
man Net::Jabber::Stanza:
Code:
http://jabber.org/protocol/muc#user
         Name                        Type       Get  Set  Remove  Defined  Add
         ==========================  =========  ===  ===  ======  =======  ===
         Alt                         scalar      X    X     X        X
         Password                    scalar      X    X     X        X
         StatusCode                  scalar      X    X     X        X
         Invite                      child       X          X        X      X
         Item                        child       X          X        X      X
         User                        master      X    X

http://jabber.org/protocol/muc#user - invite objects
         Name                        Type       Get  Set  Remove  Defined  Add
         ==========================  =========  ===  ===  ======  =======  ===
         From                        jid         X    X     X        X
         Reason                      scalar      X    X     X        X
         To                          jid         X    X     X        X
         Invite                      master      X    X

http://jabber.org/protocol/muc#user - item objects
         Name                        Type       Get  Set  Remove  Defined  Add
         ==========================  =========  ===  ===  ======  =======  ===
         ActorJID                    jid         X    X     X        X
         Affiliation                 scalar      X    X     X        X
         JID                         jid         X    X     X        X
         Nick                        scalar      X    X     X        X
         Reason                      scalar      X    X     X        X
         Role                        scalar      X    X     X        X
         Item                        master      X    X
View user's profile Send private message Send Jabber-message Visit poster's website HabaHaba - Fast communicate
PostPosted: Fri Oct 19, 2007 8:43 pm Reply with quote
ipse
Начинающий тестер
Начинающий тестер
Joined: 11 Nov 2006
Posts: 29




InPresence обрабатывает не только MUC презенсы. Твой код не работоспособен к сожалению.
View user's profile Send private message
PostPosted: Fri Oct 19, 2007 8:45 pm Reply with quote
om
Бывалый Жабовод
Бывалый Жабовод
Joined: 26 Sep 2006
Posts: 76
Location: Россия,Тольятти




Ты хотел чтобы я за тебя бота написал? Smile))
я тебе показал рабочий код в отдельно взятом вопросе... и ничего более
View user's profile Send private message Send Jabber-message Visit poster's website HabaHaba - Fast communicate
PostPosted: Fri Oct 19, 2007 11:55 pm Reply with quote
ipse
Начинающий тестер
Начинающий тестер
Joined: 11 Nov 2006
Posts: 29




Бота писать не надо, он уже давно написан.
Код не рабочий. Исправь InPresence чтоб он обрабатывал любые презенсы, тогда это будет рабочий код. Эталонный InPresence из JPB выглядит так.
Code:
sub InPresence {
    shift;
    $Debug->Log2("InPresence .. got: ", @_);
    my $presence = shift; #new Net::Jabber::Presence(@_);
    return unless defined $presence;
    return unless $presence->GetFrom("jid");
    $Con->PresenceDBParse($presence);
    my $from = $presence->GetFrom() || "";
    my $type = $presence->GetType() || "";
    my $status = $presence->GetStatus() || "";
    my $show = $presence->GetShow() || "";
    my $resource;
    ($from,$resource) = split('/',$from);
    $modules->got_msg( type     => $type,
                       body     => "",
                       from     => $from,
                       resource => $resource,
             tag      => 'presence',
             other    => {
            show   => $show,
            status => $status
            }
                       );
    print "===\n";
    print "Presence\n";
    print "  From $from\n";
    print "  Type: $type\n";
    print "  Status: $status ($show)\n";
    print "===\n";
}

Я ведь писал уже, я читал документацию по модулям на цпане, прежде чем изобретать костыли.
View user's profile Send private message
PostPosted: Sat Oct 20, 2007 12:48 am Reply with quote
om
Бывалый Жабовод
Бывалый Жабовод
Joined: 26 Sep 2006
Posts: 76
Location: Россия,Тольятти




Угу, щас Smile
View user's profile Send private message Send Jabber-message Visit poster's website HabaHaba - Fast communicate
PostPosted: Sat Oct 20, 2007 1:35 am Reply with quote
ipse
Начинающий тестер
Начинающий тестер
Joined: 11 Nov 2006
Posts: 29




Тогда и не надо кричать, типа "ужос", знаешь как лучше - сделай сам. Я предложил архарусу рабочий вариант, а не теорию.
View user's profile Send private message
PostPosted: Sat Oct 20, 2007 9:42 am Reply with quote
Binary
Разработчик
Разработчик
Joined: 17 Dec 2004
Posts: 1712
Location: Омск




ipse wrote:
Тогда и не надо кричать, типа "ужос", знаешь как лучше - сделай сам. Я предложил архарусу рабочий вариант, а не теорию.

нинада называть рабочим вариантом то, что свалится при перестановке местами аттрибутов тега.

_________________
And I'm feeling good!
View user's profile Send private message Send Jabber-message Visit poster's website HabaHaba - Fast communicate
PostPosted: Sat Oct 20, 2007 2:48 pm Reply with quote
ipse
Начинающий тестер
Начинающий тестер
Joined: 11 Nov 2006
Posts: 29




уже исправил
Code:
print $presence->GetXML(),"\n";
   
    my $perezens = $presence->GetXML();
    my $x = $presence->GetX('http://jabber.org/protocol/muc#user');
    my $item;
    my $affil_;
    if ($x) {
    $item = $x->GetItem();
    $jid = $item->GetJID();
    $affil_ = $item->GetAffiliation();
    }
    my @pere_arr = split(/\'/, $perezens);
    $from_ = $pere_arr[1];
    my $stroka;
    my $kluch;
    my $konfa_na_udalenie;
    my $znachenie;
    my $saveto;
      if ($type eq "unavailable") {
        if ($from_ =~ /(.*)\/$nickname/) {
          $konfa_na_udalenie = $1;
          while ( ($kluch,$znachenie) = each(%spisokjidov) ) {
            if ($kluch =~ /($konfa_na_udalenie\/.*)/) {
               delete $spisokjidov{$1};
               delete $spisokkonf{$from};
            }
          }
        }
        delete $spisokjidov{$from_};
        $jid = '';
        @pere_arr = '';
      }

    if ($from_ =~ /conference/ && $jid !~ /3320/ && $jid ne '') {
    $spisokjidov{$from_} = "$jid/$affil_";
    $saveto .= "$jid\n";
    $spisokkonf{$from} = $saveto;
    }
    $jid = '';
View user's profile Send private message
PostPosted: Sat Oct 20, 2007 3:05 pm Reply with quote
om
Бывалый Жабовод
Бывалый Жабовод
Joined: 26 Sep 2006
Posts: 76
Location: Россия,Тольятти




Не пойму: зачем ты используешь Net::Jabber? Таким макаром надо было полностью самому реализовывать XMPP Smile
View user's profile Send private message Send Jabber-message Visit poster's website HabaHaba - Fast communicate
PostPosted: Sat Oct 20, 2007 3:51 pm Reply with quote
Binary
Разработчик
Разработчик
Joined: 17 Dec 2004
Posts: 1712
Location: Омск




om wrote:
Не пойму: зачем ты используешь Net::Jabber? Таким макаром надо было полностью самому реализовывать XMPP Smile

авторизация! и шифрование Smile вот самый геморрой Smile ну а вообще, вроде больше напрямую хмл не трогает, так что нормально Smile

но... я, блин, теперь понимаю, зачем в py3k собираются разрешать юникодовые идентификаторы... лучше уж они, чем транслит... интернационализации хоть так, хоть так никакой, но хоть смотреться будет по-человечески...

_________________
And I'm feeling good!
View user's profile Send private message Send Jabber-message Visit poster's website HabaHaba - Fast communicate
PostPosted: Sat Oct 20, 2007 5:13 pm Reply with quote
ipse
Начинающий тестер
Начинающий тестер
Joined: 11 Nov 2006
Posts: 29




om wrote:
Не пойму: зачем ты используешь Net::Jabber? Таким макаром надо было полностью самому реализовывать XMPP Smile

кстати Net::Jabber::Stanza я немного поправил, мне не понравилось как он определяет версию ОС Smile Не все в этих модулях так как хотелось бы, например модуль XML::Parser валится с руганью когда нарывается на символ © в xml файле Smile
View user's profile Send private message
PostPosted: Sat Oct 20, 2007 5:44 pm Reply with quote
om
Бывалый Жабовод
Бывалый Жабовод
Joined: 26 Sep 2006
Posts: 76
Location: Россия,Тольятти




Ничего не имею против исправления модулей для достижения необходимых целей, но вот использование модуля + собственных костылей (притом что в модуле всё необходимое есть) это не есть тру...
View user's profile Send private message Send Jabber-message Visit poster's website HabaHaba - Fast communicate
PostPosted: Sun Oct 21, 2007 6:43 pm Reply with quote
apxah
Отметившийся
Отметившийся
Joined: 05 Sep 2007
Posts: 19
Location: 48@conference.jabber.ru




Nart

_________________
Уважай чужое мнение,
Но, достойный мудреца,
Сам высказывай суждение
Лишь от первого лица
© Гамзатов
View user's profile Send private message Send Jabber-message ICQ Number
Бот на Perl
JRuDevels Forum Index » Разработка и проектирование [Devel]
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
All times are GMT + 3 Hours  
Page 4 of 5  
Goto page Previous  1, 2, 3, 4, 5  Next
  
  
 Post new topic  Reply to topic  


Powered by phpBB © 2001-2004 phpBB Group
phpBB Style by Vjacheslav Trushkin