Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Определение статуса ICQ


Автор: Xelius 13.9.2005, 10:01
Интересует определение ICQ-статуса конкретных УИНов. По модулям NET::ICQ и NET::ICQ2000 нет ничего интересного. Там можно отправить сообщение, но как определить статус?? В инете ничего нарыть не смог, perldoc вообще коротОк.

Автор: sharq 13.9.2005, 14:36
Xelius я точно не знаю.

1. Смотри метод connected:
Цитата
Returns true if the Net::ICQ object is connected to the server, and false if it is not.

Хоть что-то. smile

2. Из модуля Net::ICQ:
Код

%_Status_Codes = (
    'Online'         => 0x00020000,
    'Free_For_Chat'  => 0x00020020,
    'Away'           => 0x00020001,
    'Not_Avalible'   => 0x00020005,
    'Occupied'       => 0x00020011,
    'Do_Not_Disturb' => 0x00020013,
    'Invisible'      => 0x00120100
);

%_r_Status_Codes = (
      '0000'  => 'Online',
      '0020'  => 'Free for Chat',
      '0001'  => 'Away',
      '0004'  => 'N/A',
      '0005'  => 'N/A',
      '0010'  => 'Occupied',
      '0011'  => 'Occupied',
      '0013'  => 'Do Not Disturb',
      '0100'  => 'Invisible'
);


Код

    #Cmd_GSC_Set_Status
    '1:30' => sub {
        my($Me, $event) = @_;
        my($Responce, $Responce2);

        @{$Responce->{Data_Load}} = &_Make_SNAC_Header(1, 30, 0, 0, 30);

        push(@{$Responce->{Data_Load}}, _Write_TLV(2, 'Status', $_Status_Codes{$event->{Status}}));

        push(@{$Me->{_Outgoing_Queue}}, $Responce);

        #send the "Made Change/update command" (really I don't know whta this is for..)
        @{$Responce2->{Data_Load}} = &_Make_SNAC_Header(1, 17, 0, 0, 17);
        push(@{$Responce2->{Data_Load}}, _int_to_bytes(4, 0));

        push(@{$Me->{_Outgoing_Queue}}, $Responce2);
    },



3. Зайди на официальный сайт модуля и задай вопрос на форуме или напиши письмо разработчику. Не бойся, ответят. smile

smile

Автор: Xelius 13.9.2005, 15:21
sharq, большое thank you, записал, обязательно пригодится. Проблема решилась гораздо проще, чем казалось. smile smile
Если интересно, можно воспользоваться такой штукой.
Если запросить URL типа http://web.icq.com/whitepages/online?icq=245568090&img=2, где icq=YOUR_WANTED_UIN, то из ответа сервера и можно выудить статус. И можно пользовать для любых УИНов.
Спасиюо, тема закрыта.

Автор: Sadok 14.9.2005, 10:00
Xelius
Цитата
И можно пользовать для любых УИНов

При условии, что владелец UIN разрешил определение своего статуса через веб.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)