Просмотр полной версии : Нужна помощь с php icq ботом....
Помогите чайнику плиииз:) Ток изучаю пхп самые основы...так что сильно не бейте...
Собственно вопрос в след...есть страничка на которой есть поле для ввода... вида...
<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 догадается че за бот-то :) Спасибо тебе огромное за него... :-) и еще..вопрос...на какой классе он построен?!
тебе нужно сюда 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 '.$aFormValues['inv'].'</b> is <img src="img/'.$uin.'.gif" width="" height="" alt="Uin" border=0> '.$uin.'<br></font>';
это только для ознакомления, на форуме есть еще с использование прокс, в полезных скриптах посмотри. Изменишь имена переменных на свои и юзай.
зы Isus еще одну букву изменить и будет комп. фирма)
У меня есть скриптик как раз....я его чу чуть переделал...и вот чё вышло....
<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> <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;
}
}
блин....если честно то чета я в этом боте нииифига не фкуриваю О_О
Люююди ниид хелп....плисс...
Если ответишь мне на вопрос: "Зачем юзать бота, если можно проверять на сайте, не заходя в Icq? Какие приемущества у бота?", то помогу (может чуть позже).
P.S. Ответ типа "просто хочу" или "друг попросил" не принимаются.
:)
NOmeR1, для чего вообще эта функция нужна даже на сайте - хз..
А так вдруг на мобе пишешь с аськи...там че-нить лала.. ну вообщем =\
Isis прав..."А так вдруг на мобе пишешь с аськи..." гараздо удобней....чем выходить из аси....лезть в оперу-мини...там смотреть потом обратно...да и трафик экономится.. :)
Пиши его ник нормально)
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. Надо было честно ответить: хочу выглядеть крутым перед кем-нибудь.
Спасибо огромное!!!!
зы. Про ответ...честно, хотел понять как это делать что бы потом еще на этом примере сделать пару функций...и бот этот только для личного использования.....)
На канике бан ип через несколько запросов на несколько часов
Гм...теперь вопрос к ISIS.....почему на команду...мне приходит ответ такого вида...
Stern (17:12:24 8.03.2008)
!инвиз *********
~BoT~ (17:12:28 8.03.2008)
Комманда не найдена, наберите !help для вывода списка всех комманд!*********;Offline
Не чё не понимаю.... =\
До foreach(...), впиши $send = "";
P.S. Надеюсь ты мой скрипт добавил до вызова else (без последущего IF)?
А...все разобрал...всем еще раз спасибо :-)
Ну воть...чу чуть доработал скриптик и получилось что то типа....
Stern (18:35:25 8.03.2008)
!инвиз *******
~BoT~ (18:35:34 8.03.2008)
Номер ******* сейчас НЕВИДИМЫЙ!
И добавил что бы проверка шла не на прямую...а через анонимайзер ;D
народ скрипт еще рабочий???
.::BARS::.
29.12.2008, 18:43
да...
а вроде уже не пашет))) на kanicq.ru все поменяли
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot