Нужна помощь с php icq ботом....

Discussion in 'PHP' started by Stern, 5 Mar 2008.

  1. Stern

    Stern Elder - Старейшина

    Joined:
    13 Mar 2007
    Messages:
    75
    Likes Received:
    5
    Reputations:
    0
    Помогите чайнику плиииз:) Ток изучаю пхп самые основы...так что сильно не бейте...

    Собственно вопрос в след...есть страничка на которой есть поле для ввода... вида...
    PHP:
    <input type="text" name="uin"><br><input type="submit" value="Проверить">
    В нее вводится UIN затем жмем кнопоку...и выдается результат в виде UIN:STATUS

    Требуется что-бы бот icq на команду(пример) !уин 123456 посылал запрос...и в ответ присылал UIN:STATUS
    Как реализовать вывод того что есть я примерно знаю....
    PHP:
    $uin file_get_contents('http://www.google.ru/search?hl=ru&q=');
    if(
    preg_match("#<b>(.*)</b>#"$calc$find))
     {  
    $send .= $find[0];
    }  
    Тут он будет выдирать все что между тегом <b>...</b>

    Так вот собственно вопрос...как сделать чтобы он еще пихал в поле запроса текст....и жал кнопку :-D



    ps. Вот пример команды из бота....
    PHP:
    // !считай  
                        
    else if (preg_match("#^!считай#"$msg_text)) 
                         
    {                           
    preg_match("#\s+(.+)#"$msg_text$msg);      
                         
    if(!empty(
    $msg[0]))                       
        {                            
        
    $msg[1] = str_replace("+","%2B",$msg[1]);      
                              
    $msg[1] = 
    str_replace("'","",$msg[1]);                  
                  
    $msg[1] = 
    str_replace("\"","",$msg[1]);                  
                  
    $calc file_get_contents('http://
    www.google.ru/search?hl=ru&q='
    .$msg[1]);          
                          
    if(
    preg_match("#<b>(.*)</b></h2>#"$calc$find))  
                                  {  
                                  
        
    $send .= $find[0];                  
                }                  
                  else                  
                  {                  
                      
    $send 'Пусто О_О';;  
                                }  
                             }      
                         else          
                     {              
                     
    $send 'Косяк ^_^';      
                         }          
                }  
    Эт калькулятор на боте такой.))) использует сервис гугля.)))


    pss. думаю Isus догадается че за бот-то :) Спасибо тебе огромное за него... :) и еще..вопрос...на какой классе он построен?!
     
    #1 Stern, 5 Mar 2008
    Last edited: 5 Mar 2008
  2. gibson

    gibson Elder - Старейшина

    Joined:
    24 Feb 2006
    Messages:
    391
    Likes Received:
    247
    Reputations:
    88
    тебе нужно сюда http://kanicq.ru/invisible/ и с него парсить

    PHP:

        
    if (!$fp fsockopen("kanicq.ru"80$errno$errstr30))  {$uin 'Connection problem';}
        else {
            
    $post "uin=".$uin;
            
    $out "POST /invisible/?method=2 HTTP/1.0\r\n".
            
    "Accept: */*\r\n".
            
    "User-Agent: Miranda IM Invisible-Check Plugin Bot 0.2\r\n".
            
    "Host: kanicq.ru\r\n".
            
    "Content-Type: application/x-www-form-urlencoded\r\n".
            
    "Content-Length: ".strlen($post)."\r\n".
            
    "Cache-Control: no-cache\r\n".
            
    "Connection: Close\r\n\r\n".
            
    $post;

            
    fwrite($fp$out);
            while (!
    feof($fp)) $temp .= fgets($fp4096);
            
    fclose($fp);

           
    $temp implode(" "explode(chr(13).chr(10), $temp));
        
    $temp substr($tempstrpos($temp"<div id=\"info\">"));
        
    $temp substr($temp0strpos($temp"</b>"));
        
    $temp trim(substr($tempstrrpos($temp">")+1));
        
    $uin $temp;
        
    $uin '<b><font color=#FFFFFF size=1>Uin&nbsp;'.$aFormValues['inv'].'</b>&nbsp;is&nbsp;<img src="img/'.$uin.'.gif" width="" height="" alt="Uin" border=0>&nbsp;'.$uin.'<br></font>';

    это только для ознакомления, на форуме есть еще с использование прокс, в полезных скриптах посмотри. Изменишь имена переменных на свои и юзай.


    зы Isus еще одну букву изменить и будет комп. фирма)
     
  3. Stern

    Stern Elder - Старейшина

    Joined:
    13 Mar 2007
    Messages:
    75
    Likes Received:
    5
    Reputations:
    0
    У меня есть скриптик как раз....я его чу чуть переделал...и вот чё вышло....

    HTML:
    <html>
    <head>
    <title>CHECKER</title>
    <meta http-equiv="Content-Type" content="text/html; charset=cp2151">
    <body bgcolor="#000000" text="#ffffff">
    <center><table border="0"><tr><td><center><font color="green"><b>| Введите UIN |</b></font></center></td></tr>
    <tr><td><form action="<? $PHP_SELF ?>" method="post">
    <font color=\"green\"><b>UIN:</b></font> <input  type="text" name="uin"></td></tr><tr><td><center><input type="submit" value="Проверить"></center></td></tr></table>
    
    
    <?php 
    $new=$_POST['uin']; // номер  
      
    $cr=curl_init("http://webwarper.net/ww/~av/kanicq.ru/invisible/?method=2"); 
      curl_setopt($cr, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"); 
      curl_setopt($cr, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); 
      curl_setopt($cr, CURLOPT_TIMEOUT, 20); 
      curl_setopt($cr, CURLOPT_HEADER, 1); 
      curl_setopt($cr, CURLOPT_POSTFIELDS, "human=1&uin=$new&youwereadded=on&uin4login=&password4login="); 
      curl_setopt($cr, CURLOPT_RETURNTRANSFER, 1); 
      curl_setopt($cr, CURLOPT_REFERER, "http://icq-online.ru"); 
      $r = curl_exec($cr); 
      curl_close($cr);  
    $s = "echo '$r'"; 
    
    if ( preg_match ("/Free for chat/i" , "$s")) { $status = "Готов к общению"; }  
    elseif ( preg_match ("/Online/i"  ,"$s")) { $status = "Онлайн"; }  
    elseif ( preg_match ("/Away/i" , "$s")) { $status = "Отошел"; }  
    elseif ( preg_match ("/N\/A/i" , "$s")) { $status = "Недоступен"; }  
    elseif ( preg_match ("/Occupied/i" , "$s")) { $status = "Занят"; }  
    elseif ( preg_match ("/DND/i" , "$s")) { $status = "Не беспокоить"; } 
    elseif ( preg_match ("/offline/i" , "$s")) { $status = "Оффлайн"; } 
    elseif ( preg_match ("/status\/invisible/i" , "$s")) { $status = "Невидимый"; }  
    else { $status = "Неизвестно"; } 
    
    echo "<font color=\"green\"><b>UIN:</b></font><font color=\"red\"> $new</font>&nbsp;&nbsp;<font color=\"green\"><b>Статус:</b></font><font color=\"red\"> $status</font>"; 
    
    ?>
    </td></tr></table></center>
    </body>
    </head>
    </html>
    
    Получается мой искрипт для бота будет выглядеть как...

    PHP:
    // !инвиз  
                        
    else if (preg_match("#^!инвиз#"$msg_text))  
                        {
                           
    preg_match("#\s+(.+)#"$msg_text$uin);
                         if(!empty(
    $msg[0]))
                            {

    ////////////тут код О_О ?!//////////////////////



                    
    {
                       
    $send .= $uin;
                     }
                  }
    блин....если честно то чета я в этом боте нииифига не фкуриваю О_О
     
  4. Stern

    Stern Elder - Старейшина

    Joined:
    13 Mar 2007
    Messages:
    75
    Likes Received:
    5
    Reputations:
    0
    Люююди ниид хелп....плисс...
     
  5. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Если ответишь мне на вопрос: "Зачем юзать бота, если можно проверять на сайте, не заходя в Icq? Какие приемущества у бота?", то помогу (может чуть позже).

    P.S. Ответ типа "просто хочу" или "друг попросил" не принимаются.

    :)
     
  6. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    NOmeR1, для чего вообще эта функция нужна даже на сайте - хз..
    А так вдруг на мобе пишешь с аськи...там че-нить лала.. ну вообщем =\
     
    1 person likes this.
  7. Stern

    Stern Elder - Старейшина

    Joined:
    13 Mar 2007
    Messages:
    75
    Likes Received:
    5
    Reputations:
    0
    Isis прав..."А так вдруг на мобе пишешь с аськи..." гараздо удобней....чем выходить из аси....лезть в оперу-мини...там смотреть потом обратно...да и трафик экономится.. :)
     
    #7 Stern, 8 Mar 2008
    Last edited: 8 Mar 2008
  8. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Пиши его ник нормально)
    PHP:
    else if(preg_match('~^!invis~'$msg_text)) {
        
    preg_match('~\s+([0-9-]+)~'$msg_text$icq);
        foreach(
    $icq as $i => $xek) {
            
    $xek str_replace('-'NULL$xek);
            if(
    $i != 0) {
                
    $fp fsockopen("kanicq.ru"80$errno$errstr30);
                
    $query 'human=1&uin='.$xek.'&uin4login=&password4login=';
                
    $out  "POST /invisible/?method=2 HTTP/1.1\r\n";
                
    $out .= "Host: kanicq.ru\r\n";
                
    $out .= "Referer: http://kanicq.ru/invisible/?method=2\r\n";
                
    $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
                
    $out .= "Content-length: ".strlen($query)."\r\n\r\n";
                
    $out .= $query;
                
    fwrite($fp$out);
                
    $result '';
                while (!
    feof($fp)) {
                    
    $result .= fgets($fp128);
                }
                
    preg_match('~"> ([^<]+)</~'$result$status);
                
    $send .= $xek.';'.$status[1]."\n";
            } else {
                continue;
            }
        }
     }
    Попробуй так.

    Можно писать номера через пробел.
    For example: !invis 22222208 55555

    P.S. Надо было честно ответить: хочу выглядеть крутым перед кем-нибудь.
     
    #8 NOmeR1, 8 Mar 2008
    Last edited: 8 Mar 2008
    1 person likes this.
  9. Stern

    Stern Elder - Старейшина

    Joined:
    13 Mar 2007
    Messages:
    75
    Likes Received:
    5
    Reputations:
    0
    Спасибо огромное!!!!

    зы. Про ответ...честно, хотел понять как это делать что бы потом еще на этом примере сделать пару функций...и бот этот только для личного использования.....)
     
  10. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    На канике бан ип через несколько запросов на несколько часов
     
  11. Stern

    Stern Elder - Старейшина

    Joined:
    13 Mar 2007
    Messages:
    75
    Likes Received:
    5
    Reputations:
    0
    Гм...теперь вопрос к ISIS.....почему на команду...мне приходит ответ такого вида...

    Не чё не понимаю.... =\
     
  12. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    До foreach(...), впиши $send = "";

    P.S. Надеюсь ты мой скрипт добавил до вызова else (без последущего IF)?
     
    #12 NOmeR1, 8 Mar 2008
    Last edited: 8 Mar 2008
  13. Stern

    Stern Elder - Старейшина

    Joined:
    13 Mar 2007
    Messages:
    75
    Likes Received:
    5
    Reputations:
    0
    А...все разобрал...всем еще раз спасибо :)
     
  14. Stern

    Stern Elder - Старейшина

    Joined:
    13 Mar 2007
    Messages:
    75
    Likes Received:
    5
    Reputations:
    0
    Ну воть...чу чуть доработал скриптик и получилось что то типа....

    И добавил что бы проверка шла не на прямую...а через анонимайзер ;D
     
  15. Frize

    Frize New Member

    Joined:
    8 Nov 2008
    Messages:
    44
    Likes Received:
    1
    Reputations:
    0
    народ скрипт еще рабочий???
     
  16. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    да...
     
  17. Frize

    Frize New Member

    Joined:
    8 Nov 2008
    Messages:
    44
    Likes Received:
    1
    Reputations:
    0
    а вроде уже не пашет))) на kanicq.ru все поменяли