Icq bot на php

Тема в разделе "PHP", создана пользователем IEviLBoYI, 6 май 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. IEviLBoYI

    IEviLBoYI Создатель

    Регистр.:
    23 ноя 2007
    Сообщения:
    15
    Симпатии:
    0
    Пользуюсь следующим ботом
    PHP:
    <?php 
    error_reporting 
    (E_ALL); 
    set_time_limit(0); 
    ini_set ('max_execution_time'"0"); 
    require_once(
    'WebIcqLite.class.php'); 
    define('UIN''666666'); 
    define('PASSWORD''666666'); 

    //начало курс валют 



    $content get_content(); 
    $pattern "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i"
    preg_match_all($pattern$content$outPREG_SET_ORDER); 
    $dollar ""
    $euro ""
    foreach(
    $out as $cur

    if(
    $cur[2] == 840$dollar str_replace(",",".",$cur[4]); 
    if(
    $cur[2] == 978$euro str_replace(",",".",$cur[4]); 


    function 
    get_content() 

    // Формируем сегодняшнюю дату 
    $date date("d/m/Y"); 
    // Формируем ссылку 
    $link "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"
    // Загружаем HTML-страницу 
    $fd fopen($link"r"); 
    $text=""
    if (!
    $fd) echo "Запрашиваемая страница не найдена"
    else 

    // Чтение содержимого файла в переменную $text 
    while (!feof ($fd)) $text .= fgets($fd4096); 

    // Закрыть открытый файловый дескриптор 
    fclose ($fd); 
    return 
    $text


    // конец курс валют 

    $icq = new WebIcqLite(); 
    if(!
    $icq->connect(UINPASSWORD)) 

    echo 
    $icq->error
    exit(); 


    while(
    $icq->is_connected()){ 
    $msg $icq->read_message(); 
    switch (
    strtolower($msg['message'])) { 
    case
    'курс'
    $icq->send_message($msg['from'], 'Центральный банк Российской Федерации ([url]http://www.cbr.ru/[/url]) 
    Доллар - '
    .$dollar.
    Евро - '
    .$euro); 
    break; 

    case
    'помощь'
    $icq->send_message($msg['from'], 'Доступные команды: 
    курс - выводит курс валют #Доллар и Евро# 
    info - информаци о БОТе 
    '
    ); 
    break; 

    case
    'info'
    $icq->send_message($msg['from'], ' исходник БОТа с функцией вывода вылют'); 
    break; 

    case
    'quit'//сообщение для бота 
    $icq->disconnect(); //действие бота (выход) 
    exit; 
    break; 

    default: 
    //если сообщение не содержит команду 
    $icq->send_message($msg['from'], 'Введена неверная команда для отображения списка команд введите: помощь'); //ответ бота 

    flush(); 
    sleep(1); 

    ?>
    Бот работает на классе WebIcqLite.class
    Очень хочется переделать бота под свои нужды...
    Ну например что-бы бот вместо курса выдавал погоду со страницы mail.ru, ну или более сложные запросы...
    Я учусь в МФПА, оооочень хочется сделать удобный сервис расписания, и что-бы по команде в которой указана группа и дата в ответ приходило сообщение с парами. вот ссылка на страницу с расписанием
    Проблема в том, что опыта в программировании на php я не имею, но имеется множество идей для реализации.
     
  2. myweb

    myweb Среда обитания WEB

    Регистр.:
    10 сен 2007
    Сообщения:
    539
    Симпатии:
    246
    Так что Вам мешает приобретать опыт, за вас писать никто не будет, а подсказать это можно, такщо пишите где у вас возникает не ясность в скрипте.
     
  3. SkracheR

    SkracheR Создатель

    Регистр.:
    15 апр 2006
    Сообщения:
    18
    Симпатии:
    3
    Есть у меня такой бот, напиши в PM. делал тоже под расписание занятий))
     
  4. vovaNux

    vovaNux Постоялец

    Регистр.:
    10 апр 2007
    Сообщения:
    125
    Симпатии:
    16
    Так выложи, неужели там такой код сложный и копирайченный? :)

    Как универсальное решение - распарсить регуляркой страницу с нужным тебе контентом и слать её в аську
     
  5. IEviLBoYI

    IEviLBoYI Создатель

    Регистр.:
    23 ноя 2007
    Сообщения:
    15
    Симпатии:
    0
    потихоньку начинаю врубать в тему.
    НО есть много непонятных вещей, например что-это за строчка из кода?
    $pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#
    Что это озаначает???? не понимаю в ней смысла.
     
  6. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    копай регулярные выражения ( regexp ) -- рядом по ним целый раздел
     
  7. Albert22

    Albert22

    Регистр.:
    30 мар 2008
    Сообщения:
    270
    Симпатии:
    10
    Это регулярное выражение формата РСRЕ, а точнее - шаблон. Функция preg_match возвращает строку с того места, которое соответствует этому шаблону, в данном случае, как я понял, с того момента когда начинается вывод валют и их курсов. Потом с ним выполняются строковые операции. Для грабберов (пример которого собственно представлен выше) - самое оно
     
  8. Tarasishe

    Tarasishe

    Регистр.:
    26 апр 2008
    Сообщения:
    190
    Симпатии:
    142
    Добавляем новый вариант выбора case ... где ikomanda будет то, на что наш бот будет реагировать, т.е. наше расписание...

    а в переменную $raspisanije суем наше расписание которое мы скажем выводим в зависимости от нашей даты ... как с курсом валют...

    PHP:
    case'ikomanda':  
    $icq->send_message($msg['from'], $raspisanije);  
    break; 
     
  9. Toxic_Cat

    Toxic_Cat Постоялец

    Регистр.:
    19 авг 2007
    Сообщения:
    128
    Симпатии:
    6
    Полезная темка, только парсинг не совсем понятен...
     
Статус темы:
Закрыта.