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: Wed Oct 17, 2007 7:24 am Reply with quote
feez
Разработчик
Разработчик
Joined: 01 Jan 1970
Posts: 146




ipse wrote:
arhanrus
Code:
    my $perezens = $presence->GetXML();
...

У меня смутная догадка появилась ... что находится в переменной $presence? Неужели экземпляр объекта их пакета Net::XMPP http://search.cpan.org/~reatmon/Net-XMPP-1.0/lib/Net/XMPP.pm ?
View user's profile Send private message Send Jabber-message HabaHaba - Fast communicate
PostPosted: Wed Oct 17, 2007 7:27 am Reply with quote
om
Бывалый Жабовод
Бывалый Жабовод
Joined: 26 Sep 2006
Posts: 76
Location: Россия,Тольятти




Как можно?! Там чистый text/xml Smile
View user's profile Send private message Send Jabber-message Visit poster's website HabaHaba - Fast communicate
PostPosted: Wed Oct 17, 2007 8:36 pm Reply with quote
ipse
Начинающий тестер
Начинающий тестер
Joined: 11 Nov 2006
Posts: 29




feez Бот работает на Net-Jabber-2.0
om Сделай лучше. Да, и это.. Где там парсинг XML в цитированном тобою коде? Smile
View user's profile Send private message
PostPosted: Wed Oct 17, 2007 8:39 pm Reply with quote
Binary
Разработчик
Разработчик
Joined: 17 Dec 2004
Posts: 1712
Location: Омск




om wrote:
ipse wrote:
Тут кстати не только JID'ы но и некоторая другая инфа Wink
Вот как я например сделал чтоб некоторые команды в викторине были доступны только админам и овнерам.
Code:
my $kluch = "$args{from}/$args{resource}";
@infaonike = split(/\//,$::spisokjidov{$kluch});

if ($infaonike[2] eq 'owner' || $infaonike[2] eq 'admin') {
        if ($words_vi[0] eq "сл") { $nomer_igry=1;}
   if ($words_vi[0] eq "ожидание") { $ctl_ozh=$words_vi[1];}
        if ($words_vi[0] eq "старт") { $ctl_igry=1;}
        if ($words_vi[0] eq "стоп") { $ctl_igry=0;}
       
}


Ужос! Mad
Нет слов, уважаемые... Если бы я реально думал что так разбирается XML, то я однозначно придерживался мнения что XML полное гавно Smile Какая-же это структура, если парсить приходится ручками в самой что ни на есть прикладной части...


я так понимаю, просто аттрибуты у тега местами поменять - и каюк?

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




Да где вы тут теги видите? Где XML?
В хеше %::spisokjidov находится что-то типа
2000@conference.jabber.ru/Танюха танюта.ru@jabber.ru/Bombus-Ultra/admin
pro7@conference.jabber.ru/Ояб sulci@ipse.zapto.org/ocaml/admin
итд..
Если в конфу pro7@conference.jabber.ru что-то написал Ояб то берется ключ pro7@conference.jabber.ru/Ояб где $args{from} pro7@conference.jabber.ru - конфа в которой была подана команда, $args{resource} - ник отправителя, далее по этому ключу из хеша выдирается sulci@ipse.zapto.org/ocaml/admin загоняется в массив (разделитель /), теперь по третьему элементу массива ($infaonike[2]) выясняем что мессагу послал админ
View user's profile Send private message
PostPosted: Wed Oct 17, 2007 9:00 pm Reply with quote
Binary
Разработчик
Разработчик
Joined: 17 Dec 2004
Posts: 1712
Location: Омск




ipse wrote:
Да где вы тут теги видите? Где XML?


Code:
if ($stroka eq "><item affiliation=") {$affil_ = $pere_arr[$cotl];}


я вот про такие вещи.

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




Ну это пока никто не поменял, работает пока безотказно. Я знаю что коряво, знаю что костыляво. А вы предложите как лучше сделать, а?
View user's profile Send private message
PostPosted: Wed Oct 17, 2007 9:13 pm Reply with quote
Binary
Разработчик
Разработчик
Joined: 17 Dec 2004
Posts: 1712
Location: Омск




ipse wrote:
Ну это пока никто не поменял, работает пока безотказно. Я знаю что коряво, знаю что костыляво. А вы предложите как лучше сделать, а?

это в корне неверно. я могу написать MUC компонент, на котором такой бот не будет работать.

я посоветую не изобретать велосипеды, а использовать XML-парсеры, для чего-то же их придумали? Smile

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




Да конечно, очень хотелось бы. А еще лучше средствами Net::Jabber вести разбор. Да вот не выходит никак..
View user's profile Send private message
PostPosted: Thu Oct 18, 2007 9:12 am Reply with quote
om
Бывалый Жабовод
Бывалый Жабовод
Joined: 26 Sep 2006
Posts: 76
Location: Россия,Тольятти




ipse wrote:
feez Бот работает на Net-Jabber-2.0
om Сделай лучше. Да, и это.. Где там парсинг XML в цитированном тобою коде? Smile


Просто не то процитировал. Имелось ввиду твой предыдущий пост, а там ужос в чистом виде... могу написать лучше, вон спроси у архивариуса - я ему уже сделал...
View user's profile Send private message Send Jabber-message Visit poster's website HabaHaba - Fast communicate
PostPosted: Thu Oct 18, 2007 9:54 am Reply with quote
ipse
Начинающий тестер
Начинающий тестер
Joined: 11 Nov 2006
Posts: 29




Так зачем спрашивать, выкладывай сюда.
View user's profile Send private message
PostPosted: Thu Oct 18, 2007 11:37 am Reply with quote
om
Бывалый Жабовод
Бывалый Жабовод
Joined: 26 Sep 2006
Posts: 76
Location: Россия,Тольятти




ipse wrote:
Так зачем спрашивать, выкладывай сюда.


Ну вот, например, процедурка обработчика презенса:

Code:
sub InPresence
{
    my $sid = shift;
    my $presence = shift;

    my $from = $presence->GetFrom('jid');
    my $type = $presence->GetType();
    my $status;
    print "===\n";
    print "Presence\n";
    print "  From $from\n";
    print "  Type: $type\n";
    print "  Status: $status\n";
    print "===\n";
    print $presence->GetXML(),"\n";
    print "===\n";
    my $x = $presence->GetX('http://jabber.org/protocol/muc#user');
    my $item = $x->GetItem();
    my $jid = $item->GetJID();
    print "=\n";
    print $jid, "\n";
}
View user's profile Send private message Send Jabber-message Visit poster's website HabaHaba - Fast communicate
PostPosted: Thu Oct 18, 2007 11:46 am Reply with quote
om
Бывалый Жабовод
Бывалый Жабовод
Joined: 26 Sep 2006
Posts: 76
Location: Россия,Тольятти




Кстати говоря, Net::Jabber это модуль расширяющий возможности Net::XMPP, а Net::XMPP юзает XML::Stream это так, в качестве ликбеза.
View user's profile Send private message Send Jabber-message Visit poster's website HabaHaba - Fast communicate
PostPosted: Thu Oct 18, 2007 8:19 pm Reply with quote
ipse
Начинающий тестер
Начинающий тестер
Joined: 11 Nov 2006
Posts: 29




om wrote:
Кстати говоря, Net::Jabber это модуль расширяющий возможности Net::XMPP, а Net::XMPP юзает XML::Stream это так, в качестве ликбеза.

Я в курсе. За код спасибо, будем окультуривать Smile
View user's profile Send private message
PostPosted: Thu Oct 18, 2007 10:32 pm Reply with quote
ipse
Начинающий тестер
Начинающий тестер
Joined: 11 Nov 2006
Posts: 29




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

Кстати почитал цпан, про Net::Jabber, там тоже ни слова про такую функцию..
View user's profile Send private message
Бот на 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 3 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