<?php
#----------------------------------#
#**********[WHT] ICQBot************#
# Made by : Sklep #
# E-mail : [email protected] #
# Site : http://Wap-Hack.Ru #
# ICQ : 712788 #
#----------------------------------#
include_once 'config.php';
include_once 'functions.php';
include_once 'class/WebIcqPro.class.php';
set_time_limit(0);
// проверяем чтобы запрос не шел через браузер напрямую
if(!$_GET['uin'] || !getenv('REMOTE_ADDR')==getenv('SERVER_ADDR'))
exit("Access Denied\r\n<br>\r\nICQBot By Sklep");
// открываем класс
$icq = new WebIcqPro();
// подгружаем настройки бота
$res = mysql_query("select * from bots WHERE uin=$_GET[uin]");
$bots = mysql_fetch_array($res);
// загружаем все плагины из папки
foreach (glob(dirname(__FILE__).DIRECTORY_SEPARATOR.'plugins'.DIRECTORY_SEPARATOR."*.php") as $v)
include_once($v);
// устанавливаем соединение
if($icq->connect($bots['uin'], $bots['password']) && mysql_num_rows($res))
{
// запоминаем время запуска бота
$uptime = time();
// устанавливаем статус бота
$icq->setStatus($bots['status']);
// устанавливаем x статус
$icq->setXStatus($bots['xstatus']);
$status = $bots['xstatus'];
}
else
exit("No connect!\r\n<br>\r\nICQBot By Sklep");
// пускаем цикл пока есть соединение с сервером
while($icq->isConnected())
{
// проверяем есть ли новые сообщения
$msg = $icq->readMessage();
// распознаем команду
$msg['message'] = trim($msg['message']);
list($cmd,$val) = explode(" ", $msg['message'], 2);
$params = explode(" ",$val);
// проверяем есть ли юзер в контакт листе
if(mysql_num_rows(mysql_query("SELECT * FROM `users` WHERE `uin` = '".$msg['from']."'")))
$add_me = false;
else
$add_me = true;
// юзер добавлен в контакт лист
if(trim($cmd)=='!addme' && $add_me==true)
{
// спим
sleep(1);
$err = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='addme_ok'"));
@mysql_query("INSERT INTO `users` VALUES (NULL, ".$msg['from'].", 0, ".time().")");
$icq->sendMessage($msg['from'],$err['title']);
}
// просим юзера добавить себя в контакт лист бота
elseif($add_me==true)
{
// спим
sleep(1);
$err = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='addme'"));
$icq->sendMessage($msg['from'],$err['title']);
}
// юзер павторно хочет добавится в контакт лист
if(trim($cmd)=='!addme' && $add_me==false)
{
// спим
sleep(1);
$err = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='addme_false'"));
$icq->sendMessage($msg['from'],$err['title']);
}
// если юзер находится в контакт листе и если он отправил команду, то идем дальше
if ($msg['from'] && $msg['message'] && !$cmd=='' && $add_me==false)
{
// проверяем админство
$admin = false;
$mysql_admins = mysql_fetch_array(mysql_query("SELECT * FROM `admin` WHERE `uin`='".$msg['from']."'"));
if(in_array($msg['from'], $mysql_admins))
$admin = true;
$sql_cmd = str_replace('!','',trim($cmd));
// проверяем есть ли такая комманда
$mysql_commands = mysql_fetch_array(mysql_query("SELECT * FROM `commands` WHERE `commands`='".$sql_cmd."'"));
// проверяем есть ли такая комманда в масиве
if(in_array($sql_cmd, $mysql_commands))
{
$users = mysql_fetch_array(mysql_query("select * from users WHERE uin=$msg[from]"));
// записываем в лог запрос
mysql_query("INSERT INTO `logs` VALUES (NULL, ".$msg['from'].", '".$msg['message']."', ".time().")");
// добавляем +1 к отправленым сообщения юзеру
mysql_query("UPDATE `users` SET `send`=". ($users['send']+1) ." WHERE `uin`=".$msg['from']."");
$cmd_sql = str_replace('!','',trim($cmd));
$help_cmd = mysql_fetch_array(mysql_query("SELECT * FROM `help` WHERE `cmd`='".$cmd_sql."'"));
//выполняем различные комманды
switch (strtolower(trim($cmd)))
{
case '!status':
// спим
sleep(1);
if($admin == true)
{
if($icq->setStatus($val))
{
// если получилось сменить статус, то прописываем новый в базу
mysql_query("UPDATE `bots` SET `status`='".$val."' WHERE `uin`='".$bots['uin']."'");
$help_c = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='ok_status'"));
$icq->sendMessage($msg['from'], $help_c['title']);
}
else
{
$help_c = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='err_status'"));
$icq->sendMessage($msg['from'], $help_c['title']);
}
}
else
{
$help_c = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='noadmin'"));
$icq->sendMessage($msg['from'], $help_c['title']);
}
break;
case '!xstatus':
// спим
sleep(1);
if($admin == true)
{
if($icq->setXStatus($val))
{
mysql_query("UPDATE `bots` SET `xstatus`='".$val."' WHERE `uin`='".$bots['uin']."'");
$help_c = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='ok_xstatus'"));
$icq->sendMessage($msg['from'], $help_c['title']);
}
else
{
$help_c = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='err_xstatus'"));
$icq->sendMessage($msg['from'], $help_c['title']);
}
}
else
{
$help_c = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='noadmin'"));
$icq->sendMessage($msg['from'], $help_c['title']);
}
break;
case '!stop':
if($admin == true)
{
$help_c = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='wait'"));
$icq->sendMessage($msg['from'], $help_c['title']);
//спим, чтоб не нагружать сервер
sleep(2);
$help_c = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='stop'"));
$icq->sendMessage($msg['from'], $help_c['title']);
//спим, чтоб не нагружать сервер
sleep(3);
$icq->disconnect();
exit();
}
else
{
$help_c = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='noadmin'"));
$icq->sendMessage($msg['from'], $help_c['title']);
}
break;
case '!restart':
if($admin == true)
{
// отправляем сообщение об ожидании
$help_c = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='wait'"));
$icq->sendMessage($msg['from'], $help_c['title']);
//спим, чтоб не нагружать сервер
sleep(2);
// отправляем сообщение о том что бот будет остановлен
$help_c = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='restart'"));
$icq->sendMessage($msg['from'], $help_c['title']);
//спим, чтоб не нагружать сервер
sleep(3);
// останавливаем бота
$icq->disconnect();
// запускаем заново
$fp = fsockopen($url['home'], 80, $errno, $errstr, 5);
$out = "GET ".$url['dir']."system/icq.php?uin=".$bots['uin']." HTTP/1.1\r\n";
$out .= "Host: ".$url['home']."\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
exit();
}
else
{
$help_c = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='noadmin'"));
$icq->sendMessage($msg['from'], $help_c['title']);
}
break;
case '!help':
// спим
sleep(1);
// отправляем по запросу все доступные комманды
$icq->sendMessage($msg['from'], $help_cmd['title']);
break;
case '!uptime':
// спим
sleep(1);
// отправляем по запросу сколько бот находится в онлайне
$icq->sendMessage($msg['from'], uptimes($uptime));
break;
case '!about':
// спим
sleep(1);
// отправляем по запросу информацию о создателе бота
$icq->sendMessage($msg['from'], $help_cmd['title']);
break;
case '!bugs':
// спим
sleep(1);
if($val!='')
{
mysql_query("INSERT INTO `bugs` VALUES (NULL, '".$msg['from']."', '".$val."')");
$icq->sendMessage($msg['from'], $help_cmd['title']);
}
else
{
$help_c = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='bug_err'"));
$icq->sendMessage($msg['from'], $help_c['title']);
}
break;
case $cmd:
//вызываем дополнительные функции из папки plugins
$cmd($val);
break;
}
}
// если команда не найдена отправляем соответствующее сообщение
else
{
// спим
sleep(1);
$err = mysql_fetch_array(mysql_query("SELECT * FROM `rase` WHERE `description`='nocommands'"));
$icq->sendMessage($msg['from'], $err['title']);
}
}
//спим, чтоб не нагружать сервер
sleep(1);
}
?>