PDA

Просмотр полной версии : Нужна помощь с php icq ботом....


Stern
05.03.2008, 19:26
Помогите чайнику плиииз:) Ток изучаю пхп самые основы...так что сильно не бейте...

Собственно вопрос в след...есть страничка на которой есть поле для ввода... вида...

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

Требуется что-бы бот icq на команду(пример) !уин 123456 посылал запрос...и в ответ присылал UIN:STATUS
Как реализовать вывод того что есть я примерно знаю.... $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. Вот пример команды из бота....
// !считай
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 догадается че за бот-то :) Спасибо тебе огромное за него... :-) и еще..вопрос...на какой классе он построен?!

gibson
05.03.2008, 19:43
тебе нужно сюда http://kanicq.ru/invisible/ и с него парсить



if (!$fp = fsockopen("kanicq.ru", 80, $errno, $errstr, 30)) {$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($fp, 4096);
fclose($fp);

$temp = implode(" ", explode(chr(13).chr(10), $temp));
$temp = substr($temp, strpos($temp, "<div id=\"info\">"));
$temp = substr($temp, 0, strpos($temp, "</b>"));
$temp = trim(substr($temp, strrpos($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 еще одну букву изменить и будет комп. фирма)

Stern
05.03.2008, 20:27
У меня есть скриптик как раз....я его чу чуть переделал...и вот чё вышло....


<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>


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


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

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



{
$send .= $uin;
}
}


блин....если честно то чета я в этом боте нииифига не фкуриваю О_О

Stern
08.03.2008, 01:20
Люююди ниид хелп....плисс...

NOmeR1
08.03.2008, 01:26
Если ответишь мне на вопрос: "Зачем юзать бота, если можно проверять на сайте, не заходя в Icq? Какие приемущества у бота?", то помогу (может чуть позже).

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

:)

Isis
08.03.2008, 05:30
NOmeR1, для чего вообще эта функция нужна даже на сайте - хз..
А так вдруг на мобе пишешь с аськи...там че-нить лала.. ну вообщем =\

Stern
08.03.2008, 15:38
Isis прав..."А так вдруг на мобе пишешь с аськи..." гараздо удобней....чем выходить из аси....лезть в оперу-мини...там смотреть потом обратно...да и трафик экономится.. :)

NOmeR1
08.03.2008, 16:10
Пиши его ник нормально)
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, $errstr, 30);
$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($fp, 128);
}
preg_match('~"> ([^<]+)</~', $result, $status);
$send .= $xek.';'.$status[1]."\n";
} else {
continue;
}
}
}
Попробуй так.

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

P.S. Надо было честно ответить: хочу выглядеть крутым перед кем-нибудь.

Stern
08.03.2008, 16:43
Спасибо огромное!!!!

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

Isis
08.03.2008, 16:45
На канике бан ип через несколько запросов на несколько часов

Stern
08.03.2008, 18:17
Гм...теперь вопрос к ISIS.....почему на команду...мне приходит ответ такого вида...


Stern (17:12:24 8.03.2008)
!инвиз *********

~BoT~ (17:12:28 8.03.2008)
Комманда не найдена, наберите !help для вывода списка всех комманд!*********;Offline

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

NOmeR1
08.03.2008, 18:44
До foreach(...), впиши $send = "";

P.S. Надеюсь ты мой скрипт добавил до вызова else (без последущего IF)?

Stern
08.03.2008, 18:58
А...все разобрал...всем еще раз спасибо :-)

Stern
08.03.2008, 19:37
Ну воть...чу чуть доработал скриптик и получилось что то типа....


Stern (18:35:25 8.03.2008)
!инвиз *******

~BoT~ (18:35:34 8.03.2008)
Номер ******* сейчас НЕВИДИМЫЙ!


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

Frize
29.12.2008, 03:53
народ скрипт еще рабочий???

.::BARS::.
29.12.2008, 18:43
да...

Frize
12.01.2009, 19:17
а вроде уже не пашет))) на kanicq.ru все поменяли